Update de plusieurs champs

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Update de plusieurs champs

Re: Update de plusieurs champs

par Al PiGiNo » 12 avr. 2011, 17:02

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.

Re: Update de plusieurs champs

par macgawel » 12 avr. 2011, 16:48

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

par Al PiGiNo » 12 avr. 2011, 16:22

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

par Al PiGiNo » 12 avr. 2011, 15:42

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

par macgawel » 12 avr. 2011, 15:06

Je comprend pas ce que tu veux dire :oops:
$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

par Al PiGiNo » 12 avr. 2011, 14:42

Je comprend pas ce que tu veux dire :oops:

Re: Update de plusieurs champs

par macgawel » 12 avr. 2011, 14:39

Bonjour.

Affiche ta requête, et passe-la "à la main" (dans PHPMyAdmin, par exemple)...

Re: Update de plusieurs champs

par Al PiGiNo » 12 avr. 2011, 14:29

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

par Al PiGiNo » 12 avr. 2011, 14:09

Merci, je ne connaissais pas cette fonction. :)

Re: Update de plusieurs champs

par xTG » 12 avr. 2011, 13:04

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.

Update de plusieurs champs

par Al PiGiNo » 12 avr. 2011, 12:40

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.'  ');
}
}