Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1624 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Problème update

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] Problème update

n°640366
samesoule1​977
Posté le 12-02-2004 à 14:13:06  profilanswer
 

Bonjour,
 
J'ai un formulaire de modification de mes factures :
 
dans ce formulaire, je peux modifier plusieurs lignes de matériel.
Ensuite je fais un update de ma table marchandise, en lui disant de remplacer les données ou mon id est égal à celui de la table.
 
Mon problème, c'est que quand je lance l'update, il ne me modifie que la dernière des lignes de matériel et pas les autres.
 
Voici le code de mon update :

Code :
  1. $query = "update  marchandises
  2. set  marchnum='$marchnum', marchtype='$marchtype',
  3. marchcont='$marchcont', marchqte='$marchqte', marchpoids='$marchpoids.',
  4. marchvol='$marchvol', marchsurf='$marchsurf', marchval='$marchval',
  5. marchdaterec='$marchdaterec', marchconnu='$marchconnu',
  6. marchdep='$marchdep'
  7. where marchid='$marchid'";
  8. $result = mysql_query($query);


 
Quelqu'un pourrait me dire comment faire pour qu'il me corrige  toutes les lignes ?
 
Merci d'avance

mood
Publicité
Posté le 12-02-2004 à 14:13:06  profilanswer
 

n°640416
Hermes le ​Messager
Breton Quiétiste
Posté le 12-02-2004 à 14:33:59  profilanswer
 

Ben, c'est normal, tu as ça :
 
where marchid='$marchid'";

n°640542
samesoule1​977
Posté le 12-02-2004 à 15:27:40  profilanswer
 

hermes le messager a écrit :

Ben, c'est normal, tu as ça :
 
where marchid='$marchid'";


 
ben oui, et je mets koi moi à la place de ca ?

n°640544
Hermes le ​Messager
Breton Quiétiste
Posté le 12-02-2004 à 15:28:38  profilanswer
 

samesoule1977 a écrit :


 
ben oui, et je mets koi moi à la place de ca ?


 
Ah ok... Attends, je regarde dans ma boule de crystal. Ah ben non, ya trop de lumière aujourd'hui. Peut être demain alors...  :whistle:

n°640551
darxmurf
meow
Posté le 12-02-2004 à 15:34:16  profilanswer
 

yup
 
euh c'est normal le point la : marchpoids='$marchpoids.' ?
à la fin tu met WHERE 1; mais à la base si tu mets pas de where bah ça fait tout quand même :/


---------------
Des trucs - flickr - Instagram
n°640554
dropsy
et bonne chance surtout...
Posté le 12-02-2004 à 15:36:27  profilanswer
 

bah tu peux essayer sans, ça te mettra à jour toutes les lignes de ta table :whistle:
mais ça m'étonerait que ce soit ça que tu veuilles faire ;)
 
quelle est la structure de la table?
enfin, dis nous plutôt ce que tu cherches à faire.


Message édité par dropsy le 12-02-2004 à 15:37:49
n°640567
darxmurf
meow
Posté le 12-02-2004 à 15:41:59  profilanswer
 

samesoule1977 a écrit :


...
Quelqu'un pourrait me dire comment faire pour qu'il me corrige  toutes les lignes ?
...


 
On dirait que c'est ce qu'il veut ... je ne vois pas trop l'utilité mais bon ...  :pt1cable:


---------------
Des trucs - flickr - Instagram
n°640652
samesoule1​977
Posté le 12-02-2004 à 16:37:55  profilanswer
 

dropsy a écrit :

bah tu peux essayer sans, ça te mettra à jour toutes les lignes de ta table :whistle:
mais ça m'étonerait que ce soit ça que tu veuilles faire ;)
 
quelle est la structure de la table?
enfin, dis nous plutôt ce que tu cherches à faire.


Bon d'accord j'avoue,j'ai pas été tres clair...
 
Table facture :  
facid, facnum, facdate, ....
 
Table marchandises :
marchid, marchqte, marchpoids,...et facid
 
Dans une facture, il peut y avoir jusqu'à 4 lignes de marchandises.
 
Ensuite, j'ai un formulaire de modification de ces lignes...(pour les gens qui ne sont pas capables de saisir une facture sans se planter...) :sarcastic:  
Il va récupérer toutes les lignes de marchandises ayant la référence de ma facture...

Code :
  1. $query = "select * from marchandises where marchoa like '".$facid."' order by marchid";
  2. $result = mysql_query($query);
  3.  
  4. $num_results = mysql_num_rows($result);
  5. for ($i=0; $i <$num_results; $i++)
  6.   {
  7. $my_array = mysql_fetch_array($result);
  8. $marchid=$my_array[0]; 
  9. $marchnum=$my_array[1]; 
  10. $marchtype=$my_array[2];
  11. $marchcont=$my_array[3];
  12. $marchqte=$my_array[4];
  13. $marchpoids=$my_array[5];
  14. $marchvol=$my_array[6];
  15. $marchsurf=$my_array[7];
  16. $marchval=$my_array[8];
  17. $marchconnu=$my_array[11];
  18.  
  19. echo " <tr>\n";
  20.   echo "    <td >";
  21.     echo "   <input type='text' maxlength='5' name='marchid' size='5' value='$marchid' >";
  22. echo " </td>";
  23. echo "    <td >";
  24.     echo "   <input type='text' maxlength='15' name='marchnum' size='13' value='$marchnum' >";
  25. echo " </td>";
  26. echo " <td>";
  27. echo "  <input type='text' maxlength='15' name='marchtype' size='13' value='$marchtype'>";
  28. echo " </td>";
  29. echo " <td>";
  30. echo "  <input type='text' maxlength='30' name='marchcont' size='30' value='$marchcont'>";
  31. echo " </td>";
  32. echo " <td>";
  33. echo "  <input type='text' maxlength='8' name='marchqte' size='8' value='$marchqte'>";
  34. echo " </td>";
  35. echo " <td>";
  36. echo "  <input type='text' maxlength='13' name='marchpoids' size='8' value='$marchpoids'>";
  37. echo " </td>";
  38. echo " <td>";
  39. echo "  <input type='text' maxlength='13' name='marchvol' size='8' value='$marchvol'>";
  40. echo " </td>";
  41. echo " <td>";
  42. echo"  <input type='text' maxlength='13' name='marchsurf' size='8' value='$marchsurf'>";
  43. echo " </td>";
  44. echo " <td>";
  45. echo "  <input type='text' maxlength='13' name='marchval' size='8' value='$marchval'>";
  46. echo" </td>";


 
Et lorsqu'ils ont modifié les 4 lignes(s'ils se sont plantés sur les 4...), je voudrais qu'il update ces 4 lignes dans ma table marchandise.
 
Voilà, la suite vous la connaissez...il ne me corrige qu'une seule ligne... losque je lance mon update.
il n'y a pas un moyen de faire une boucle ou kelke chose comme ca ?
 
Merci

n°640653
dropsy
et bonne chance surtout...
Posté le 12-02-2004 à 16:38:06  profilanswer
 

darxmurf >
jsais pas [:proy]
il a pê plusieurs fois le même marchid dans sa table, mais dans ce cas, sa première requête devrais toutes les mettre à jour...
 


Message édité par dropsy le 12-02-2004 à 16:39:03
n°640663
dropsy
et bonne chance surtout...
Posté le 12-02-2004 à 16:41:36  profilanswer
 

dans ton formaulaire html, tu as pls input avec le même nom avec ta façon de procéder ;)
c'est à ce niveau là qu'il faut que tu fasses tes modifs ;)

mood
Publicité
Posté le 12-02-2004 à 16:41:36  profilanswer
 

n°640667
samesoule1​977
Posté le 12-02-2004 à 16:46:10  profilanswer
 

dropsy a écrit :

dans ton formaulaire html, tu as pls input avec le même nom avec ta façon de procéder ;)
c'est à ce niveau là qu'il faut que tu fasses tes modifs ;)


oui mais ils ont tous un id différent, ca devrait suffir à les différencier dans la table non ?

n°640693
dropsy
et bonne chance surtout...
Posté le 12-02-2004 à 17:13:18  profilanswer
 

tu n'as pas d'id dans tes balise input :heink:
 
regarde le code html généré ;)

n°641227
darxmurf
meow
Posté le 13-02-2004 à 08:09:43  profilanswer
 

Hu en passant tu peux corriger ça :
 

Code :
  1. $num_results = mysql_num_rows($result);
  2. for ($i=0; $i <$num_results; $i++)
  3. {
  4.   my_array = mysql_fetch_array($result);
  5. ...


 
par ça :
 

Code :
  1. while ($my_array = mysql_fetch_array($result))
  2. {
  3. ...


 
ça t'enlève 1 ou 2 lignes, c'est plus simple ...


Message édité par darxmurf le 13-02-2004 à 08:10:11

---------------
Des trucs - flickr - Instagram
n°641228
darxmurf
meow
Posté le 13-02-2004 à 08:13:54  profilanswer
 

hm moi je verrais un truc dans le genre ça :
tu ajoute à la fin de chaque input un numéro
 
genre :  
echo "   <input type='text' maxlength='5' name='marchid$i' size='5' value='$marchid' >";
 
comme ça à chaque passage dans la boucle ton input prendre un nom différent
marchid1
marchid2
...
 
une fois le truc modifié, quand le mec valide, tu passe dans la page suivante la valeur de $i comme ça tu sais combien de lignes ont été modifiées et il te reste plus qu'à faire ton UPDATE en fonction de ça...


Message édité par darxmurf le 13-02-2004 à 08:14:33

---------------
Des trucs - flickr - Instagram
n°645877
samesoule1​977
Posté le 17-02-2004 à 18:44:07  profilanswer
 

darxmurf a écrit :

hm moi je verrais un truc dans le genre ça :
tu ajoute à la fin de chaque input un numéro
 
genre :  
echo "   <input type='text' maxlength='5' name='marchid$i' size='5' value='$marchid' >";
 
comme ça à chaque passage dans la boucle ton input prendre un nom différent
marchid1
marchid2
...
 
une fois le truc modifié, quand le mec valide, tu passe dans la page suivante la valeur de $i comme ça tu sais combien de lignes ont été modifiées et il te reste plus qu'à faire ton UPDATE en fonction de ça...


 
 
merci,
 
j'ai modifié mon formulaire ainsi :
 

Code :
  1. echo "   <input type='text' maxlength='5' name='marchid".$i."' size='5' value='$marchid' >";
  2.   echo " </td>";
  3.   echo "    <td >";
  4.     echo "   <input type='text' maxlength='15' name='marchnum".$i."' size='13' value='$marchnum' >";
  5.   echo " </td>";
  6. ...


 
effectivement, maintenant, ils ont un nom différent,mais maintenant, j'ai un problème pour récupérer les noms dans mon update  
 

Code :
  1. $query = "update marchandises
  2. set  marchnum='".$marchnum.$i."', marchtype='".$marchtype.$i."',
  3. marchcont='"$marchcont.$i"', marchqte='"$marchqte.$i"', marchpoids='$marchpoids.$i',
  4. marchvol='$marchvol'.$i, marchsurf='$marchsurf'.$i, marchval='$marchval'.$i,
  5. marchdaterec='$marchdaterec'.$i, marchconnu='$marchconnu'.$i,
  6. marchdep='$marchdep'.$i
  7. where marchid='$marchid'.$i";
  8. $result = mysql_query($query);


 
si je met ca,'".$marchnum.$i."', il ne me récupère aucune donnée.
Quelle est la bonne formulation ?
j'ai essaye avec $_POST['".$marchnum.$i."'] mais ca marche pas non plus
 
merci


Message édité par samesoule1977 le 17-02-2004 à 18:49:43
n°646088
darxmurf
meow
Posté le 17-02-2004 à 22:27:31  profilanswer
 

hello,
 
2 choix :
 
1) il faut "magouiller" avec les noms :/
essaye de jouer avec $$var

Code :
  1. <?php
  2. $mavar1 = "youhouhou";
  3. $i = 1;
  4. $temp = "mavar".$i;
  5. echo $$temp;
  6. ?>


explication : dans la variable temp j'y pose le nom de la première variable "mavar" et j'y ajoute 1 donc $temp vaudra "mavar1". En faisant $$temp il va en fait faire $mavar1...
 
sinon tu peux faire echo ${'marchnum'.$i};
et ça marche aussi ...


---------------
Des trucs - flickr - Instagram

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] Problème update

 

Sujets relatifs
Applet : Probleme graphique entre JV Microsoft et JV SUNProblème video + mouselistener
Comment désactiver le mail de confirmation sous PHP-NUKE 7 ???????????[JAVA]Probleme de Thread
[PHP] [MYSQL] requête sur partie de la date?Probleme dans le web.xml
[PHP] Manière de crypter efficacement un mot de passepseudo-frame en PHP, probléme
Problème requête SQL (Ms SQL 2000)[PHP/MySQL]Problème d'UPDATE avec une variable contenue dans l'url
Plus de sujets relatifs à : [PHP] Problème update


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR