Prob insert

stp j ai un probleme de l insertion a la base de donnee le botton enregistrer ca marche pas aide moi pour trouve le probleme stp

<?php
$i=1;
$var=mysql_connect("localhost","root","");
mysql_select_db("test",$var);
$sql="select question from examen3";
$result=mysql_query($sql);
WHILE ($tab = mysql_fetch_array($result) )
{
echo "$i question numero: $i $tab[question] <br>";
?>
<DD><INPUT type="text" name="reponseb" ></font><p><font color="#ff0000"></DD>
<?php
$i++;
}
?>
<?php

if (isset($_get['reponseb']))
{$reponseb=$_get['reponseb'];

$var=mysql_connect("localhost","root","");

mysql_select_db("test",$var);

$req="INSERT INTO reponse3 ('reponseb')".
"VALUES ('".$reponseb."')";

$result = mysql_query($req);
}
<form>
<INPUT type="submit" value="enregistrer" name="enregistrer"></form>
?>
<?php
mysql_close();
?>
Configuration: Windows XP
Internet Explorer 6.0

40 réponses

  • Votes
  • Date
  • Date décroissante
Résumé de la discussion

Plusieurs échanges portent sur l’insertion de réponses dans une base de données via PHP et MySQL, où le formulaire n’enregistre pas les données et où les scripts présentent des erreurs syntaxiques et de logique. Des corrections clés consistent à utiliser $_POST au lieu de $_GET pour récupérer reponseb et à corriger la requête INSERT INTO reponse3 (reponseb) VALUES ('...') en évitant les guillemets autour du nom de colonne. D'autres recommandations portent sur la sécurité et la fiabilité: fermer proprement les bases de données, vérifier le nom de la base et des tables, et préférer une approche PDO/MySQLi avec des requêtes préparées.

Bobot (l’IA à votre service)
  1. pardon mais il me reste que pas baucoup pour la setanance stp aide moi
    j ai fait ce que tu m a dit mais il me donne le probleme dans cette ligne je ne sais pas pourquoi
    la ligne ou l erreur(<OPTION value="<?php echo "$tab["id_question_qc"] "; ?>"> <?php echo "choix1".$tab[2]."|choix2".$tab[3]."|choix3".$tab[4] ; ?> </option>)

    lerreur est(Parse error: syntax error, unexpected '"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in c:\AppServ\www\srrr\questch_enseignant.php on line 104))

    <?php
    //code de passage de quiz des choix
    $i=1;
    $var=mysql_connect("localhost","root","");
    mysql_select_db("base_donnee",$var);
    $sql="select * from question_choix";
    $result=mysql_query($sql);

    WHILE ($tab = mysql_fetch_array($result) )
    ?>

    <form action="supprimerquestion.php" method="post">
    echo"<br><br> $i)$tab[1]<br><br>";
    <SELECT name="supprime_num">
    <OPTION value="<?php echo "$tab["id_question_qc"] "; ?>"> <?php echo "choix1".$tab[2]."|choix2".$tab[3]."|choix3".$tab[4] ; ?> </option>

    </select>
    </form>
    <input type="submit" name="supprimer" value="supprrimer" />
    <?php $icent=$i+100;
    $imille=$i+1000;?>
    <input type="hidden" name="<?php echo"$icent";?>" value="<?php echo "$tab[5] "; ?>" />
    <input type="hidden" name="<?php echo"$imille";?>" value="<?php echo "$tab[6] "; ?>" />
    <?php

    $i++;
    }
    ?>
    <?php
    mysql_close();
    ?>

    si tu veux et si ca ne te derrange pas donne moi ton msn et je vais t envoyer mes duex fichier pour voir clairement mon code
    1. ok mais le msn je m'en sert pas beaucoup tu peut l'envoyer à mon mail de mon site

      mon site http://milsodor.no-ip.org
      le mail aiph34@orange.fr
  2. bonjour,verifie bien la syntaxe fait attention aux ' et ".
    d'autre part il n'y a pas de balise <form action et </form entre ton select

    WHILE ($tab = mysql_fetch_array($result) )
    {
    ?>
    <form action="ton_fichier_de traitement">
    <SELECT name="supprime_num">
    <OPTION value="<?php echo $tab["id_question_qc"] ?>"><?php echo "choix1".$tab[2]."|choix2".$tab[3]."|choix3".$tab[4] "; ?> 
    </option>
    
    </select> 
    </form>
    


    je t'ai corrigé et viré cette ligne echo"<br><br> $i)$tab[1]<br><br>";?>
    1. bounjour lewis j ai fait ce que tu m a dit
      mais maintenant quand je fait l execution il me donne l erreur dans la premiere formulaire dans cette ligne voila la ligne ou il me donne l erreure:'(<input type="submit" name="supprimer" value="supprrimer" />)
      l erreur est (Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in c:\AppServ\www\srrr\questch_enseignant.php on line 105)
      voila tout mon code :
      <form action="supprimerquestion.php" method="post">
      <p>

      <?php
      //code de passage de quiz des choix
      $i=1;
      $var=mysql_connect("localhost","root","");
      mysql_select_db("base_donnee",$var);
      $sql="select * from question_choix";
      $result=mysql_query($sql);

      WHILE ($tab = mysql_fetch_array($result) )
      {
      echo"<br><br> $i)$tab[1]<br><br>";?>
      <SELECT name="supprime_num">
      <OPTION value="<?php echo "$tab[id_question_qc] "; ?>"><?php echo "choix1".$tab[2].'|choix2'.$tab[3].'|choix3'.$tab[4] "; ?> </option>

      </select>
      <input type="submit" name="supprimer" value="supprrimer" />
      <?php $icent=$i+100;
      $imille=$i+1000;?>
      <input type="hidden" name="<?php echo"$icent";?>" value="<?php echo "$tab[5] "; ?>" />
      <input type="hidden" name="<?php echo"$imille";?>" value="<?php echo "$tab[6] "; ?>" />
      <?php

      $i++;
      }
      ?>
      <?php
      mysql_close();
      ?>
      1. si si j'ai compris..

        pour que tu recupere ta question il faut que dans ton select la valeur <option value corresponde à ton ID.
        c'est cette valeur qui est passée en post

        donc il faut absolument que ton select soit fait comme ça
        <OPTION value="<?php echo "$tab[id_question_qc]==> ca n'apparait pas a l'ecran mais c'est passé en POST

        ensuite pour affchier dans la fenetre du select les reponses tu peut essayer un truc comme ça

        WHILE ($tab = mysql_fetch_array($result) )
        {

        <SELECT name="supprime_num">
        <OPTION value="<?php echo "$tab[id_question_qc] "; ?>"><?php echo "reponse 1".$tab[1].'|reponse 2'.$tab[2].'|reponse 3'.$tab[3] "; ?> </option>

        </select>

        autrement dit je concatene les 3 reponses dans la meme option.

        mais il faut absolument que ce soit on id qui soit dans value
        1. merci pour tout tu m a pas compris
          car moi je veux aficher la question et les choix de la reponse de la question voila le code de la &ere formulaire
          <?php
          //code de passage de quiz des choix
          $i=1;
          $var=mysql_connect("localhost","root","");
          mysql_select_db("base_donnee",$var);
          $sql="select * from question_choix";
          $result=mysql_query($sql);

          WHILE ($tab = mysql_fetch_array($result) )
          {
          echo"<br><br> $i)$tab[1]<br><br>";?>
          <SELECT name="supprime_num">
          <OPTION value="<?php echo "$tab[2] "; ?>"><?php echo "$tab[2] "; ?> </option>
          <OPTION value="<?php echo "$tab[3] "; ?>"><?php echo "$tab[3] "; ?> </option>
          <OPTION value="<?php echo "$tab[4] "; ?>"><?php echo "$tab[4] "; ?> </option>
          </select>
          <input type="submit" name="<?php echo"$i";?>" value="supprrimer" />
          <?php $icent=$i+100;
          $imille=$i+1000;?>
          <input type="hidden" name="supprimer" value="<?php echo "$tab[5] "; ?>"/>
          <input type="hidden" name="<?php echo"$imille";?>" value="<?php echo "$tab[6] "; ?>"/>
          <?php

          $i++;
          }
          ?>
          <?php
          mysql_close();
          ?>

          le probleme que j ai est que select ne recupere aucun valeure pour cela ma requete sql (delete ) ca marche pas
          1. oui mais id_question_qc c est cle primaire (autoincrimente) dans ma table et moi dans ma formulaire j ai afiche les question et les choix de la question que j ai dans ma table voila les chant de la table sue laquel j ai fait la requete sql (id-question_qc ; choix1 ; choix2 ; choix3 )
            si je fait se que tu m a dit select sera affiche seulement 1 et 2 et 3 carl le champ id_question_qc est un champ auto incrrimente et moi je veux aficher les question et leur choix pour les supprimer
            1. ok j'ai compris..
              donc en fait si tu n'affiche que la question ca devarit etre bon
              il faut rentrer ta question dans ta table tu cree un champ ,par exemple nom_question (cree un camp varchar ,taille 255)

              tu va affcicher le nom de la question dans ton select
              WHILE ($tab = mysql_fetch_array($result) )
              {
              
              <SELECT name="supprime_num">
              <OPTION value="<?php echo "$tab[id_question_qc] "; ?>"><?php echo "$tab[nom_question] "; ?> </option>
              
              </select> 
              
              


              Si tu veut afficher aussi les reponses il te faudra passer par un tableau car je pense pas que dans un select on puisse afficher plusieurs choix
          2. bonjour,

            modifie ton select comme ça

            WHILE ($tab = mysql_fetch_array($result) )
            {
            
            <SELECT name="supprime_num">
            <OPTION value="<?php echo "$tab[id_question_qc] "; ?>"><?php echo "$tab[id_question_qc] "; ?> </option>
            
            </select> 
            }
            


            tu recupere les valeurs du champ id_question_qc et comme ça elle sera passé en varible post
            1. merci bcp lewis a propos de mon probleme j ai fait ce que tu m a dit et j ai trouvée que la valeur de la premiere formulaire ne recupere pas car quand j ai fait dans le fichier de traitement $sql dans l executuon me donne (?> delete * from question_choix WHERE id_question_qc='') j ai deduit que la valeure de select ne recupere pas a partir de la 1ere formulaire voila le code da ma 1ere formulaire :
              <?php
              //code de passage de quiz des choix
              $i=1;
              $var=mysql_connect("localhost","root","");
              mysql_select_db("base_donnee",$var);
              $sql="select * from question_choix";
              $result=mysql_query($sql);

              WHILE ($tab = mysql_fetch_array($result) )
              {
              echo"<br><br> $i)$tab[1]<br><br>";?>
              <SELECT name="supprime_num">
              <OPTION value="<?php echo "$tab[2] "; ?>"><?php echo "$tab[2] "; ?> </option>
              <OPTION value="<?php echo "$tab[3] "; ?>"><?php echo "$tab[3] "; ?> </option>
              <OPTION value="<?php echo "$tab[4] "; ?>"><?php echo "$tab[4] "; ?> </option>
              </select>
              <input type="submit" name="supprimer" value="supprrimer" />
              <?php $icent=$i+100;
              $imille=$i+1000;?>
              <input type="hidden" name="<?php echo"$icent";?>" value="<?php echo "$tab[5] "; ?>"/>
              <input type="hidden" name="<?php echo"$imille";?>" value="<?php echo "$tab[6] "; ?>"/>
              <?php

              $i++;
              }
              ?>
              <?php
              mysql_close();
              ?>
              1. ta requet $sql="delete * from question_choix ";
                $result=mysql_query($sql);

                tu a bien rajouté where nom_du champ='$post du selet'

                avant d'effectuer ta requete rajoute 2 lignes dans ton fichier de traitement
                echo $_post[ la valeur recuprée par post]

                et juste apres ta requete $sql
                echo $sql;
                comme ca tu verra quelle valeur est passée en post e t tu verra en clair ta requete (surtout pour le where ,tu verra si c'est bien ça)

                et quand ca marche tu vire les lignes echo
                1. j ai regle se probleme maintenant select m a afiche tous ce que je veux mais le probleme qui me reste est quand je clic sur supprimer pour supprimer ca quit ca marche pas ????
                  mes enregistremnt dans ma base ca reste les meme rien ete supprimer??
                  merci
                  1. re
                    modifie ton select comme ca

                    while($tab=mysql_fetch_array($result))
                    {
                    ?>
                    <option value="<?php echo $tab["le_nom_de_ton_champ"] ?>" <?php echo $tab["le_nom_de_ton_champ"] ?>

                    </option>
                    }
                    quand je dis nom de ton champ c'est ce que tu veut voir affiché dans le select

                    si ca te met un message d'erreur c'est quoi comme message ?
                    1. j ai fait ce que tu ma dit mais ca marche pas et la premier boton de supprimer n affiche pas dans la premier formulaire pour la premier question mais la 2eme et la 3eme et ..... s affiche
                      voila son code et merci bcp

                      <?php
                      //code de passage de quiz des choix
                      $i=1;
                      $var=mysql_connect("localhost","root","");
                      mysql_select_db("base_donnee",$var);
                      $sql="select * from question_choix";
                      $result=mysql_query($sql);

                      WHILE ($tab = mysql_fetch_array($result) )
                      {
                      echo"<br><br> $i)$tab[1]<br><br>";?>
                      <SELECT name="supprime_num>
                      <OPTION value="<?php echo "$tab[2] "; ?>"><?php echo "$tab[2] "; ?> </option>
                      <OPTION value="<?php echo "$tab[3] "; ?>"><?php echo "$tab[3] "; ?> </option>
                      <OPTION value="<?php echo "$tab[4] "; ?>"><?php echo "$tab[4] "; ?> </option>
                      </select>
                      <input type="submit" name="supprimer" value="supprrimer" />
                      <?php $icent=$i+100;
                      $imille=$i+1000;?>
                      <input type="hidden" name="<?php echo"$icent";?>" value="<?php echo "$tab[5] "; ?>"/>
                      <input type="hidden" name="<?php echo"$imille";?>" value="<?php echo "$tab[6] "; ?>"/>
                      <?php

                      $i++;
                      }
                      ?>
                      <?php
                      mysql_close();
                      ?>
                      et la formulaire de traitement ca marche pas aussi
                      1. bonsoir,

                        modifi ton select comme ca
                        echo"<br><br> $i)$tab[1]<br><br>";?>
                        
                        <form action="supprimerquestion.php" method="post"> 
                        <SELECT name="supprime_num">
                        
                        <OPTION value="<?php echo "$tab[2] "; ?>"><?php echo "$tab[2] "; ?> </option>
                        <OPTION value="<?php echo "$tab[3] "; ?>"><?php echo "$tab[3] "; ?> </option>
                        <OPTION value="<?php echo "$tab[4] "; ?>"><?php echo "$tab[4] "; ?> </option>
                        </select>
                        <input name="Submit" type="submit" " value="Suprimmer" /> 
                        


                        et dans ton fichier de traitement tu rajoute
                        $num=$_post['supprime_num'];

                        et ta requete va se transformer comme ça

                        $sql="delete * from question_choix WHERE numero='$num'";

                        explication:
                        j'ai nommé supprime_num ton select qui affiche tes données.
                        la question choisie est recuperéé (variable $_post['supprime_num']) puis la requete efface la ligne correspondante avec la clause where.
                        bien sur j'ai mis numero dans la requete maintenant tu adapteras en fonction de ta table.Si c'est l'ID que tu recupere la clause where va etre comme ca WHERE Id="$num"
                        1. merci lewis j pour vos aide j ai un autre probleme
                          maintenant j ai un formulaire sur cette formulaire affichra toute les question qui j ai enregistrer dans ma table et je veux faire un code qui me permet de supprimer le question que je veux supprimer
                          voila mon code que j ai fait mais ce code ca marche pas je ne sais pas ou le probleme ???
                          <?php
                          //code de suuppression de quiz des choix

                          $var=mysql_connect("localhost","root","");
                          mysql_select_db("base_donnee",$var);
                          $sql="delete * from question_choix ";
                          $result=mysql_query($sql);

                          ?>
                          <?php
                          mysql_close();
                          ?>

                          ma premiere formulaire est qui me donne les enregistremnt de ma table est
                          <form action="supprimerquestion.php" method="post">

                          <?php

                          $i=1;
                          $var=mysql_connect("localhost","root","");
                          mysql_select_db("base_donnee",$var);
                          $sql="select * from question_choix";
                          $result=mysql_query($sql);

                          WHILE ($tab = mysql_fetch_array($result) )
                          {
                          echo"<br><br> $i)$tab[1]<br><br>";?>
                          <SELECT name="<?php echo"$i";?>">
                          <OPTION value="<?php echo "$tab[2] "; ?>"><?php echo "$tab[2] "; ?> </option>
                          <OPTION value="<?php echo "$tab[3] "; ?>"><?php echo "$tab[3] "; ?> </option>
                          <OPTION value="<?php echo "$tab[4] "; ?>"><?php echo "$tab[4] "; ?> </option>
                          </select>
                          <input name="Submit" type="submit" " value="Suprimmer" />

                          $i++;
                          }
                          ?>
                          <?php
                          mysql_close();
                          ?>

                          r
                          je veux q quand je clic sur le bouton supprimer l enregistrement dite etre supprimer...
                          1. bonsoir,oui c'est preferable de faire 2 fichiers ,surtout au debut.

                            Ensuite tu peut manipuler autant de table que tu veut,apres tout depend de ce que tu veut faire.

                            Parcontre il faut toujours veiller a travailler avec des variables qui sont declarée et des champsde tables qui existe aussi.

                            un exemplesi dans ta table tu a un champ qui s'appelle Id dans tes requetes ilfaut pas mettre id,pareil pour les variables $Id c'est pas la meme que $id.
                            parfois les erreurs viennent de la car y'a pas de raison que ton code ne marche pas si tu a tout bien suivi.

                            quand à include ou require les 2 fonctionne par contre c'est juste au niveau du traitement des erreurs.je pense qu'il faut mieux utilser require plutot qu'include
                            1. merci bcp mais le probleme reste tjr le meme
                              dit est ce que je doit obligatoirement faire deux script php l un je fais l insertion et l autre je fait la selection est ce que est imopissible de faire la selection a partire d une table et l insertion a partir d une autre table et stp dedail pour moi comment ja vais ca car j arrive pas a prendre pourquoi mon code ca marche pas malgres que je sais qque mon code est correcte et dit moi c est ""require"" en php et merci
                              1. ah ca marche pas ????
                                pourqoui tu met <DD>
                                met plutot <td>
                                bon c'est p'etre pas de la que viens l'erreur mais au moins tu est dans les "normes"
                                autre chose tu met ca comme valeur

                                f (isset($_get['reponseb']))
                                {$reponseb=$_get['reponseb'];

                                dans ton formulaire si ma memoire est bonne c'est en methode post

                                donc remplace get par post et pense a commenter tes variables
                                exemple
                                echo 'valeur $post reponse'.$_post['reponseb'];

                                comme ca tu verra laquelle est pas passée ,et une fois que tu a cernée le pb de variable tu vire les echo
                                1. on va yarriver t'inkiete

                                  remplace les ' par "
                                  je suis plus habitué aux syntaxe mysqli
                                  • 1
                                  • 2