Modification de plusieurs clients à la fois

Eléphant du PHP | 81 Messages

08 nov. 2006, 12:11

Bonjour à tous,

Je voudrais pouvoir modifier les infos de plusieurs clients à la fois, stockées dans ma BDD.
Je récupères les infos dans un formulaire, après modification j’envoie le tout sur une page ou j’update ma BDD.
Pour un client pas de souci mais dès que j’en ai plusieurs, seul le dernier client est updaté.
Je pense devoir faire un tableau associatif, mais je ne sais pas comment faire.

Voici mon code du formulaire :
<?php

$Num=$_POST['Num'];

for($i=0;$i<sizeof($Num);$i++)
{

$NUM=$Num[$i];

$r="select * from clients where Num='$NUM'";
$rq=mysql_query($r);

$numero=mysql_result($rq,0,'Num');
$N2=mysql_result($rq,0,'Nom');
$Nr=mysql_result($rq,0,'Nom_stagiaire');
?>

<form method="post" action="vrai_modif_client.php">
      <fieldset>
       <legend>Coordonnées</legend>
<!--Infos clients-->
        <p><label>Nom de la société :</label><b><?php echo $N2; ?></b></p>
        <p><label>Nom du stagiaire:</label><input name="Nom_stagiaire" type="text" maxlength="100" value="<?php echo $Nr; ?>"/></p>
     </fieldset>

        <input type="hidden" value="<? echo $numero ?>" name="Num[]" />

<?php
}

?>
<!--Bouton envoie-->
        <p class="formbt"><input type="submit" value="Modifier" name="envoyer" class="bouton"/></p>

</form>
Merci

Eléphant du PHP | 193 Messages

08 nov. 2006, 12:32

Et où et comment fais-tu l'update?

Eléphant du PHP | 81 Messages

08 nov. 2006, 13:23

Voici un bout de code de ma page ou je modifie ma base :
$num=$_POST['Num'];

$Nr=trim(strtoupper($_POST["Nom_stagiaire"]));
$N=trim(ucfirst(strtolower($_POST["Nom"])));



$r=" update clients set Nom_stagiaire='$Nr', Nom='$N' where Num='$num' ";
$rq=mysql_query($r);

mysql_close();
Merci

Mammouth du PHP | 592 Messages

08 nov. 2006, 13:33

salut

ta variable num est ton identifiant de clients dans ta bdd???
si oui elle doit etre unique!

tu ne fai pas de boucle dans ton update donc c'es normal qui ne prend que le dernier

il faut aussi que tu change le nom de ta variable nom et nom_stagiaire

de plus tu n'as pas a updater le nom de société parce que tu n'as pas d'input dans ton formulaire y correspondant

Eléphant du PHP | 81 Messages

08 nov. 2006, 13:53

la variable num est bien l'identifiant de clients dans ma bdd et il est unique.
j'ai fais des boucles dans mon fichier update mais je n'update que mon dernier client. Peux tu me donner un exemple de boucle qui fonctionnerait.

voici mes 2 fichiers rectifiés.

formulaire:
$Num=$_POST['Num'];

for($i=0;$i<sizeof($Num);$i++)
{

$NUM=$Num[$i];

$r="select * from clients where Num='$NUM'";
$rq=mysql_query($r);

$numero=mysql_result($rq,0,'Num');
$Nr=mysql_result($rq,0,'Nom_stagiaire');
$P=mysql_result($rq,0,'Prenom');
?>

<form method="post" action="vrai_modif_client.php">
      <fieldset>
       <legend>Coordonnées</legend>
<!--Infos clients-->

        <p><label>Nom du stagiaire:</label><input name="Nom_stagiaire" type="text" maxlength="100" value="<?php echo $Nr; ?>"/></p>
        <p><label>Prénom :</label><input name="Prenom" type="text" maxlength="20" value="<?php echo $P; ?>"/></p>
</fieldset>

        <input type="hidden" value="<? echo $numero ?>" name="Num[]" />

<?php
}

?>
<!--Bouton envoie-->
        <p class="formbt"><input type="submit" value="Modifier" name="envoyer" class="bouton"/></p>

</form>
Update:
$num=$_POST['Num'];

$Nr=trim(strtoupper($_POST["Nom_stagiaire"]));
$P=trim(ucfirst(strtolower($_POST["Prenom"])));



$r=" update clients set Nom_stagiaire='$Nr', Prenom='$P' where Num='$num' ";
$rq=mysql_query($r);

mysql_close();

Mammouth du PHP | 592 Messages

08 nov. 2006, 14:12

ta 1ere variable : $Num=$_POST['Num'];

correspond a ton num dans la base nom ???

donc si tu as plusieurs lignes qui s'affichent c'es que num n'es pas unique

Mammouth du PHP | 592 Messages

08 nov. 2006, 14:15

sinon je verrai le formulaire plutot com ça :
for($i=0;$i<sizeof($Num);$i++) 
{ 

$NUM=$Num[$i]; 

$r="select * from clients where Num='$NUM'"; 
$rq=mysql_query($r); 

$numero=mysql_result($rq,0,'Num'); 
$N2=mysql_result($rq,0,'Nom'); 
$Nr=mysql_result($rq,0,'Nom_stagiaire'); 
?> 

<form method="post" action="vrai_modif_client.php"> 
      <fieldset> 
       <legend>Coordonnées</legend> 
<!--Infos clients--> 
        <p><label>Nom de la société :</label><b><?php echo $N2; ?></b></p> 
        <p><label>Nom du stagiaire:</label><input name="Nom_stagiaire$i" type="text" maxlength="100" value="<?php echo $Nr; ?>"/></p> 
     </fieldset> 

        <input type="hidden" value="<? echo $numero ?>" name="Num$i" /> 

<?php 
} 

?> 
<!--Bouton envoie--> 
        <p class="formbt"><input type="submit" value="Modifier" name="envoyer" class="bouton"/></p> 

</form> 

Mammouth du PHP | 592 Messages

08 nov. 2006, 14:17

désolé il manquai un truc :
for($i=0;$i<sizeof($Num);$i++)  
{  

$NUM=$Num[$i];  

$r="select * from clients where Num='$NUM'";  
$rq=mysql_query($r);  

$numero=mysql_result($rq,0,'Num');  
$N2=mysql_result($rq,0,'Nom');  
$Nr=mysql_result($rq,0,'Nom_stagiaire');  
?>  

<form method="post" action="vrai_modif_client.php">  
      <fieldset>  
       <legend>Coordonnées</legend>  
<!--Infos clients-->  
        <p><label>Nom de la société :</label><b><?php echo $N2; ?></b></p>  
        <p><label>Nom du stagiaire:</label><input name="Nom_stagiaire$i" type="text" maxlength="100" value="<?php echo $Nr; ?>"/></p>  
     </fieldset>  

        <input type="hidden" value="<? echo $numero ?>" name="Num$i" />  

<?php  
$p=$p+1;
}  

?>  
<!--Bouton envoie-->  
        <p class="formbt"><input type="submit" value="Modifier" name="envoyer" class="bouton"/><input type="hidden" value="<? echo $p; ?>" name="max" /> </p>  

</form>
 

Eléphant du PHP | 81 Messages

08 nov. 2006, 14:24

si je fais un echo de $NUM j'ai bien mes différents identifiants qui s'affichent.
Et si je fais un echo de $NUM dans mon fichier uptdate j'ai bien les identifiants de mes clients qui s'affichent.
Par contre je n'arrive pas à récupérer les infos des clients dans le fichier update

Mammouth du PHP | 592 Messages

08 nov. 2006, 14:27

dans ce cas passe ton script d'update en entier
stp

Eléphant du PHP | 81 Messages

08 nov. 2006, 15:03

voici mon fichier update avec la boucle, là je ne récupère que les modif de mon dernier client.
$num=$_POST['Num'];
$Nr=trim(strtoupper($_POST["Nom_stagiaire"]));
$P=trim(ucfirst(strtolower($_POST["Prenom"])));


for($i=0;$i<sizeof($num);$i++)
{

$NUM=$num[$i];

$r=" update clients set Nom_stagiaire='$Nr', Prenom='$P'
 where Num='$NUM' ";
$rq=mysql_query($r);
}
mysql_close();

Mammouth du PHP | 592 Messages

08 nov. 2006, 15:22

oui c'es normal que tu obtienne que le nom du dernier client car ton input pour cette variable a le meme nom pour toutes tes lignes !!!

Eléphant du PHP | 81 Messages

08 nov. 2006, 16:01

comment dois je m'y prendre pour récupérer toutes les infos.
je pensais faire un tableau associatif dans ma page de formulaire pour chaque input mais je ne sais pas comment faire.

Une idée ?

Mammouth du PHP | 592 Messages

08 nov. 2006, 17:01

oui incrément le nom des tes input

exemple :

Code : Tout sélectionner

<input name="<? echo "nom_stagiaire$num";?>">
ensuite tu fera dans ton update un boucle pour tes modifs

Eléphant du PHP | 81 Messages

08 nov. 2006, 17:51

Quel genre de boucle je dois faire dans mon fichier update ?