Problème envoi vers bdd pour commande

Fermé
guigeek Messages postés 18 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 août 2008 - 27 juin 2007 à 16:26
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 - 29 juin 2007 à 17:06
bonjour
j'ai un tableau qui recoit les produits de la base "framedisprod"
je voudrais que quand le client clique sur ajouter au panier, ca envoi le produit sélectionné vers la base de données "framedisboncom"
mais ca ne marche pas
"framedisprod" est la base données où sont stockés les produits
<tbody>
		<form method="post" action="indexalpha.php">
		<?php 
//Connexion base de données 
$cnx = @mysql_connect("***", "framedisprod", "***") or die (mysql_error()); // Connexion à MySQL
mysql_select_db("framedisprod", $cnx);
$reponse = mysql_query("SELECT NomProduit,PrixUnitaireTTC,Dosage,Description,Utilisation,Composition FROM Produit") or die (mysql_error()); 
while ($donnees = mysql_fetch_array($reponse)) 
{ 
 echo "<tr>";
 echo "<td>".$donnees['NomProduit']."</td>";
 echo "<td>".$donnees['PrixUnitaireTTC']." €</td>";
 echo "<td>".$donnees['Dosage']."</td>";
 echo "<td>".$donnees['Description']."</td>";
 echo "<td>".$donnees['Utilisation']."</td>";
 echo "<td>".$donnees['Composition']."</td>";
 echo "<td>"?><input type='submit' name='envoyer' value='Ajouter au panier'>
<?
$cnx2=mysql_connect("***", "framedisboncom", "***");
mysql_select_db("framedisboncom",$cnx2);
$nomprod=$donnees['NomProduit'];
$prix=$donnees['PrixUnitaireTTC'];
mysql_query("INSERT INTO Produit VALUES('$nomprod','$prix')");
mysql_close();
"</td>";
 echo "</tr>";
 }
 ?>

6 réponses

Doctor C Messages postés 627 Date d'inscription mardi 12 juin 2007 Statut Membre Dernière intervention 19 février 2016 398
27 juin 2007 à 17:37
Je sais pas si ta table Produit possède plus de deux valeurs mais si oui, il faudrait que tu spécifies lesquelles tu veux insérer dans ta requête. Ex :

mysql_query("INSERT INTO Produit(nomProduit, prix) VALUES('$nomprod','$prix')");

Si ta table contient seulement 2 valeurs (nomprod et prix), laisse tomber ce que je viens de dire)

et quand tu dis que ça marche pas, as-tu un message d'erreur? ou rien ne se passe?
0
guigeek Messages postés 18 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 août 2008 2
28 juin 2007 à 16:11
bon en fait j'ai changé quelques trucs
maintenant j'ai tout dans la bdd framedisprod
ca envoi bien dans la table BonCommande mais le problème c'est que ca envoi TOUS les produits que j'ai dans mon array et en 2 ou 3 exemplaires chacun !

<form action="indexalpha.php">
		<?php 
$cnx = mysql_connect("***", "framedisprod", "***") or die (mysql_error()); 
mysql_select_db("framedisprod", $cnx);
$reponse = mysql_query("SELECT NomProduit,PrixUnitaireTTC,Dosage,Description,Utilisation,Composition FROM Produit") or die (mysql_error()); 
while ($donnees = mysql_fetch_array($reponse)) 
{ 
 echo "<tr>";
 echo "<td>".$donnees['NomProduit']."</td>";
 echo "<td>".$donnees['PrixUnitaireTTC']." €</td>";
 echo "<td>".$donnees['Dosage']."</td>";
 echo "<td>".$donnees['Description']."</td>";
 echo "<td>".$donnees['Utilisation']."</td>";
 echo "<td>".$donnees['Composition']."</td>";
 echo "<td>"?><input type='submit' name='envoyer' value='Ajouter au panier'>
<?
$nomprod=$donnees['NomProduit'];
$prix=$donnees['PrixUnitaireTTC'];
mysql_query("INSERT INTO BonCommande (NoProd, NomProd, Prix, Quantite) VALUES('', '$nomprod', '$prix', 1)");
"</td>";
 echo "</tr>";
 }
mysql_close();
 ?>
          </form>
0
guigeek Messages postés 18 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 août 2008 2
29 juin 2007 à 14:18
Est-ce que quelqu'un peu m'aider ?
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
29 juin 2007 à 15:54
J'ai peut-être mal saisi un truc, mais j'ai beau lire et relire ton script, je n'arrive pas à comprendre comment tu espères transmettre l'id de l'article à ajouter au panier.

À l'heure actuelle tu as un script php qui récupère les données de ta table, qui les présente dans un tableau HTML, puis à la suite un autre script php qui insère ces même données dans une autre table.
Le but du jeu, c'est de déclencher ce deuxième script seulement si l'utilisateur clique sur le bouton adéquat. C'est donc toute la logique de ton script qu'il faut revoir.

D'autre part, à quoi bon réenregistrer le prix et le nom du produit dans ta base de bon de commande, puisque ces données sont déjà présentes dans la première base et peuvent être liées grâce à l'id de l'article ?
Et enfin, à quoi ça sert de préciser la quantité si à aucun moment il est prévu de pouvoir l'incrémenter ?

Soit tu n'as pas posté l'ensemble de ton script, ou soit tout est à revoir...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guigeek Messages postés 18 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 15 août 2008 2
29 juin 2007 à 16:17
je ne vois pas où est le problème dans la logique de mon script
ce que je veux c'est que quand le client clique sur 'Ajouter au panier', ca ajoute dans la bdd BonCommande pour après pouvoir récupérer ces données dans le panier (d'ailleurs il y a peut-etre un moyen plus simple d'y arriver)
pour la quantité j'en ai peut-etre pas besoin effectivement, l'incrémentation ne se passera que dans le panier
0
flokocha Messages postés 1510 Date d'inscription lundi 8 mars 2004 Statut Membre Dernière intervention 10 octobre 2015 281
29 juin 2007 à 17:06
Ça c'est la logique de ton esprit, mais pas celle que tu as retranscrit dans ton script.

Comment ton bouton est lié à une quelconque action dans ce script ?

La seule action liée à ton bouton est de se rendre à l'url "indexalpha.php", en ne lui passant aucune donnée.
Et ton script d'enregistrement de commande n'est lié à aucune condition.

Admettons que ce script soit situé sur la page "indexalpha.php", voilà ce qu'il faudrait :

<form action="indexalpha.php" method="post">
		<?php 
$cnx = mysql_connect("***", "framedisprod", "***") or die (mysql_error()); 
mysql_select_db("framedisprod", $cnx);
$reponse = mysql_query("SELECT NoProd,NomProduit,PrixUnitaireTTC,Dosage,Description,Utilisation,Composition FROM Produit") or die (mysql_error()); 
while ($donnees = mysql_fetch_array($reponse)) 
{ 
 echo "<tr>";
 echo "<td>".$donnees['NomProduit']."</td>";
 echo "<td>".$donnees['PrixUnitaireTTC']." €</td>";
 echo "<td>".$donnees['Dosage']."</td>";
 echo "<td>".$donnees['Description']."</td>";
 echo "<td>".$donnees['Utilisation']."</td>";
 echo "<td>".$donnees['Composition']."</td>";
 echo "<td><input type='hidden' name='ajout' value='".$donnees['NoProd']."'>
<input type='submit' name='envoyer' value='Ajouter au panier'></td></tr>";
}
echo "</form>";

if(isset($_POST["ajout"])) {
  mysql_query("INSERT INTO BonCommande (NoProd) VALUES('$_POST["ajout"]');
}

mysql_close();
 ?>


Voilà à quoi ça pourrait ressembler. Maintenant il te reste à gérer les quantités.
D'autre part je ne sais pas à quoi est destiné ce script, mais si plusieurs utilisateurs sont susceptibles d'effectuer une commande, il pourrait être intéressant de savoir à qui correspond chaque commande...
0