Page 1 sur 2

Constituer un caddie à partir d'un select dans MySQL

Posté : 21 août 2007, 22:57
par tai
Bonjour,
J'ai un probleme pour remplir un caddie avec ref + qte des articles venant d'une base SQL.
Voici mon code :
$sql = "SELECT produit.id_produit, nom, description, url_photo, prix_ht 
		FROM produit,produit_categorie 
		WHERE produit.id_produit=produit_categorie.id_produit 
		AND id_categorie=$categorie";
$sth= $dbh->query($sql);
$resultat = $sth->fetchAll(PDO::FETCH_ASSOC);
foreach($resultat as $row) {
		$ref=$row['id_produit'];
		$nom=$row['nom'];
		$detail=$row['description'];
		$photo=$row['url_photo'];
		$prix=$row['prix_ht'];
		$qte = '1';
		echo "
		<tr>
		<td><img src='../img/$photo' alt='$nom' /></td>
		<td width='200'><strong>$nom</strong><br />$detail</td>
		<td>$prix HT &euro;</td>
		<td>
		<input type='hidden' name='id_produit' value='$ref' />
		<input type='hidden' name='nom_produit' value='$nom' /> x 
		<input type='text' name='quantite' value='$qte' size='2' />
// appelle le script PANIER pour ajouter un article
		<a href='panier.php?action=add&ref=$ref&qte=$qte'>
		<input name='commander' value='commander' type='button'></a>
		</td> 
		</tr>";
}
J'ai 2 problemes :
1)Quelque soit la valeur saisie par le client dans le champ quantité, le script PANIER a le
$_GET[qte] egal 1 (valeur initiale par defaut).
2) Une fois, j'affiche le panier (avec $_SESSION), comment je peux revenir sur cette page afin que le client puisse ajouter un autre article.
Merci beaucoup

Posté : 22 août 2007, 10:29
par mere-teresa
Coucou tai :)

Mon conseil : dans cette partie inverse les simples et les doubles quotes...cela te forcera, il est vrai à concaténer mais ton HTML sera valide.
   echo "
        <tr>
        <td><img src='../img/$photo' alt='$nom' /></td>
        <td width='200'><strong>$nom</strong><br />$detail</td>
        <td>$prix HT &euro;</td>
        <td>
        <input type='hidden' name='id_produit' value='$ref' />
        <input type='hidden' name='nom_produit' value='$nom' /> x 
        <input type='text' name='quantite' value='$qte' size='2' />
// appelle le script PANIER pour ajouter un article
        <a href='panier.php?action=add&ref=$ref&qte=$qte'>
        <input name='commander' value='commander' type='button'></a>
        </td> 
        </tr>"; 
Pour le reste : où sont les balises <form> et </form> ? Où est l'action ?

Re : Constituer un caddie à partir d'un select dans MySQL

Posté : 22 août 2007, 10:54
par tai
Bonjour,
Je n'ai pas mis les balises <form> car je pensais à tort que ce n'est pas necessaire :roll:
Quant à l'action, elle est dans la balise <a ref= ...> pour appeler le script PANIER.PHP qui fait
le GET des parametres transmis par <a ref =>.
Quant à inverser le simple et double quote, je ne sais pas qu'est ce que tu veux dire. Il parait
que le simple quote evite l'ajout du caractere d'echappement ...

Posté : 22 août 2007, 10:58
par mere-teresa
echo '
        <tr>
        <td><img src="../img/$photo" alt="$nom" /></td>
        <td width="200"><strong>$nom</strong><br />$detail</td>
        <td>$prix HT &euro;</td>
        <td>
        <input type="hidden" name="id_produit" value="$ref" />
        <input type="hidden" name="nom_produit" value="$nom" /> x 
        <input type="text" name="quantite" value="$qte" size="2" />
// appelle le script PANIER pour ajouter un article
        <a href="panier.php?action=add&ref=$ref&qte=$qte">
        <input name="commander" value="commander" type="button"></a>
        </td> 
        </tr>'; 

Pour l'inversion voilà ce à quoi je pensais.
ATTENTION : il va falloir concaténer les variables....

Par ailleurs, la balise form n'est pas optionnelle et est la seule manière de donner l'action d'un formulaire.

RE : Constituer un caddie à partir d'un select dans MySQL

Posté : 22 août 2007, 11:25
par tai
Salut,
OK, je vais mettre le double quote et la balise form dans mon script.. :
1) <form method="post" action="php/panier.php">
mais alors la balise
<a href='panier.php?action=add&ref=$ref&qte=$qte'>
n'a plus lieu d'exister ?? :?:
2) Comme je genere du HTML dynamique, je dois mettre \" du style :
<input type=\"text'\"...n'est ce pas ?
3) Apercu de mon script Panier :
Je recupere lesvariables en GET donc <form method="get" ..n'est ce pas ??
...
if(isset($_GET['action']) and in_array($_GET['action'],$valide))
{
        switch ($_GET['action'])
        {
                case "add":
				// $_SESSION['achats'][]= array("ref" => $ref, "qte" => $qte);
                add($_GET['ref'],$_GET['qte']);
                // aff();	
                break;                
                case "aff":
                aff();
                break;
                case "del":
                del($_GET['ref']);
                aff();
                break;
                case "modif":
                modif($_GET['ref'],$_GET['qte']);
                aff();
                break;
        }
}
else
{
// ca ne marche pas encore
   header("Location:../index.php?rubrique=produit"); 
}
?>

Re: RE : Constituer un caddie à partir d'un select dans MySQ

Posté : 22 août 2007, 11:46
par mere-teresa
Salut,
OK, je vais mettre le double quote et la balise form dans mon script.. :
1) <form method="post" action="php/panier.php">
mais alors la balise
<a href='panier.php?action=add&ref=$ref&qte=$qte'>
n'a plus lieu d'exister ?? :?:
Egg zakt
2) Comme je genere du HTML dynamique, je dois mettre " du style :
<input type="text'"...n'est ce pas ?
Ben heu, non, si la chaîne est encadrée par des simple quotes

Constituer un caddie à partir d'un select dans MySQL

Posté : 22 août 2007, 12:04
par tai
Salut,
Je mets dans <form action = get pour garder la compatibilite avec panier.php qui utilise le $_GET
ou j' utilise le action= POST et changer tout le script appelé par POST
:?:

Posté : 22 août 2007, 12:06
par mere-teresa

Help Help

Posté : 22 août 2007, 12:26
par tai
J'ai fait :
echo '
<form method="post" action="php/panier.php">
		<input type="hidden" name="id_produit" value="$ref" />
		<input type="hidden" name="nom_produit" value="$nom" /> x 
		<input type="text" name="quantite" value="$qte" size="2" />
		<input name="commander" value="commander" type="submit"></a>
';
mais apres j'ai pas d'interpretation des valeurs (ie $nom, $ref...s'affichent tels quel à l'écran !! :roll:

Posté : 22 août 2007, 12:29
par mere-teresa
Faut concaténer :)

Posté : 22 août 2007, 12:34
par zeus
Modération :
tai, afin d'améliorer la lisibilité de ton message,
pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

Elles sont disponibles au-dessus de la zone de saisie de ton message
lorsque tu postes un nouveau message.

Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ

Posté : 22 août 2007, 12:54
par tai
Ok ! je vais faire la concatenation.
Mais si j'utilise method=GET dans mon formulaire

Code : Tout sélectionner

<form
comment je dois mettre dans action =
Ce sera sous cette forme :

Code : Tout sélectionner

action=script.php?ref=$id&qte=$qte
.... ???

Posté : 22 août 2007, 14:31
par mere-teresa
Non c'est automatique! Les champs seront dans l'url.
Mets juste le nom du fichier...sans les arguments.

Posté : 22 août 2007, 14:50
par tai
Ca marche !
Merci beaucoup ! Comme je suis debutant, je cherche des fois midi à quatorze heures !!
:lol: :D

Posté : 22 août 2007, 14:52
par zeus
Modération :
tai, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.