cs_girvin
Messages postés15Date d'inscriptionlundi 15 août 2005StatutMembreDernière intervention26 septembre 2005
-
19 sept. 2005 à 20:00
J_G
Messages postés1406Date d'inscriptionmercredi 17 août 2005StatutMembreDernière intervention28 août 2007
-
22 sept. 2005 à 19:26
Bonjour,
J'essaye de faire un panier d'achat, cependant, je n'arrive pas à
ajouter de produit dans mon panier. J'ai bien essayer d'ouvrir les
tutos existants, mais même en payant, je ne comprend spas comment on y
accède. Je pense toutefois que mon problème est différent puisqu'il se
situe au niveau de la boucle expliquée ce-dessous.
Il existe différentes catégories de produits. L'utilisateur en choisit
une dans une liste déroulante et un tableau des différents produits de
cette catégorie s'affiche.
Pour générer ce tableau, j'ai fait une boucle (colorée en bleu
dans le code)sur ma base de données phpmyamin où se trouve ma table
produits.
Le tableau comporte plusieurs colonnes, à savoir, une photo, un
descriptif, le prix et une case (checkbox) pour ajouter un produit dans
le panier de commande.
Mais comment afficher cette sélection? (en gras dans le code).
cs_girvin
Messages postés15Date d'inscriptionlundi 15 août 2005StatutMembreDernière intervention26 septembre 2005 22 sept. 2005 à 18:59
Salut,
Je suis super contente,LE SCRIPT FONCTIONNE!!
Merci pour ton aide précieuse JG!!
J'ai juste dû modifier une chose dans la ligne d'input du checkbox, à savoir:
echo "<td></td>";
et non pas :
echo "
on ne peut peu rien mettre entre les crochets.
Je me retrouve avec un autre problème, cette fois lié à ma base de données phpmyadmin. Je n'arrive pas à lier mes tables.
J'ai un message d'erreur à l'ouverture de ma BD qui est :
<LI>
Erreur
Certaines fonctionnalités ayant trait aux tables reliées sont désactivées. Pour une analyse du problème, cliquez fr-iso-8859-1&server=1&db=goldidental&goto=db_details_structure.php ici.
</LI>
J'ai cliqué mais c en anglais, et djà qu'en francais , c pas facil!!J'ai aussi été voir sur les forums mais on m'a proposé de cliquer sur un lien nommé "gestion des relations" qui n'apparait pas chez moi.
Voilà, je tape quand même mon code ci-dessous, car j'ai encore trouvé qq petites erreurs. Mais il n'est pas encore parfait.
Encore un grand merci JG et à bientôt!
ps: Interessant ton idée de mettre en remarque le nom de la fermeture des acolades, je suis partisanne, c bien plus clair pour les relectures!
<?php
//Ouverture de la session courante
session_start();
//connexion au serveur
include('connexion.php4');
//initialisation des variables
include('variables.php');
//$pageCourante="produits" ;
include('barre_de_progression.js');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>GOLDIDENTAL:Produits</title>
<link rel="stylesheet" href="goldi.css" type="text/css" >
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<select name="tri">
<option value="0">Trier par</option>
<option value="Nom_Produit">Trier par order alphabéthique</option>
<option value="Prix_Produit">Trier par prix</option>
</select>
<!--fin div "formulaire-->
<?php
// ne construire la requete que si il y'a lieu
if(isset($_POST["envoi"])){
// connexion, si échec... Boum dehors!
$bdd = mysql_select_db('goldidental', $link)
or die($message." Erreur: La BD n'existe pas!
\n");
$message. ="envoi";
// si une categorie est définie, selectionner uniquement celle-ci
if( isset($_POST['requetes']) and $_POST['requetes']!= =0 ) {
$categorie = "WHERE Categorie='".$_POST['requetes']."'";
} else {
$categorie = "";
}
// si une méthode de tri est définie, l'utiliser
if( isset($_POST['tri']) and $_POST['tri']!=0 ) {
$tri = "ORDER BY ".$_POST['tri']." ASC";
} else {
$tri = "";
}
// construction de la requete SQL
$q="SELECT * FROM Produits ".$categorie." ".$tri;
$query = mysql_query($q, $link);
if( ($donneespresentes=mysql_num_rows($query))>0){
// On analyse le resulat de la requète
echo" Photo |Nom |
Description |Prix |\";
if(isset($_SESSION['nom'])){
echo\"Ajouter \n au panier |\";
}//fin isset session1
$nbre_pdt =0;
while ($row = mysql_fetch_assoc($query)) {
$nbre_pdt++;
echo\"----
, \";
echo\" ".$row['Nom_Produit'];"<\td>";
echo", \".$row['Description_Produit'];\"<\td>\";
echo\" ".$row['Prix_Produit'];"<\td>";
if(isset($_SESSION['nom'])){
echo ", </td>\";
}//fin isset session2
echo\"\";
}//fin while $row
echo"
";
?>
</form>
<?php
}else echo "Aucun produit n'est disponible dans cette catégorie";// fin if query
} // fin if(isset($_POST["envoi"]))
if (isset($_POST['add'])){echo'add';
if (isset ($_POST['chk']) && is_array ($_POST['chk'])) {echo'rec';
foreach($_POST['chk'] as $id_produit => $num_produit) {echo $id_produit;echo'foreach'; echo $num_produit;
$marequete="INSERT INTO goldidental.Commandes (Num_Produit)
VALUES ('$num_produit')";
if(mysql_query($marequete,$link)){
echo 'ok';
}else echo 'merdoum';mysql_error();
} // fin foreach
} // fin isset(chk)
} // fin isset(add)
if( $donneespresentes >1){
echo'Haut';
}//fin if ancre
?>
cs_girvin
Messages postés15Date d'inscriptionlundi 15 août 2005StatutMembreDernière intervention26 septembre 2005 19 sept. 2005 à 23:21
bon, j'ai retourné le problème dans tous les sens , je ne vois pas.
je ne maîtrise pas assez le php.
Le problème vient du fait que $query n'est pas reconnu (au niveau du code en gras).
J'affiche la partie modifiée de mon code mais je pense que je m'égare.
J'espère qu'il n'est pas trop brouillon.
if (isset($_POST['add'])){ echo'add';
for ($i = mysql_num_rows ($query) - 1; $i >=0; $i--) {
if (!$seek=mysql_data_seek($query,$i)){
$rows=mysql_fetch_row($seek,$i);
continue;
}
if (!($rows = mysql_fetch_assoc($query))) {
continue;
}
if(isset($_POST['choix'])){
soit
$marequete ="INSERT INTO commandes (Nom_Produit) VALUES ('".$rows['nom_produit']."')";
if(mysql_query($marequete,$link)){
echo 'ok';
}else echo 'merdoum';
}continue;
}
ou
foreach ($rows as $value){echo $rows['Nom_Produit'];
if (isset($_POST['choix'])){echo 'choix';
$marequete="INSERT INTO commandes (Nom_Produit) VALUES ('".$rows['nom_produit']."')";
if(mysql_query($marequete,$link)){
echo 'ok';
}else echo 'merdoum';
}
}
} mysql_free_result($query);
?>
cs_girvin
Messages postés15Date d'inscriptionlundi 15 août 2005StatutMembreDernière intervention26 septembre 2005 20 sept. 2005 à 11:02
hello,
J'vais essayé d'être plus claire:
La boucle while en bleu affiche un tableau avec les produits(prix,photos...) de la catégorie choisie par l'utilisateur.
La dernière ligne de la boucle est un checkbox. A coté de chaque ligne produit, l'utilisateur peu cocher cette case, signifiant qu'il veut ajouter ce produit à son caddie.
Lorsque l'utilisateur a terminé, il clique sur le bouton "add"(partie en gras).
Je voulais qu'au clic,if (isset($_POST['add'])){ mon code php vérifie dans chaque ligne si l'utilisateur a choché la case.
if(isset($_POST['choix'])){
Le problème , c'est que $query n'est pas reconnu à ce niveau du code (en gras). Mais je ne peu quand même pas le mettre dans la boucle. voilà
ca fait des semaines que je suis dessus........
cs_girvin
Messages postés15Date d'inscriptionlundi 15 août 2005StatutMembreDernière intervention26 septembre 2005 20 sept. 2005 à 14:11
Merci JG pour le temps que tu prends pour m'aider!!
Je planche sur ta proposition mais j'en arrive toujours au même problème, il ne reconnaît pas ma variable du checkbox qui est dans ce dernier cas, ' chk'.
Pour l'input, comme il est déjà dans un echo, je concatène la variable comme ceci, je pense que c'est bon?
echo" <td><form name= 'quantite' action=".$_SERVER['PHP_SELF']." method='post'>
cs_girvin
Messages postés15Date d'inscriptionlundi 15 août 2005StatutMembreDernière intervention26 septembre 2005 20 sept. 2005 à 14:16
Mais je peu peut-être remplacer le check box par un lien, de facon à rajouter les produits au fur et à mesure, de cette facon, je pourrai incorporer le code de la requete au reste du code. bon, je vais tenter mais est-ce que ca ne risque pas d'être lent pour l'utilisateur d'attendre le rechargement de la page à chaque produit ajouté?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 20 sept. 2005 à 14:35
J'ai... ;-) (du moins à mon sens)
Essaye de faire ça en xhtml, avec un en-tête xml... qui commence
par..<?xml donc...tu vas rire ;-) Une jolie parse error en
vue. (je parle des short_tags à on). xml... => xhtml, xsl, etc
etc...(qui a dit rss et soap ??)
<? echo ne marche pas sur un serveur qui n'accepte pas les short_tags.
C'est <?php echo, de ttes façons.
Et tu ne vas pas t'amuser à parser tes scripts selon le serveur sur lequel il va se retrouver, quand même?
Bref, plus lisible, c'est un avis...ça reste une question de goût.J'ai
rien contre le fait que tu trouves <?= plus lisible que <?php
echo, quoi. Mais moins portable, ça, ce n'est pas qu'un avis ni une
question de goût : c'est un fait. Et comme ça ne coûte pas
grandchose...je ne vois pas en quoi ça êne (donc, pas en quoi ça te les
brise menues, en fait, lol) (mais je compatis ;-) )
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 20 sept. 2005 à 15:47
Essentiellement parceque je n'ai pas encore croisé de serveur refusant le
"<?="...
Oui je sais, tu as raison. Mais ça viendra...ne serait-ce qu'avec
la démocratisation du xml (ça, ça a déjà bien commencé...) et donc du
xhtml : bref, du mélange des tags dans les pages. Disons que je préfère
être paré, plutôt que pris au dépourvu sur chaque de mes scripts, en
fait. Mais bon...
Je ne pige pas bien le problème de Girvin, perso. Un code plus complet seraitle bienvenu : formulaire + traitement.