Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme : je ne sais pas comment faire

avec $_GET

Sujet résolu
    24 juin 2006 à 11:32:14

    donc voila je vous expose mon probleme :

    j'ai un code html (formulaire avec des checkbox)
    si je coche tout les checkbox et ke je j'envoie le formulaire par le bouton supprimer mon url devien comme ca : ..../index.php?action=Supprimer&3=on&4=on&5=on&6=on&8=on&1=on

    suite a ca cela m'envoie vers une page action.php qui devrai suprimer le message 3,4,5,6... qui ce trouve dans l'url le probleme je ne sais pas commen récupéré le numero qui a pour valeur "on"
    donc voila mon probleme !!
    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2006 à 11:34:44

      Et tu peux nous dire pourquoi tu travailles avec la méthode GET sur ton formulaire ?
      En plus, on peut voir les checkboxs ?
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2006 à 11:44:18

        GET ou POST c'est pareil c'était juste pour voir ce que me généré le formulaire (c'est pour suprimer les message sélectioné d'une boite email ce que je fait)

        en gros mon code ressemble a ca :
        <form method="get" action="index.php">
        <input class="toolbar_submit" name="action" type="submit" value="Supprimer" /></div>
        <input type=checkbox name=1>
        <input type=checkbox name=2>
        <input type=checkbox name=3>
        <input type=checkbox name=4>
        <input type=checkbox name=5>
        </form>
        • Partager sur Facebook
        • Partager sur Twitter
          24 juin 2006 à 11:47:10

          Bonjour,

          J'avais eu à faire face à ce problême et j'ai donc fait comme ça (les messages se trouve dans une table de ma BDD, je ne sais pas comment tu veux faire toi) :


          // Préparation chaîne de suppression.
          $chaine = ''; $i = 0;
          foreach($_GET as $id => $ok)
          {
            if (is_numeric($id))
            {
              $i++;
              if ($i == 1) $chaine .= 'id=\''.$id.'\'';
              else  $chaine .= ' OR id=\''.$id.'\'';
            }
          }

          // Suppression
          $requete = "DELETE FROM table WHERE ".$chaine."";
          mysql_query($requete) or die (mysql_error());


          Cele crée une chaîne de type "id='1' OR id='2'..." qui est inqéré dans la requête de suppression et ça marche plutôt bien chez moi :) .

          Oublie pas de vérifier que la personne peut effectivement supprimer ces messages en vérifiant que pour chaque message elle en est l'auteur (je pense que c'est ça que tu veux), à mettre avant la suppression bien entendu ;) .


          // Requête de vérification.
          $requete = "SELECT destinataire FROM table WHERE ".$chaine."";
          $resultat = mysql_query($requete) or die (mysql_error());
          while ($message = mysql_fetch_array($resultat))
          {
            if (strtolower($_SESSION['LOGINjoueur']) != strtolower($message['destinataire']))
            {
              echo '<div align="center">Vous n\'êtes pas autorisé à accéder à cette page.</div>'; exit;
            }
          }
           


          J'ai fait comme ça, mais peut être y a-t-il une autre solution.
          • Partager sur Facebook
          • Partager sur Twitter
            24 juin 2006 à 11:52:15

            Citation : el3ctr0n

            GET ou POST c'est pareil c'était juste pour voir ce que me généré le formulaire (c'est pour suprimer les message sélectioné d'une boite email ce que je fait)


            Non, GET ou POST c'est pas pareil ! ^^

            Citation : el3ctr0n


            en gros mon code ressemble a ca :

            <form method="get" action="index.php">
            <input class="toolbar_submit" name="action" type="submit" value="Supprimer" /></div>
            <input type=checkbox name=1>
            <input type=checkbox name=2>
            <input type=checkbox name=3>
            <input type=checkbox name=4>
            <input type=checkbox name=5>
            </form>


            Euh faudrait p'têt quand même apprendre les bases du HTML hein :p
            <form method="post" action="index.php">
            <input type="checkbox" name="truc[]" value="1">
            <input type="checkbox" name="truc[]" value="2">
            <input type="checkbox" name="truc[]" value="3">
            etc....
            </form>


            Dans la page, après soumission du form, tout est dans le tablo $_POST['truc']:
            print_r($_POST['truc']);
            • Partager sur Facebook
            • Partager sur Twitter
              24 juin 2006 à 11:53:36

              merci
              je comprend pas trop le systeme suivant :
              pourai tu me le decrire plus en detail stp car je prefere comprendre ;)

              $chaine = '';
              $i = 0;
              foreach($_GET as $id => $ok)
              {
                if (is_numeric($id))
                {
                  $i++;
                  if ($i == 1) $chaine .= 'id=\''.$id.'\'';
                  else  $chaine .= ' OR id=\''.$id.'\'';
                }
              }
              • Partager sur Facebook
              • Partager sur Twitter
                24 juin 2006 à 11:55:55

                Citation : el3ctr0n

                merci
                je comprend pas trop le systeme suivant :
                pourai tu me le decrire plus en detail stp car je prefere comprendre ;)


                $chaine = '';
                $i = 0;
                foreach($_GET as $id => $ok)
                {
                  if (is_numeric($id))
                  {
                    $i++;
                    if ($i == 1) $chaine .= 'id=\''.$id.'\'';
                    else  $chaine .= ' OR id=\''.$id.'\'';
                  }
                }

                Je ne te conseille pas de suivre cette voie, mais bon t'es libre aussi, donc tu fais comme tu veux ! :-°
                • Partager sur Facebook
                • Partager sur Twitter
                  24 juin 2006 à 11:59:18

                  ok bison mais si je fait un systeme comme toi pour les chexbox ce que je devré obtenir ce seré
                  index.php?action=Supprimer&truc[]=1&truc[]=2&truc[]=3&truc[]=4&truc[]=5
                  et ca apres pour traité c'est bof car si je fait un $_GET['truc[]'] je voi pas trop ce qu'il peut me sortir
                  • Partager sur Facebook
                  • Partager sur Twitter
                    24 juin 2006 à 11:59:50

                    Imaginons que tu ai un url comme ça :

                    ../index.php?action=Supprimer&3=on&4=on&5=on&6=on&8=on&1=on

                    Il ne faut s'intéresser qu'aux index numériques et ne pas prendre en compte le action=supprimer. Donc le foreach nous donne pour chaque quelques chose comme ça :

                    $id = 'action' ou $id = 1 ou $id = 2... et on ne prend pas encompte le $ok (il ne nous intéresse pas).

                    Ensuite le is_numeric() nous dit si on à affaire à un nombre pour la variable $id. Il nous indique donc qu'il ne faut pas traiter le 'action'. Pour les autres la conditionnelle fonctionne et on peut donc ajouter l'id à la chaîne de suppression SQL.

                    J'espère avoir était clair :) .

                    Edit : Je crois bien que la méthode de Bison est plus simple, je te laisse continuer Bison
                    • Partager sur Facebook
                    • Partager sur Twitter
                      24 juin 2006 à 12:05:14

                      enfaite ton systeme je le comprend pas trop a cause du foreach
                      edit : je c'est pas comment ca fonctione
                      • Partager sur Facebook
                      • Partager sur Twitter
                        24 juin 2006 à 12:07:01

                        Citation : el3ctr0n

                        ok bison mais si je fait un systeme comme toi pour les chexbox ce que je devré obtenir ce seré
                        index.php?action=Supprimer&truc[]=1&truc[]=2&truc[]=3&truc[]=4&truc[]=5
                        et ca apres pour traité c'est bof car si je fait un $_GET['truc[]'] je voi pas trop ce qu'il peut me sortir


                        C'est pas possible, je parles javanais ou quoi ???? :(
                        Je veux juste savoir pourquoi tu t'obstines à suivre la voie de la méthode GET ???? :colere2:
                        • Partager sur Facebook
                        • Partager sur Twitter
                          24 juin 2006 à 12:09:16

                          dsl c'est uniquement pour savoir ce que le formulaire allé me généré mais si tu veut je met tout en POST ce n'est pas un probleme ^^

                          edit : mon probleme c'est surtout de traité l'action que me genere le formulaire (c'est a dire de suprimer tout les message de ma bbd ou l'id = le nom de la chexbox (ou sa valeur suivant la forme du formualire)
                          • Partager sur Facebook
                          • Partager sur Twitter
                            24 juin 2006 à 12:16:29

                            Je te l'ai dit, tout est dans le tablo truc (tu l'appelle comme tu veux )
                            Je te donne l'idée générale :
                            <?php
                            if(!empty($_POST))
                            {
                            $req="delete from tatable where id in(".implode(',',$_POST['truc']).")";
                            $res=mysql_query($req);
                            }
                            ?>

                            A toi d'adapter ! :-°
                            • Partager sur Facebook
                            • Partager sur Twitter
                              24 juin 2006 à 12:20:33

                              merci tu peut m'expliqué la requete sql stp car je comprend pas trop (je suis chian je c'est :D )
                              • Partager sur Facebook
                              • Partager sur Twitter

                              probleme : je ne sais pas comment faire

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown