[PHP] Requete SQL sur un bouton

Bonjour,

J'aimerais que lorsque je clique sur mon bouton , la requete UPDATE... s'execute !

	?>
				<form method="post" action="" name="TableauRech">
				<?
Configuration: Windows XP
Internet Explorer 7.0

37 réponses

Résumé de la discussion

Exécution d’une requête UPDATE via un formulaire lors du clic sur le bouton d’envoi pose des difficultés liées à la récupération des valeurs POST et à leur intégration dans la requête. Des réponses recommandent d’éviter l’onClick dans le formulaire, de regrouper la logique dans une fonction PHP et de vérifier isset($_POST['submit_modif']) pour cibler la requête UPDATE. Des notices sur des constantes non définies et des indices $_POST manquants apparaissent fréquemment, les conseils préconisent d’utiliser des variables clairement définies et d’éviter les références directes sans vérification. En pratique, la solution implique souvent de fusionner les formulaires ou d’utiliser un seul bouton submit, puis d’activer l'UPDATE lorsque les valeurs POST pertinentes existent et sont non vides.

Bobot (l’IA à votre service)
  1. Notice: Use of undefined constant telport - assumed 'telport' in d:\www\php\inventaire\admin\Modifpers.php on line 10

    Notice: Use of undefined constant telfixe - assumed 'telfixe' in d:\www\php\inventaire\admin\Modifpers.php on line 10

    Notice: Undefined index: txtnomRech in d:\www\php\inventaire\admin\Modifpers.php on line 11

    Notice: Undefined index: txtprenomRech in d:\www\php\inventaire\admin\Modifpers.php on line 12

    Voila exactement les erreur que j'ai !
    Mais sinon il insert bien dans la table !
    1. Juste un énorme merci pour la réponse,j'ai mis plus de 4h à chercher cette ***** réponse, trop de bonheur, ca marche!!!!!!
      1. j'ai bien une solution "bricolage" met ta variable dans une vaiable de session.

        donc tu met session_start() au tous debut de ton code et ensuite tu met ta variable dans un truc du genre $_SESSION['un_nom_de_variable']

        si avec ça t'y arrive pas je comprend pas
        1. j'ai fait se que tu as mis mais toujours pareil...:s

          il y a pas un moyen de recuperer la valeur de cete variable ds la meme page?
          1. while($Modif)
            {
            echo "<TR>";
            echo "<TD> $Modif[NOM] </TD>";
            echo "<TD> $Modif[PRENOM] </TD>";

            ?>
            </form>
            <form name="frm_recherche" action="Modifpers2.php" method="POST">

            <tr>

            a cause de ça ton problème reste le même . au pire tu peut deplacer la fermeture et l'ouverture avant ton while

            </form>
            <form name="frm_recherche" action="Modifpers2.php" method="POST">
            while($Modif)
            {
            echo "<TR>";
            echo "<TD> $Modif[NOM] </TD>";
            echo "<TD> $Modif[PRENOM] </TD>";

            ?>

            <tr>

            et faire deux page c'est bien mais inutile
            1. Sinon je peux faire deux page PHP:
              <fieldset style="width: 600px"> 
              <legend>Modifier une personne</legend> 
              <table> 
              <? echo "<a href='Modifpersindex.php'>retour</a>"; 
              if(isset($_POST["Valid"]))//vérifie si on a cliquer sur rechercher 
              { 
              ?> 
              <? 
              	if ($_POST['txtnomRech'] != "" || $_POST['txtprenomRech'] != "")//vérifie si les zones de texte nom et prénom ne son pas vide 
              	{ 
              	?> 
              	
              <form method="post" action="" name="TableauRech"> 
              <?  
              	require ("..\connect.php");
              	$reqmodif = "SELECT * FROM personnel 
              	WHERE NOM LIKE '".$_POST['txtnomRech']."%' 
              	AND PRENOM LIKE '".$_POST['txtprenomRech']."%' "; 
              	$Resultatmodif = mysql_query($reqmodif); 
              	$Modif = mysql_fetch_array($Resultatmodif);
              		if($Modif)//On vérifie que le nom ou prénom existe 
              		{
              		while($Modif) 
              		{
              			echo "<TR>"; 
              			echo "<TD> $Modif[NOM] </TD>"; 
              			echo "<TD> $Modif[PRENOM] </TD>"; 
              		
              ?> 
              </form>
              <form name="frm_recherche" action="Modifpers2.php" method="POST">
              
              		<tr> 
              		<td>Telephone portable :</td> 
              		<td><input type="text" name="telport" value=<? 
              		if (isset($_POST['telport'])) echo $_POST['telport']; 
              			$REQUETE = "SELECT TEL_POR FROM `personnel`WHERE NOM='".$_POST['txtnomRech']."'"; 
              			$exec = mysql_query ($REQUETE); 
              			$info_de_la_requete = mysql_fetch_array($exec); 
              			echo $info_de_la_requete['TEL_POR'] 
              	?>></td> 
              	</tr> 
              	<tr> 
              		<td>Telephone fixe :</td> 
              		<td><input type="text" name="telfixe" value=<? 
              		$REQUETE = "SELECT TEL_FIXE FROM `personnel`WHERE NOM='".$_POST['txtnomRech']."'"; 
              		$exec = mysql_query ($REQUETE); 
              		$info_de_la_requete = mysql_fetch_array($exec); 
              		echo $info_de_la_requete['TEL_FIXE'] 
              	?>></td> 
              	</tr> 
              
              	<? 
              		echo "<TD><input type='radio' name ='btn_Modif' value='".$Modif['NOM']."'></TD>"; 
              		echo "</TR>"; 
              		$Modif = mysql_fetch_array($Resultatmodif); 
              			} 
              	
              
              
              	?> 
              	<tr> 
              
              		<td colspan="3"><input type='submit' name="submit_modif" value='Modifier'></td> 
              	</tr> 
              </form>
              <? 
              } 
              else//sinon on affiche que le nom ou prénom n'éxiste pas 
              { 
              echo "<br><br><b>Le nom et prénom sont introuvable<b><br>"; 
              echo "<a href='Modifpersindex.php'>retour</a>"; 
              } 
              } 
              else//sinon on affiche que le nom et prénom doit être saisie 
              { 
              echo "<br><b>Veuillez saisir un nom et prénom<b><br>"; 
              echo "<a href='Modifpersindex.php'>retour</a>"; 
              } 
              } 
              else 
              { 
              ?> 
              <form name="frm_recherche" action="" method="POST"> 
              
              <tr> 
              <td>Nom :</td> 
              <td><input type="text" name="txtnomRech" ></td> 
              </tr> 
              
              <tr> 
              <td>Prénom :</td> 
              <td><input type="text" name="txtprenomRech" ></td> 
              </tr> 
              <tr> 
              <td colspan="2" align="center"><input type="hidden" name="Valid" value="1"><input type="submit" value="Rechercher" name="submit_recherche"></td> 
              </tr>
              </form> 
              <? 
              } 
              ?> 
              </table> 
              </fieldset> 
              


              et une autre

              <fieldset style="width: 600px"> 
              <legend>Modifier une personne</legend> 
              <?
              $formMail = $_POST['txtprenomrech'];
              $formMail2 = $_POST['txtprenomRech'];
              
               
               if (isset($_POST['submit_modif']) && $_POST['submit_modif']!="")
               {
              require ("..\connect.php");
              $requete = mysql_query ("UPDATE personnel SET TEL_POR='".$_POST['telport']."', TEL_FIXE='".$_POST['telfixe']."'
              						WHERE NOM LIKE '".$_POST['txtnomRech']."%'
              						AND PRENOM LIKE '".$_POST['txtprenomRech']."%'");
              }
              ?>	
              </fieldset> 
              


              Mais je n'arrive pas a recuperer les valeurs...:s
              1. ben en fait c'est pas beaucoup mieux puisque tu ferme plusieur fois un formulaire (a cause du while) puis tu ouvre un autre formulaire 40 fois (toujours a cause du while) mais tu n'en ferme qu'un !

                En général, il faut mettre 1 seul formulaire dans ta page qui contient toute tes variables et ton code
                1. <?
                  if (isset($_POST['submit_modif']) && $_POST['submit_modif']!="") 
                  {  
                  require ("..\connect.php");
                  $requete = mysql_query ("UPDATE personnel SET TEL_POR='".$_POST['telport']."', TEL_FIXE='".$_POST['telfixe']."'
                  						WHERE NOM LIKE '".$_POST['txtnomRech']."%'
                  						AND PRENOM LIKE '".$_POST['txtprenomRech']."%'");
                  }
                  ?>	
                  <fieldset style="width: 600px"> 
                  <legend>Modifier une personne</legend> 
                  <table> 
                  <? echo "<a href='Modifpersindex.php'>retour</a>"; 
                  if(isset($_POST["Valid"]))//vérifie si on a cliquer sur rechercher 
                  { 
                  ?> 
                  <? 
                  	if ($_POST['txtnomRech'] != "" || $_POST['txtprenomRech'] != "")//vérifie si les zones de texte nom et prénom ne son pas vide 
                  	{ 
                  	?> 
                  	
                  <form method="post" action="" name="TableauRech"> 
                  <?  
                  	require ("..\connect.php");
                  	$reqmodif = "SELECT * FROM personnel 
                  	WHERE NOM LIKE '".$_POST['txtnomRech']."%' 
                  	AND PRENOM LIKE '".$_POST['txtprenomRech']."%' "; 
                  	$Resultatmodif = mysql_query($reqmodif); 
                  	$Modif = mysql_fetch_array($Resultatmodif);
                  		if($Modif)//On vérifie que le nom ou prénom existe 
                  		{
                  		while($Modif) 
                  		{
                  			echo "<TR>"; 
                  			echo "<TD> $Modif[NOM] </TD>"; 
                  			echo "<TD> $Modif[PRENOM] </TD>"; 
                  ?> 
                  </form>
                  <form name="frm_recherche" action="" method="post"> 
                  
                  		<tr> 
                  		<td>Telephone portable :</td> 
                  		<td><input type="text" name="telport" value=<? 
                  		if (isset($_POST['telport'])) echo $_POST['telport']; 
                  			$REQUETE = "SELECT TEL_POR FROM `personnel`WHERE NOM='".$_POST['txtnomRech']."'"; 
                  			$exec = mysql_query ($REQUETE); 
                  			$info_de_la_requete = mysql_fetch_array($exec); 
                  			echo $info_de_la_requete['TEL_POR'] 
                  	?>></td> 
                  	</tr> 
                  	<tr> 
                  		<td>Telephone fixe :</td> 
                  		<td><input type="text" name="telfixe" value=<? 
                  		$REQUETE = "SELECT TEL_FIXE FROM `personnel`WHERE NOM='".$_POST['txtnomRech']."'"; 
                  		$exec = mysql_query ($REQUETE); 
                  		$info_de_la_requete = mysql_fetch_array($exec); 
                  		echo $info_de_la_requete['TEL_FIXE'] 
                  	?>></td> 
                  	</tr> 
                  
                  	<? 
                  		echo "<TD><input type='radio' name ='btn_Modif' value='".$Modif['NOM']."'></TD>"; 
                  		echo "</TR>"; 
                  		$Modif = mysql_fetch_array($Resultatmodif); 
                  			} 
                  	
                  	?> 
                  	<tr> 
                  
                  		<td colspan="3"><input type='submit' name="submit_modif" value='Modifier'></td> 
                  	</tr> 
                  </form>
                  <? 
                  } 
                  else//sinon on affiche que le nom ou prénom n'éxiste pas 
                  { 
                  echo "<br><br><b>Le nom et prénom sont introuvable<b><br>"; 
                  echo "<a href='Modifpersindex.php'>retour</a>"; 
                  } 
                  } 
                  else//sinon on affiche que le nom et prénom doit être saisie 
                  { 
                  echo "<br><b>Veuillez saisir un nom et prénom<b><br>"; 
                  echo "<a href='Modifpersindex.php'>retour</a>"; 
                  } 
                  } 
                  else 
                  { 
                  ?> 
                  
                  <form name="frm_recherche" action="" method="post"> 
                  
                  <tr> 
                  <td>Nom :</td> 
                  <td><input type="text" name="txtnomRech" ></td> 
                  </tr> 
                  
                  <tr> 
                  <td>Prénom :</td> 
                  <td><input type="text" name="txtprenomRech" ></td> 
                  </tr> 
                  <tr> 
                  <td colspan="2" align="center"><input type="hidden" name="Valid" value="1"><input type="submit" value="Rechercher" name="submit_recherche"></td> 
                  </tr>
                  </form> 
                  <? 
                  } 
                  ?> 
                  </table> 
                  </fieldset> 
                  


                  toujours les memes erreur...
                  1. C'est bon je crois que j'ai trouver pourquoi ça plante.

                    En fait tu peut mettre un formulaire dans un autre formulaire, le serveur comprend pas cette manip. donc faut que tu trouve un moyen de séparer tout tes formulaires.
                    en gros faut plus ça :
                    <form action="" name= "">
                    ........
                    <form action="" name= "">
                    ........
                    </form>
                    </form>
                    mais ça :
                    <form action="" name= "">
                    .........
                    </form>
                    <form action="" name= "">
                    .........
                    </form>

                    Après ça, tout devrai fonctionner.
                    1. Ouai j'ai enlever se que tu ma dit...

                      <?
                      if (isset($_POST['submit_modif']) && $_POST['submit_modif']!="") 
                      {  
                      require ("..\connect.php");
                      $requete = mysql_query ("UPDATE personnel SET TEL_POR='".$_POST['telport']."', TEL_FIXE='".$_POST['telfixe']."'
                      						WHERE NOM LIKE '".$_POST['txtnomRech']."%'
                      						AND PRENOM LIKE '".$_POST['txtprenomRech']."%'");
                      }
                      ?>	
                      <fieldset style="width: 600px"> 
                      <legend>Modifier une personne</legend> 
                      <table> 
                      <? echo "<a href='Modifpersindex.php'>retour</a>"; 
                      if(isset($_POST["Valid"]))//vérifie si on a cliquer sur rechercher 
                      { 
                      ?> 
                      <? 
                      	if ($_POST['txtnomRech'] != "" || $_POST['txtprenomRech'] != "")//vérifie si les zones de texte nom et prénom ne son pas vide 
                      	{ 
                      	?> 
                      	
                      	<form method="post" action="" name="TableauRech"> 
                      	<? 
                      		 
                      		require ("..\connect.php");
                      		$reqmodif = "SELECT * FROM personnel 
                      		WHERE NOM LIKE '".$_POST['txtnomRech']."%' 
                      		AND PRENOM LIKE '".$_POST['txtprenomRech']."%' "; 
                      		$Resultatmodif = mysql_query($reqmodif); 
                      		$Modif = mysql_fetch_array($Resultatmodif); 
                      
                      			if($Modif)//On vérifie que le nom ou prénom existe 
                      			{
                      			
                      			while($Modif) 
                      			{
                      			
                      				echo "<TR>"; 
                      				echo "<TD> $Modif[NOM] </TD>"; 
                      				echo "<TD> $Modif[PRENOM] </TD>"; 
                      	?> 
                      		<form name="frm_recherche" action="" method="post"> 
                      
                      		<tr> 
                      		<td>Telephone portable :</td> 
                      		<td><input type="text" name="telport" value=<? 
                      		if (isset($_POST['telport'])) echo $_POST['telport']; 
                      			$REQUETE = "SELECT TEL_POR FROM `personnel`WHERE NOM='".$_POST['txtnomRech']."'"; 
                      			$exec = mysql_query ($REQUETE); 
                      			$info_de_la_requete = mysql_fetch_array($exec); 
                      			echo $info_de_la_requete['TEL_POR'] 
                      	?>></td> 
                      	</tr> 
                      	<tr> 
                      		<td>Telephone fixe :</td> 
                      		<td><input type="text" name="telfixe" value=<? 
                      		$REQUETE = "SELECT TEL_FIXE FROM `personnel`WHERE NOM='".$_POST['txtnomRech']."'"; 
                      		$exec = mysql_query ($REQUETE); 
                      		$info_de_la_requete = mysql_fetch_array($exec); 
                      		echo $info_de_la_requete['TEL_FIXE'] 
                      	?>></td> 
                      	</tr> 
                      
                      	<? 
                      		echo "<TD><input type='radio' name ='btn_Modif' value='".$Modif['NOM']."'></TD>"; 
                      		echo "</TR>"; 
                      		$Modif = mysql_fetch_array($Resultatmodif); 
                      			} 
                      	
                      	?> 
                      	<tr> 
                      	
                      		<td colspan="3"><input type='submit' name="submit_modif" value='Modifier'></td> 
                      	</tr> 
                      
                      </form>
                      
                      <? 
                      } 
                      else//sinon on affiche que le nom ou prénom n'éxiste pas 
                      { 
                      echo "<br><br><b>Le nom et prénom sont introuvable<b><br>"; 
                      echo "<a href='Modifpersindex.php'>retour</a>"; 
                      } 
                      } 
                      else//sinon on affiche que le nom et prénom doit être saisie 
                      { 
                      echo "<br><b>Veuillez saisir un nom et prénom<b><br>"; 
                      echo "<a href='Modifpersindex.php'>retour</a>"; 
                      } 
                      } 
                      else 
                      { 
                      ?> 
                      
                      <form name="frm_recherche" action="" method="post"> 
                      
                      <tr> 
                      <td>Nom :</td> 
                      <td><input type="text" name="txtnomRech" ></td> 
                      </tr> 
                      
                      <tr> 
                      <td>Prénom :</td> 
                      <td><input type="text" name="txtprenomRech" ></td> 
                      </tr> 
                      <tr> 
                      <td colspan="2" align="center"><input type="hidden" name="Valid" value="1"><input type="submit" value="Rechercher" name="submit_recherche"></td> 
                      </tr>
                      </form> 
                      <? 
                      } 
                      ?> 
                      </table> 
                      </fieldset> 
                      
                      1. met ça à la place des echo et montre moi ce que ça t'affiche après la validation du formulaire :
                           <? foreach($_POST as $key=>$value)
                                 {
                                        echo $key." => ".$value;
                                 }
                           ?>
                        
                        1. Donc alors j'ai fait se que tu m'a dit!

                          le echo au debut me dit qu'il ne reconnais aucune variable .../S
                          1. Déjà c'est pas du php mais du html et en gros ta juste a supprimer la premiere balise </form> et la seconde <form name="frm_recherche" action="" method="post"> c'est tout.

                            Ensuite il reconnais quoi exactement ? Pour le savoir avec exactitude mais au debut de ton code un echo de toute tes variables et met en com les lignes qui vont pas.
                            1. oula...tu sait en php je débute !!!

                              se que je comprend pas c'est que dans le deux formulaire il reconnais le prenom et le nom...:s
                              • 1
                              • 2