[PHP] PB de variable

BONJOUR A TOUS,

Mon probleme est le suivant:
Mon code modifie les num de telephone portable et fixe du personnel.MAis il doit modifier ces numero que de la personne selectionné alors que là il change le numero de toutes les personnes.

<?
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> 
<? 
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" value=""></td> 
</tr> 

<tr> 
<td>Prénom :</td> 
<td><input type="text" name="txtprenomRech" value=""></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> 


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

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

merci...
Configuration: Windows XP
Internet Explorer 7.0

29 réponses

Résumé de la discussion

Le problème central est qu'un script PHP met à jour les numéros de téléphone (portables et fixes) de l'ensemble des employés au lieu de cibler une personne, faute de clause WHERE adaptée. La meilleure réponse suggère d'ajouter une condition WHERE précise (par exemple où id = ... ou un autre champ unique) pour éviter que toutes les lignes soient modifiées. En cas d'erreurs, plusieurs participants signalent des messages d'index non défini liés à txtnomRech et txtprenomRech, et recommandent de vérifier les valeurs transmises et la façon dont la requête SELECT et le formulaire s'articulent.

Bobot (l’IA à votre service)
  1. je vois pas bien pourquoi tu aurais besoin de transmettre les valeur avec des champs caché normalement ta logique devrai fonctionné mais je bloque completement sur ton code jvois pas ce qui cloche...:s
    1. ENfaite j'ai deux formulaire du meme nom.
      Il faudrais inserer se code dans l'un des deux :

      <?if (isset($_POST['txtnomRech']) && isset($_POST['txtprenomRech ']) && $_POST['txtnomRech']!="" && $_POST['txtprenomRech ']!="")
      {
      ?>
      <input type='hidden' name='txtnomRech' value='<? echo $_POST['txtnomRech']; ?>' >
      <input type='hidden' name='txtprenomRech ' value='<? echo $_POST['txtprenomRech ']; ?>' >
      <?
      }
      ?>

      non?
      1. non le probleme c'est pas ca, mon code marche tres bien
        Il modifie les numero de telephone, mais pas d'un seul employer mais de tous !!
        1. Enfaite mon code marche comme ca:

          je doit rentrer un NOM et un PRENOM
          Il chercher dans la base de donnée
          si il existe il me donne la possibilité de changer le num de telephone portable et fixe
          1. euh oui c'est normal s'il existe pas .... c'était ç le pb?
            ça marche?
        2. les nom et prenom sont recherché dans la bdd...
          il n'y apas d'input pour les nom et prenom
          1. j'ai pas compris ce que tu m'as dit lol
        3. essai de mettre au lieu de champs input un select qui donne les choix entre tous les noms de la bdd
          genre :

          <select name='txtnomRech'>
          <?php
          $req="SELECT * FROM personnel ";
          $Result= mysql_query($req);
          $res = mysql_fetch_object($Result);
          foreach($res as $ro){
          echo"<option value='".$ro['nom']."'>".$ro['nom']."</option>";
          }
          ?>
          </select>
          1. putin je suis surt que y'a une toute petite con nerie de rien du tout quelque part ....grrrr
            1. Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in d:\www\php\inventaire\admin\Modifpers.php on line 8
              1. bon au début de ton code fais un echo $_POST['nom'] et $_POST['prenom'] pour voir ce qu'ils contiennent...
                1. essai d'enlever value="" dans ton formulaire
                  il garde peut etre ça plutot que ce que tu as entré deds...
                  1. j'ai remplacer les nom de variable par un nom et prenom de personnel et ca marche nikel...

                    l'erreur est donc bien là
                    1. non c'est sur intranet...
                      1. Ben je vois pas trop la comme ça je vais lacher le truc une heure et je reregarderai pour voir histoire de reflechir un peu mais la je bloque :)
                    2. ben d'après moi ça devrait etre bon....je seiche :s

                      il est en ligne quelque par que je puisse tester?
                      1. Les erreurs c'est pas a cause des variable qui sont definit lus bas dans le code?
                        1. et php my admin il te renvoi les element ke tu veu dans la table? c'est bizar qu'il te mete pas d'erreur...
                          1. alors la requete j'ai fait :

                            UPDATE personnel SET TEL_POR='1', TEL_FIXE='1'
                            WHERE NOM LIKE 'a'
                            AND PRENOM LIKE '1'

                            et aucune erreur
                            • 1
                            • 2