Page 1 sur 1
Update de plusieurs champs
Posté : 12 avr. 2011, 12:40
par Al PiGiNo
Me revoilà, après avoir régler les détails de Joomla, je retombe sur le même problème qu'avant :
Je gère un formulaire de quantités, suivant l'utilisateur connecté, il a un numéro de commande et ça me sort la liste des produits de ce monsieur + la quantité.
Pour la mise à jour finale, j'ai un soucis, le PHP rentre dans le isset mais pas dans le while, et je ne sais pas si ma méthode est la bonne
$req=mysql_query('SELECT product_libelle, product_description, order_product_qte
FROM cc_futur_product fp, cc_order_product op, cc_order o
WHERE o.order_id= 1
AND op.order_id=o.order_id
AND product_id=op.order_product_id');
echo '<form method="get" name="form" action="">';
echo '<table ><caption>Form</caption><tr><th>Nom</th><th>Description</th><th>Quantités</tr>';
while ($result=mysql_fetch_assoc($req)) {
$boucle=$boucle+1;
echo '<tr><td>'.$result['product_libelle'].'</td>';
echo '<td>'.$result['product_description'].'</td>';
echo '<td><input type="text" name="text'.$boucle.'" value="'.$result['order_product_qte'].'"/></td></tr>';
}
echo '</table>';
echo '<input type="submit" name="envoi"/></form>';
if (isset($_GET['envoi'])) {
echo "<script>alert('ok');</script>";
while ($resulta=mysql_fetch_assoc($req))
{
echo "<script>alert('ok_while');</script>";
$bou=$bou+1;
$maj=$_GET[$bou];
mysql_query ('UPDATE order_product_quantite SET '.$maj.' ');
}
}
Re: Update de plusieurs champs
Posté : 12 avr. 2011, 13:04
par xTG
Les fonctions mysql_fetch_xxx font avancer le curseur dans la base de données.
Donc il est normal que ta seconde boucle ne trouve rien, le curseur a déjà tout parcouru !
Il faut utiliser la fonction [url=
http://fr2.php.net/manual/fr/function.m ... _data_seek()[/url] pour remettre le curseur au début.
Re: Update de plusieurs champs
Posté : 12 avr. 2011, 14:09
par Al PiGiNo
Merci, je ne connaissais pas cette fonction.

Re: Update de plusieurs champs
Posté : 12 avr. 2011, 14:29
par Al PiGiNo
Voici mon code à présent.
$boucle=0;
$bou=0;
$maj;
$req=mysql_query('SELECT product_libelle, product_description, order_product_qte
FROM cc_futur_product fp, cc_order_product op, cc_order o
WHERE o.order_id= 1
AND op.order_id=o.order_id
AND product_id=op.order_product_id');
echo '<form method="get" name="form" action="">';
echo '<table ><caption>Form</caption><tr><th>Nom</th><th>Description</th><th>Quantités</tr>';
while ($result=mysql_fetch_assoc($req)) {
$boucle=$boucle+1;
echo '<tr><td>'.$result['product_libelle'].'</td>';
echo '<td>'.$result['product_description'].'</td>';
echo '<td><input type="text" name="text'.$boucle.'d" value="'.$result['order_product_qte'].'"/></td></tr>';
}
echo '</table>';
echo '<input type="submit" name="envoi"/></form>';
if (isset($_GET['envoi'])) {
$row_number=0;
mysql_data_seek ($req ,$row_number);
echo "<script>alert('ok');</script>";
while ($result=mysql_fetch_assoc($req))
{
$bou=$bou+1;
$maj=$_GET['text'.$bou.'d'];
echo "<script>alert('bou :$bou');</script>";
echo "<script>alert('maj :$maj');</script>";
mysql_query ('UPDATE order_product_qte SET '.$maj.' WHERE order_product_qte');
}
}
Le $maj me retourne bien les bonnes valeurs, mais cela ne se change pas dans la base de données.
Je pense avoir un soucis sur la fin, mais je ne vois pas trop comment faire ici pour que la mise à jour se fasse sur le bon produits
Re: Update de plusieurs champs
Posté : 12 avr. 2011, 14:39
par macgawel
Bonjour.
Affiche ta requête, et passe-la "à la main" (dans PHPMyAdmin, par exemple)...
Re: Update de plusieurs champs
Posté : 12 avr. 2011, 14:42
par Al PiGiNo
Je comprend pas ce que tu veux dire

Re: Update de plusieurs champs
Posté : 12 avr. 2011, 15:06
par macgawel
Je comprend pas ce que tu veux dire

$requete = 'UPDATE order_product_qte SET '.$maj.' WHERE order_product_qte';
echo "<script>alert('requete :$requete');</script>";
mysql_query ($requete);}
Autre possibilité :
mysql_query ('UPDATE order_product_qte SET '.$maj.' WHERE order_product_qte') OR die ('Erreur sur la requete. Message d'erreur = '.mysql_error() );
Re: Update de plusieurs champs
Posté : 12 avr. 2011, 15:42
par Al PiGiNo
Merce de ta réponse, elle m'a bien aider.
A présent, la requete qui s'affiche est parfaite et correspond parfaitement à ce que je veux faire, seulement, la BDD ne se met pas à jour ...
Re: Update de plusieurs champs
Posté : 12 avr. 2011, 16:22
par Al PiGiNo
Voici mon code actuel :
$boucle=0;
$bou=0;
$tab=array();
$req=mysql_query('SELECT product_libelle, product_description, order_product_qte, order_product_id
FROM cc_futur_product fp, cc_order_product op, cc_order o
WHERE o.order_id= 1
AND op.order_id=o.order_id
AND product_id=op.order_product_id
ORDER BY product_id');
echo '<form method="get" name="form" action="#">';
//Entetes du tableau
echo '<table ><caption>Form</caption><tr><th>Nom</th><th>Description</th><th>Quantités</tr>';
//On recup les lignes
while ($result=mysql_fetch_assoc($req)) {
//on remplit le tableau
echo '<tr><td>'.$result['product_libelle'].'</td>';
echo '<td>'.$result['product_description'].'</td>';
echo '<td><input type="text" name="text'.$boucle.'d" value="'.$result['order_product_qte'].'"/></td></tr>';
//variable pour la vérification
$tab[$boucle]=$result['order_product_id'];
$boucle=$boucle+1;
}
echo '</table>';
echo '<input type="submit" name="envoi"/></form>';
if (isset($_GET['envoi'])) {
$row_number=0;
mysql_data_seek ($req ,$row_number);
for ($i=0; $i<mysql_num_rows($req); $i++)
{
$maj=$_GET['text'.$bou.'d'];
mysql_query ('UPDATE order_product SET `order_product_qte`="'.$maj.'" WHERE `order_product_id`="'.$tab[$bou].'" ');
$requete = 'UPDATE order_product SET `order_product_qte`="'.$maj.'" WHERE `order_product_id`="'.$tab[$bou].'" ';
echo "<script>alert('requete :$requete');</script>";
mysql_query ($requete);
$bou=$bou+1;
}
}
?>
Le msgBox me sort :
UPDATE order_product SET `order_product_qte`="30" WHERE `order_product_id`="1"
Ce qui est exactement ce que je cherche, seulement, aucune mise à jour.
Help

Re: Update de plusieurs champs
Posté : 12 avr. 2011, 16:48
par macgawel
Modifie ta requête pour faire une sélection, et voit si ça te retourne quelque chose...
SELECT * FROM order_product WHERE `order_product_id`="1"
Et essaye de la passer dans PHPMyAdmin (ou autre).
Re: Update de plusieurs champs
Posté : 12 avr. 2011, 17:02
par Al PiGiNo
En effet, la table était introuvable, evidemment car je l'avais renommé et haut et oublier ici, en tout cas merci beaucoup d'avoir pris du temps pour moi.