|
Publicité | ||||||||||||||||||||||
|
|
#1 |
|
Membre du Club
![]() Date d'inscription: mars 2008
Messages: 87
|
Bonjour,
J'ai un formulaire avec des noms de champs établis dynamiquement, et dont les valeurs proviennent d'une table Code :
<td><input name="prod[]" type="text" id="prod[]" value="Fondant blanc" size="60" readonly> <input name="idRecord[]" type="hidden" id="idRecord[]" value="1"></td> <td><input name="qt[]" type="text" id="qt[]" value="15" size="5" readonly></td> <td><input name="cout[]" type="text" id="cout[]" size="10"></td> <td><input type="checkbox" name="tva[]" id="tva[]"></td> Deux cas de figures après:
Code :
foreach ($_POST['prod'] as $prod) { // Combien de fois le produit est présent dans la table ? $select = 'SELECT designation FROM compta WHERE designation= "'.$prod.'"'; $requete = mysql_query($select) or die('Erreur SQL!'); $nbre = mysql_num_rows($requete); // S'il est présent qu'une seule fois if($nbre == 1) { // Je fais un "simple" update $update= 'UPDATE `alimentaires`.`compta` SET `cout` = "'.$_POST['cout'].'" WHERE `compta`.`idCompt` = "'.$_POST['idRecord'].'" LIMIT 1'; $requete1 = mysql_query($update) or die('Erreur SQL!'); } // Sinon, j'effectue un calcul elseif($nbre > 1) { echo 'calcul<br>'; } } merci, |
|
|
|
|
|
#2 |
![]() Date d'inscription: septembre 2007
Localisation: Madagascar
Messages: 2 014
|
Bonjour,
$_POST['cout'] et $_POST['idRecord'] sont aussi de tableaux comme $_POST['prod']. Tu dois alors utiliser une variable que tu incrementes a chaque iteration du boucle foreach pour l'indice de ces tableaux. |
|
|
|
|
#3 |
|
Membre du Club
![]() Date d'inscription: mars 2008
Messages: 87
|
Merci! Cette réponse m'a déjà bien aidé. Mais j'ai un nouveau souci qui apparait. Pour être plus explicite, je vais me servir de copies d'écran:
![]() ![]() La première image est un formulaire généré à partir d'une table (seconde image). Les quantités sont additionnées pour l'écran si le produit est en doublon. On le voit bien dans la table : j'ai une fois de la longe de porc, mais deux fois des lardons fumés, d'où le chiffre 3 pour la quantité de lardons dans le formulaire. Le script met en relation le formulaire et la table. Il doit calculer et mettre à jour pour chaque produit le cout renseigné par l'utilisateur à l'écran. Dans la table, le prix pour la ligne 27 est correct (proportionnellement parlant) J'ai bien une quantité globale de 3 pour un cout totale de 6 euros (c'est fictif évidemment), avec une quantité de 2 pour cette ligne. Donc (2 * 6)/ 3 = 4 euros. Ce produit en croix doit être répété pour chaque ligne. La ligne 28 a été oubliée, mais pas la 29, pourquoi ? Le problème se répète pour chaque doublon de produit. Comment remédier à cela ? En espérant avoir été suffisamment clair... Le code: Code :
foreach($_POST['idRecord'] as $key => $id) { // parcours de la table pour chercher chaque quantité, de chaque produit $select = "SELECT quantite FROM `compta` WHERE `idCompt` = '".$id."'"; $requete = mysql_query($select) or die('Erreur SQL! Nous avons un problème avec la base de données.'); $data = mysql_fetch_array($requete); // calcul et mise à jour de la table $update1= "UPDATE compta SET cout='".($data['quantite'] * $_POST['cout'][$key])/ $_POST['qt'][$key]."' WHERE idCompt='".$id."'"; $requete2 = mysql_query($update1) or die('Erreur SQL! Nous avons un problème avec la base de données.'); } Dernière modification par yann18 ; 23/02/2010 à 14h21. |
|
|
|
|
|
![]() |
||
formulaire dynamique et modification de table
|
||
| Outils de la discussion | |
|
|