Constituer un caddie à partir d'un select dans MySQL

tai
Petit nouveau ! | 9 Messages

21 août 2007, 22:57

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

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2007, 10:29

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 ?
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

tai
Petit nouveau ! | 9 Messages

22 août 2007, 10:54

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 ...

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2007, 10:58

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.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

tai
Petit nouveau ! | 9 Messages

22 août 2007, 11:25

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"); 
}
?>

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2007, 11:46

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
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

tai
Petit nouveau ! | 9 Messages

22 août 2007, 12:04

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
:?:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2007, 12:06

Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

tai
Petit nouveau ! | 9 Messages

22 août 2007, 12:26

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:

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2007, 12:29

Faut concaténer :)
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 août 2007, 12:34

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

tai
Petit nouveau ! | 9 Messages

22 août 2007, 12:54

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
.... ???

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2007, 14:31

Non c'est automatique! Les champs seront dans l'url.
Mets juste le nom du fichier...sans les arguments.
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

tai
Petit nouveau ! | 9 Messages

22 août 2007, 14:50

Ca marche !
Merci beaucoup ! Comme je suis debutant, je cherche des fois midi à quatorze heures !!
:lol: :D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 août 2007, 14:52

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.
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer