Bonjour a tous,
J'essaie depuis quelque temps de mettre au point un formulaire un peu particulier pour éffectuer plusieurs enregistrements simultanés dans ma base de donnée, mais aucune solution ne semble convenir a ce que je souhaite faire, je me tourne donc vers vous en espérant que quelqu'un puisse m'apporter aide et conseil.
J'entre dans le vif du sujet, je dois finir ce boulo au plus vite et ce script non fonctionnel est en train de me rendre fou.
En gros on est sur un panier un peu particulier, car chaque produit droit apparaitre dans la bdd comme une commande a part entière, et donc chaque produit doit générer un nouvel enregistrement (exemple, si mon panier contient 5 articles, je vais avoir 5 insertions dans ma table).
Concrètement on a une série d'informations a récupérer, réunir, et balancer dans la bdd. Pour lier ces infos et les insérer, j'affiche en premier les infos qui seront insérés pour un check manuel avant insertion, ensuite je récupère mes infos dans les sessions, je les balances dans un formulaire (qui sera en hidden), puis je balance le tout dans ma table.
Le délire qui rend les choses difficile, c'est le fait que j'ai plusieurs lignes a rentrer dans ma bdd en même temps. J'ai donc une boucle sur mon formulaire ainsi qu'une boucle sur l'insertion des données.
Le problème c'est que mes scripts sont visiblement bugués quelque part et que rien ne marche...
Voila donc mon code qui récupère les différentes infos a insérer pour une validation. Le code fonctionne, mais le contenu de ma session panier s'affiche en double, y'a une petite boulette quelque part donc...
Voici maintenant le php qui traite le formulaire ci dessus pour faire les insertions multiples :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 <form name="validpanier2" method="post" action="index.php?page=validation2"> <input type="text" name="commandeslieu" value="<?php echo $_POST['commandeslieu'] ?>"> <?php if (isset($_SESSION['panier'])) { foreach ($_SESSION['panier']['id_article'] as $id) { for($i = 1; $i <= $panier_nbrprod; $i++) { print ' <div style="background-color:white; border-radius:7px; padding:20px 50px; margin:15px 0 20px 0; position:relative;"> <p style="font-weight:bold; font-size:14pt;">'. $produits[$id][2] .' - <span style="color:#00AFEA">'.$produits[$id][1].' </span></p> <br> <p>'. $_SESSION['panierdesc'. $produits[$id][0] .''] .'</p> <br> </div> <input type="text" name="commandesproduit'. $i .'" value="'. $produits[$id][1] .'"> <input type="text" name="commandescategorie'. $i .'" value="'. $produits[$id][2] .'"> <input type="text" name="commandesdetails'. $i .'" value="'. $_SESSION['panierdesc'. $produits[$id][0] .''] .'"> '; } } } ?> ... <!--contenu html --> <?php if (isset($_SESSION['panier'])) { print '<input style="float:right; margin-right:60px;" type="submit" name="Valider" value="Valider">'; } else print '<p>Aucune commande en cours</p>'; ?> </form>
La le problème c'est que la seule réponse du serveur me vient d'SQL, et qu'il s'agit d'une belle erreur sorti de nulle part (ou pas, mais vu que j'ignore d'ou elle vient... )
Erreur SQL : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2Le but est d'avoir un script qui va lister les produits de mon panier dans la premiere page, la seconde doit créer un enregistrement pour chacun d'entre eux. J'ai tenté d'inclure un $i dans mes champs pour lister mes commandes puis de faire un enregistrement pour chaque $i dans la seconde page mais... bah si ça marchait je ne serais pas ici !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 <?php $temps = intval(time()); $requete = "INSERT INTO CMS_commandes (commandes_produit, commandes_categorie, commandes_details, commandes_membre, commandes_lieu, commandes_date, commandes_validation) VALUES "; $a_ajouter = array(); while(isset($_POST['commandesproduit'][++$i])) { $a_ajouter[] = "('".mysql_real_escape_string($_POST['commandesproduit'][$i])."', '".mysql_real_escape_string($_POST['commandescategorie'][$i])."', '".mysql_real_escape_string($_POST['commandesdetails'][$i])."','".mysql_real_escape_string($_SESSION['membre_pseudo'])."', '".mysql_real_escape_string($_POST['commandeslieu'])."','".$temps."', '0' )"; } $requete .= implode(',', $a_ajouter); mysql_query($requete) or die('Erreur SQL : '.mysql_error()); ?>
Si quelqu'un voit un hic dans mon code ou a une info susceptible de m'aider, je suis preneur !
Merci d'avance !
Tyranus
Partager