|
|
|
|
Bonsoir
voila je fais actuellement un site de vente en ligne sous php et mysql et j'aimerai qu'on m'aide à trouver : voilà je ne sais pas comment faire pour ajouter des produits que les gens auront selectionné dans ma base de donnée et donc sur le panier d'achat (qui affiche selon la base de donnée les fiches sélectionné par l'acheteur).
les gens pour selectionnés mettent la quantité pour chaque produit que les gens veulent .. et en fait sa ajout zéro pour toutes mes variables dans ma base.
Voila si vous avez des conseils, Merci de me faire partager.
Répondre à antic80
|
Ben deja je remarque une chose. tu recupere avant ta requete la reference de l'article , la quantité et le prix avec ca
|
Deja a ce nivo
while($resultat=mysql_fetch_array($req)){
echo'<td>'.$resultat['ref_art'].'</td>';
echo'<td>'.$resultat['nom'].'</td>';
echo'<td>'.$resultat['code_catego'].'</td>';
echo'<td>'.$resultat['type_maison'].'</td>';
echo'<td>'.$resultat['description'].'</td>';
echo'<td>'.$resultat['prix'].'</td>';
echo'<td>'.$resultat['fichier_photo'].'</td>';
echo'<td><select name="qtite_com">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option></select></td></tr>';
//<input type='text' name='qtite_com' value='0'></td></tr>';
//echo"<td><input type='checkbox' name='select' value='1'></td></tr>";
echo'</center>';
}
je mettrais
while($resultat=mysql_fetch_array($req)){
$ref_art=$resultat['ref_art']
$nom=$resultat['nom']
etc....
echo'<td>'.$ref_art.'<input name="Cref_art" type='hidden' value=$Ref_art></td>';
echo'<td>'.$Nom.'<input name='Nom' type='hidden' value=$Nom></td>';
etc....
deja voir avec ca je te conseille aussi en dessous de ca $req="INSERT INTO article_com(ref_art,qtite_com,prix) VALUES('$ref_art','$qtite_com','$prix')"; de mettre echo $req; ca t'affichera sur ta page d'envoi la requete. si tu vois que après VALUES les données entre parenthèse ne sont pas celle que tu souhaite c qu'il y a un soucis voila si tu as encore besoin d'aide n'hesite pas |
Bjr,
<html> <title>panier</title> <body> <form action="enregistrer.php" method="post"> Valeur 1<input name="valeur1" type="text" value="1"><br/> Valeur 2<input name="valeur2" type="text" value="2"><br/> </form> <form action="enregistrer.php" method="post"> Valeur 3<input name="valeur3" type="text" value="3"><br/> Valeur 4<input name="valeur4" type="text" value="4"> <br/> <input type="submit" name="save" value="Enregistrer"> </form> </body> </html> et la page enregistrer.php (juste un dump des variables reçues par la méthode POST ) : <html> <title>panier enregistrer</title> <body> <pre> <?php echo var_dump($_POST); ?> </pre> </body> </html> Quoi que tu puisses renseigner dans "Valeur 1" et "Valeur 2" PHP récupèrera ceci : array(3) {
["valeur3"]=>
string(1) "3"
["valeur4"]=>
string(1) "4"
["save"]=>
string(11) "Enregistrer"
}
Bref pas de $_POST["valeur1"] ni $_POST ["valeur2"] ! Maintenant on corrige en ex 2 : <html> <title>panier</title> <body> <form action="enregistrer.php" method="post"> Valeur 1<input name="valeur1" type="text" value="1"><br/> Valeur 2<input name="valeur2" type="text" value="2"><br/> Valeur 3<input name="valeur3" type="text" value="3"><br/> Valeur 4<input name="valeur4" type="text" value="4"><br/> <input type="submit" name="save" value="Enregistrer"> </form> </body> </html> Résultat :
array(5) {
["valeur1"]=>
string(1) "1"
["valeur2"]=>
string(1) "2"
["valeur3"]=>
string(1) "3"
["valeur4"]=>
string(1) "4"
["save"]=>
string(11) "Enregistrer"
}
ah là c'est mieux, bcp mieux Mais imaginons que maintenant tu as 200 articles : pas facile de gérer 200 variables $_POST["valeur1"] .. $_POST["valeur200"] Il doit bien exister un autre moyen ? Hé bien oui ! Il suffit de ruser un peu pour générer un tableau en PHP Ex 3 : <html> <title>panier</title> <body> <form action="enregistrer.php" method="post"> Valeur 1<input name="valeur[]" type="text" value="1"><br/> Valeur 2<input name="valeur[]" type="text" value="2"><br/> Valeur 3<input name="valeur[]" type="text" value="3"><br/> Valeur 4<input name="valeur[]" type="text" value="4"><br/> <input type="submit" name="save" value="Enregistrer"> </form> </body> </html> Le résultat : array(2) {
["valeur"]=>
array(4) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
[2]=>
string(1) "3"
[3]=>
string(1) "4"
}
["save"]=>
string(11) "Enregistrer"
}
Parfait : maintenant on récupère $_POST["valeur"] qui est un tableau Appliquons ce principe à ta commande : <html> <title>panier</title> <body> <form action="enregistrer.php" method="post"> <table border="1"> <tr> <td>Réf</td> <td>Qté</td> </tr> <tr> <td>Article 1</td> <td><input name="qte[]" type="text" value="1"></td> </tr> <tr> <td>Article 2</td> <td><input name="qte[]" type="text" value="2"></td> </tr> </table> <input type="submit" name="save" value="Enregistrer"> </form> </body> </html> Résultat : array(2) {
["qte"]=>
array(2) {
[0]=>
string(1) "1"
[1]=>
string(1) "2"
}
["save"]=>
string(11) "Enregistrer"
}
Hum pas mal mais il manque la référence ! En effet on ne sait pas ici que $_POST["qte"][0] correspond à l'article 1 ... Comment faire ? Simple : PHP gère les tableaux associatifs. Alors utilisons les ! ;-) Et voilà : <html> <title>panier</title> <body> <form action="enregistrer.php" method="post"> <table border="1"> <tr> <td>Réf</td> <td>Qté</td> </tr> <tr> <td>Article 1</td> <td><input name="cde[Article 1]qte[]" type="text" value="1"></td> </tr> <tr> <td>Article 2</td> <td><input name="cde[Article 2]qte[]" type="text" value="2"></td> </tr> </table> <input type="submit" name="save" value="Enregistrer"> </form> </body> </html> le résultat : array(2) {
["cde"]=>
array(2) {
["Article 1"]=>
string(1) "1"
["Article 2"]=>
string(1) "2"
}
["save"]=>
string(11) "Enregistrer"
}
Le top : cette fois-ci dans le tableau $_POST["cde"] on récupère un tableau associatif : les clés sont les références et les valeurs les qtés. Exemple d'utilisation en modifiant enregistrer.php : <html>
<title>panier enregistrer</title>
<body>
Vous avez commandé les articles suivants : <br/>
<?php
$cde=$_POST["cde"];
foreach ($cde as $art => $qte)
{
echo "Article : ".$art." Qte : ".$qte."<br/>";
}
?>
</body>
</html>
Voilà Maintenant pour ce qui est d'identifier l'utilisateur tu devrais utiliser les sessions PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
|
Bonjour, voilà ma demande : lol
|
Bjr
<html>
<title>panier enregistrer</title>
<body>
<?php
$cde=$_POST["cde"];
// Test si au moins 1 article est commandé
$ok = false;
foreach ($cde as $art=>$donnees)
{
$qte = $donnees["qte"];
if ($qte)
{
$ok = true; // on a au moins 1 article en cde
break; // on sort de la boucle : pas la peine de continuer les tests
}
}
if ($ok) // Si au moins 1 article en cde
{
echo "Contenu de votre panier : <br />";
foreach ($cde as $art=>$donnees)
{
$prix = $donnees["prix"];
$qte = $donnees["qte"];
if ($qte)
{
// Place ici le code pour sauver dans MySQL
echo "Article : ".$art." Qte : ".$qte." Prix unitaire : ".$prix."<br />";
}
}
}
else
{
echo "Votre panier est vide !<br />";
}
?>
</body>
</html>
PhP
Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |
Merci, c'est presque sa, sauf qu'il reste un tit souci, en fait le code ne teste
<?
//permet de me connecter a ma base de donnees
include("vars.inc");
$sql="SELECT * FROM article Where article.spécialité = 'fêtes' ";
$req=mysql_query($sql)or die ("error de connexion");
echo'<center>';
echo'<font size=6>'.'Liste des articles pour les fêtes'.'</font>';
echo'<br>'.'<br>';
//creation cu tableau
include("article1.php");
?>
Article1.php: permet de lister avec mysql à travers une requete les produits
<?
//echo'<form action="ajout_annuler1.php" method="POST">';
echo'<form action="ajout_test_panier1.php" method="POST">';
echo '<table bgcolor=#CCCCFF border="1">';
//entêtes des colonnes
echo'<td>'.'reférence de article'.'</td>'.'<td>'.'nom'.'</td>'.'<td>'.'prix'.'</td>'.'<td>'.'photo'.'</td>'.'<td>'.'quantite'.'</td>'.'<tr>';
while($resultat=mysql_fetch_array($req))
{
$ref_art=$resultat['ref_art'];
$nom=$resultat['nom'];
$prix=$resultat['prix'];
//$type_maison=$resultat['type_maison'];
//$description=$resultat['description'];
$qtite_com=$resultat['qtite_com'];
$fichier_photo=$resultat['fichier_photo'];
echo"<td>$ref_art<input name='cde[art][ref_art]' type='hidden' value=$ref_art></td>";
echo"<td>$nom<input name='cde[art][nom]' type='hidden' value=$nom></td>";
echo"<td>$prix<input name='cde[art][prix]' type='hidden' value=$prix></td>";
echo"<td>$fichier_photo<input name='fichier_photo' type='hidden' value=$fichier_photo></td>";
echo"<td>$qtite_com<input name='cde[art][qtite_com]' type='text' value=$qtite_com></td></tr>";
echo'</center>';
}
echo'</table>';
echo'<br>';
echo'<br>';
echo '<table align=left><tr><td>
<td align=right><input type="submit" name="save" value="Ajouter articles dans le panier"></td></tr></form>
<div align=left><a href="pageprincipale4.php">retour page principale</a></div></td>
</table>';
?>
Ajout_test_panier1.php : tester la quantité , et le panier d'achat
<pre>
<?php
echo var_dump($_POST);
?>
</pre>
<?
//foreach ($com as $ref_art => $qtite_com)
//{ echo "Article : ".$ref_art." Nom : ".$nom." Prix : ".$prix." quantité : ".$qtite_com."<br/>"; }
//$info = array ("ref_art" =>"ref_art","qtit_com" =>"qtite_com","prix" => "prix","nom" => "nom");
$cde=$_POST["cde"];
// Test si au moins 1 article est commandé
$ok = false;
foreach ($cde as $art=>$donnees)
{
$qtite_com = $donnees["qtite_com"];
if ($qtite_com)
{
$ok = true; // on a au moins 1 article en cde
break; // on sort de la boucle : pas la peine de continuer les tests
}
}
if ($ok) // Si au moins 1 article en cde
{
echo "Contenu de votre panier : <br />";
foreach ($cde as $art=>$donnees)
{
$ref_art=$donnees["ref_art"];
$nom=$donnees["nom"];
$prix = $donnees["prix"];
$qtite_com = $donnees["qtite_com"];
if ($qtite_com)
{
// Place ici le code pour sauver dans MySQL
echo "<table><tr><td>Article : ".$ref_art."</tr><tr><td>
Nom : ".$nom."</tr><tr><td> Quantité : ".$qtite_com."
</tr><tr> <td>Prix : ".$prix." </tr></table><br/>";
//echo "Article : ".$ref_art." Quantite : ".$qtite_com." Prix unitaire : ".$prix."<br />";
}
}
}
else
{
echo "Votre panier est vide !<br />";
}
?>
Merci, de continuer à m'aider, c'est trés trés Gentil ! |
Bsr
echo"<td>$ref_art<input name='cde[art][ref_art]' type='hidden' value=$ref_art></td>"; Dans ta boucle tu donnes le même nom à tous tes champs ici pour la référence article "cde[art][ref_art]" . Donc au final même si PHP recoit plusieurs variables comme elles portent le même nom , la dernière gagne (les autres sont écrasées) ! Voici le code corrigé : echo"<td>$ref_art<input name='cde[".$ref_art."][ref_art]' type='hidden' value=$ref_art></td>"; Fait de même avec tes autres champs. j'espère que dans $ref_art tu n'as pas de caractères "bizarre" du type espace, "%" etc ... on ne sait jamais mais ca pourrait éventuellement gêner PHP Pour les informations, je pensais plus à ce genre de chose (LOL) : un export de la structure des tables que tu utilises réalisé à partir de PhpMyAdmin. D'ailleurs je ne serais trop te conseiller de faire au moins un export des structures de ta base afin d'avoir une sauvegarde ! En effet si pour une raison quelconque le serveur MySQL connaissait une défaillance tu devrais recréer ta base avec toutes ses tables et tous ses champs de A à Z ! Autant t'éviter cette corvée ingrate ... Ex d'export : Base de données test - Table essai sur le serveur localhost # phpMyAdmin SQL Dump # version 2.5.3 # http://www.phpmyadmin.net # # Serveur: localhost # Généré le : Mardi 06 Juin 2006 à 21:50 # Version du serveur: 4.0.15 # Version de PHP: 4.3.3 # # Base de données: `test` # # -------------------------------------------------------- # # Structure de la table `essai` # CREATE TABLE `essai` ( `fld_int` int(11) NOT NULL default '0', `fld_date` date NOT NULL default '0000-00-00', `fld_time` time NOT NULL default '00:00:00', `fld_datetime` datetime NOT NULL default '0000-00-00 00:00:00', `fld_text` varchar(100) NOT NULL default '' ) TYPE=MyISAM; PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |
OUI sa y es , c'est la 2eme solution, j'ai trouvé, c'est comme je veux, merci BEAUCOUP !
|
Mon probléme maintenant, c'est qu'une fois que je vois mon panier avec les articles je voudrais valider mon achat en appuyant sur le bouton ajouter articles dans bd mais il y a une erreur : en fait la requete ne reconnait pas les articles de mon panier,elle ne les prend pas et donc ne les ajoute pas, en fait elle fait comme si il n'y avait aucun article sélectionné ..
<pre>
<?php
//echo var_dump($_POST);
?>
</pre>
<?
//foreach ($com as $ref_art => $qtite_com)
//{ echo "Article : ".$ref_art." Nom : ".$nom." Prix : ".$prix." quantité : ".$qtite_com."<br/>"; }
//$info = array ("ref_art" =>"ref_art","qtit_com" =>"qtite_com","prix" => "prix","nom" => "nom");
$cde=$_POST["cde"];
// Test si au moins 1 article est commandé
$ok = false;
foreach ($cde as $art=>$donnees)
{
$qtite_com = $donnees["qtite_com"];
if ($qtite_com)
{
$ok = true; // on a au moins 1 article en cde
break; // on sort de la boucle : pas la peine de continuer les tests
}
}
if ($ok) // Si au moins 1 article en cde
{ echo'<form action="ajout_bd.php" method="POST">';
echo "Contenu de votre panier : <br />";
foreach ($cde as $art=>$donnees)
{
$ref_art=$donnees["ref_art"];
$nom=$donnees["nom"];
$prix = $donnees["prix"];
$qtite_com = $donnees["qtite_com"];
if ($qtite_com)
{
// Place ici le code pour sauver dans MySQL
echo "<table><tr><td>Référence d'article : ".$ref_art."</td></tr><td>
Nom : ".$nom."</td></tr><td> Quantité : ".$qtite_com." </td></tr>
<td>Prix : ".$prix." </td></tr></tr></table><br/>";
//echo "Article : ".$ref_art." Quantite : ".$qtite_com." Prix unitaire : ".$prix."<br />";
}
}
}
else
{
echo "Votre panier est vide !<br />";
}
echo'<td align=right><input type="submit" name="save" value="Ajouter articles dans bd"></td></tr></form>';
?>
et là c'est mon fichier qui devrait ajouter mes articles ds ma base de donnée ..
<code>
<?
$ref_art=$_POST['ref_art'];
$qtite_com=$_POST['qtite_com'];
$prix=$_POST['prix'];
{
include("vars.inc");
$req="INSERT INTO article_com(ref_art,qtite_com,prix) VALUES('$ref_art','$qtite_com','$prix') ";
mysql_query($req) or die('erreur');
echo"<br>ajout effectuer";
}
?>
Merci de continuer, a m'aider , c'est trés trés gentil, STP ... aide moi .
</code> |
Bonsoir,
echo "<table><tr><td>Référence d'article : ".$ref_art."</td></tr><td> Nom : ".$nom."</td></tr><td> Quantité : ".$qtite_com." </td></tr> <td>Prix : ".$prix." </td></tr></tr></table><br/>"; Ecris : echo "<table><tr><td>Référence d'article : ".$ref_art. "<input name='cde[".$ref_art."][ref_art]' type='hidden' value=".$ref_art."></td></tr><td> Nom : ".$nom."</td></tr><td> Quantité : ".$qtite_com. "<input name='cde[".$ref_art."][qtite_com]' type='hidden' value=".$qtite_com."></td></tr> <td>Prix : ".$prix." <input name='cde[".$ref_art."][prix]' type='hidden' value=".$prix."</td></tr></tr></table><br/>"; Sauf erreur ca devrait fonctionner. Bon maintenant ta page ajout_bd.php Tu ne fais aucune boucle : pas de foreach , ni de while ni rien .... Certe PHP est un langage puissant mais là il va qd même falloir que tu l'aides un peu ! LOL Il ne peut pas deviner que tu souhaites enregistrer une liste d'articles donc exécuter plusieurs fois ta requête Note que tu ne peux pas appeller un formulaire en boucle : tu dois donc appeller un seul formulaire, transmettre toutes les données à l'intérieur et effectuer la boucle par programmation avec PHP Comment faire la boucle en PHP ? Ben tu as déjà la réponse : avec un foreach comme pour l'affichage du panier naturellement ! Ce qui peut donner : <?php
include("vars.inc");
$cde=$_POST["cde"];
foreach ($cde as $art=>$donnees)
{
$ref_art=$donnees["ref_art"];
$prix = $donnees["prix"];
$qtite_com = $donnees["qtite_com"];
if ($qtite_com) // si qté différente de zéro
{
// Exécute une requête pour chaque article
$req="INSERT INTO article_com(ref_art,qtite_com,prix) VALUES('".$ref_art."',".$qtite_com.",".$prix.") ";
mysql_query($req) or die('erreur');
}
}
echo"<br>ajout effectuer";
?>
Sous toute réserve ! Surtout que j'ignore ce que contient vars.inc La connexion à ta base de données je suppose ... Mais c'est l'idée. Cependant il y a un truc qui ne colle pas : nulle part je ne vois de numéro de commande ? PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ...
|
Bonjour, PHP
|
Dans la table com_online, le champ num_com en auto incrément c'est OK
|
Bonsoir,
|
Bonjour,
<?php
include("vars.inc");
// Création de la cde
// ATTENTION : à toi de complèter le code !
$req = "INSERT INTO com_online (date_com, ... , telephone) VALUES(";
$req .= date('Ymd',time()).",";
...
$req .= "'".$telephone."'";
$req .= ")";
mysql_query($req) or die('erreur');
// On récupère le dernier nr de commande = lastinsert id LAST_INSERT_ID() syntaxe MySQL
$num_com = mysql_insert_id();
echo"<br>Cde ".$num_cde." créée";
$cde=$_POST["cde"];
foreach ($cde as $art=>$donnees)
{
$ref_art=$donnees["ref_art"];
$prix = $donnees["prix"];
$qtite_com = $donnees["qtite_com"];
if ($qtite_com) // si qté différente de zéro
{
// Exécute une requête pour chaque article
$req="INSERT INTO article_com(ref_art,num_cde,qtite_com,prix) VALUES('".$ref_art."',".$num_com.",".$qtite_com.",".$prix.") ";
mysql_query($req) or die('erreur');
}
}
echo"<br>Ajout effectué";
?>
Bien évidemment tu dois récupérer les champs, "nom","rue", "ville" depuis la table client ou à défaut demander à l'utilisateur de les resaisir dans un formulaire Tu noteras le $num_cde lors de l'INSERT dans article_com PhP Il y a 10 types de personnes dans le monde : ceux qui comprennent le binaire et les autres ... |