Mon panier

Eléphant du PHP | 145 Messages

07 févr. 2007, 17:49

Bonjour,

Après avoir régler mon problème de formulaire et que tout va comme je le veux, il faut que je rajoute un système de panier à tout ça mais je cherche et je ne sais pas par où commencer ni comment y proceder.

Je vais vous presenter mon code et ma base :
<?php
@$form1 = $_GET['type'];
$_GET['type'] = $form1;
@$form2 = $_GET['cartouche'];
$_GET['cartouche'] = $form2;
@$form3 = $_GET['Ref'];
$_GET['Ref'] = $form3;
$based = "localhost";
$admin = "root";
$password = "";
$bdd = "base";
$connect = mysql_connect($based,$admin,$password);
mysql_select_db($bdd, $connect) or die("Impossible de se connecter");
echo '<form id="menuselect1" action="'.$_SERVER['PHP_SELF'].'" method="get"> 
<div align="center">
<select name="type" onchange="document.forms[\'menuselect1\'].submit()"> ';
$base = "SELECT DISTINCT Types FROM tarif$";
$req = mysql_query($base) or die('Erreur SQL !'.$sql.''.mysql_error());
echo '<option selected="selected">'.$form1.'</option>';
while($data = mysql_fetch_array($req)){
echo '<option>'.$data['Types'].'</option>';
}
echo '</select>
<noscript><input type="submit" name="ok" value="ok" /></noscript>';
if ($form1 == "") {
die();
}
else {
	echo '<select name="cartouche" onchange="document.forms[\'menuselect1\'].submit()"> '; 
	$base2 = "SELECT DISTINCT (Marques) FROM tarif$ WHERE Types = '$form1'";
	$req2 = mysql_query($base2) or die('Erreur SQL !'.$sql.''.mysql_error());
	echo '<option selected="selected">'.$form2.'</option>';
	while($data2 = mysql_fetch_array($req2)){
	echo '<option>'.$data2['Marques'].'</option>';
	}
	echo '</select>
	<noscript><input type="submit" name="ok" value="ok" /></noscript>';
		if ($form2 == "") {
		die();
		}
		else{
		echo '<select name="Ref" onchange="document.forms[\'menuselect1\'].submit()">';
		mysql_select_db($bdd) or die("Impossible de se connecter");
		$base3 = "SELECT DISTINCT (Ref) FROM tarif$ WHERE Marques = '$form2' AND Types = '$form1'";
		$req3 = mysql_query($base3) or die('Erreur SQL !'.$sql.''.mysql_error());
		echo '<option selected="selected">'.$form3.'</option>';
		while($data3 = mysql_fetch_array($req3)){
		echo '<option>'.$data3['Ref'].'</option>';
		}
		echo '</select>
		</form>';
			if ($form3 == "") {
			die();
			}
			else {
			echo '<table width="673" height="78" border="1">
  			<tr align="center" valign="middle">
    		<td width="100" height="40"><strong>Type de Produit </strong></td>
    		<td width="100" height="40"><strong>Marques du Fabriquant </strong></td>
    		<td width="100" height="40"><strong>R&eacute;f&egrave;rence du produit </strong></td>
    		<td width="100" height="40"><strong>Observation</strong></td>
			<td width="100" height="40"><strong>Code OEM</strong></td>
    		<td width="100" height="40"><strong>Prix HT en &euro; </strong></td>
    		<td width="100" height="40"><strong>Ajouter au panier </strong></td>
  			</tr>';
			$base4 = "SELECT * FROM tarif$ WHERE Ref = '$form3' AND Marques = '$form2' AND Types = '$form1'";
			$req4 = mysql_query($base4) or die('Erreur SQL !'.$sql.''.mysql_error());
			while($data4 = mysql_fetch_array($req4)){
  			echo '<tr align="center" valign="middle">
    		<td width="100" height="40"><strong>'.$data4['Types'].'</strong></td>
    		<td width="100" height="40"><strong>'.$data4['Marques'].'</strong></td>
    		<td width="100" height="40"><strong>'.$data4['Ref'].'</strong></td>
    		<td width="100" height="40"><strong>'.$data4['Observations'].'</strong></td>
			<td width="100" height="40"><strong>'.$data4['CODE OEM'].'</strong></td>
    		<td width="100" height="40"><strong>'.$data4['PRIX'].'</strong></td>
    		<td width="100" height="40"><form id="panier" name="panier" method="POST" action="">
	  		<input type="submit" value="Ajouter"/>
    		</form></td>';
			} 
			}
		}
}
?>
Voila, et ma base incomplete peut etre telecharger sous forme de texte sur mon site : http://shishiza90.descis.info/base.txt.

Pour vous faciliter la tache, il y a deux produit qui s'affiche pour : Matricielle => ADP => Printronix
cela peut permettre de tester le script et comment ça sera avec la base complete que je n'ai pas d'ailleur...

Merci pour vos réponses ;)
La culture, c'est comme la confiture, moins on en a, plus on l'étale.

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

07 févr. 2007, 18:33

Modération :
PHPFrance n'est pas un site de distribution de scripts gratuits,
ni de débuggage de scripts téléchargés et utilisés sans compréhension.

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

Eléphant du PHP | 145 Messages

07 févr. 2007, 18:38

gné???
Je ne veux pas qu'on me donne un script ou qu'on débug celui là, mon script fonctionne très bien, je veux juste qu'on m'aiguille sur une possibilité d'adapter un panier avec ce présent ^^.

Mais pour ça, faut bien que je fournisse des informations telle que la constitution de ma base ainsi que mon script.

Donc si quelqu'un veut bien m'aider ?

Merci de vos réponses ;)...
La culture, c'est comme la confiture, moins on en a, plus on l'étale.

Mammouth du PHP | 19672 Messages

07 févr. 2007, 21:03

Une petite recherche sur le forum t'aurait fait découvrir un tuto sur le sujet, enfin je dis ça, mais encore faut-il penser à utiliser la recherche.... :-*
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 145 Messages

08 févr. 2007, 11:05

Bah j'ai fais une recherche, et j'était deja tombé sur un sujet appelé panier et y avais aussi le liens que tu viens de me donner mais dans ton tuto, si c'est le tiens :), je ne comprend pas très bien le principe, que signifie les select etc....
C'est pour ça que je post pour savoir si un système de panier est adaptable sur mon script et si non, bah quesqu'il faut changer?

Merci de vos réponses ;)...

PS: t'inquiete, je cherche de mon coté, je n'ai que ça a faire de toute façon, je ne vais pas attendre que le script vienne a moi et mon but ce n'est pas de recopier ni en avoir un sans comprendre, mais mon but c'est de le faire moi même et que je sais se que je fais pour pouvoir ensuite l'expliquer à ma prochaine soutenance qui compte pour mon examun ^^.
La culture, c'est comme la confiture, moins on en a, plus on l'étale.

Eléphant du PHP | 145 Messages

08 févr. 2007, 11:57

Voila, je suis en train de resuivre le tuto et je retombe toujours sur le même problème depuis hier.

j'en suis ici :
<?php 
/* Démarrage ou prolongation de la session */ 
session_start(); 
/* Article exemple */ 
$select = array(); 
$select['id'] = "phlevis501"; 
$select['qte'] = 2; 
$select['taille'] = "56"; 
$select['prix'] = 84.95; 

/* On vérifie l'existence du panier, sinon, on le crée */ 
if(!isset($_SESSION['panier'])) 
{ 
    /* Initialisation du panier */ 
    $_SESSION['panier'] = array(); 
    /* Subdivision du panier */ 
    $_SESSION['panier']['qte'] = array(); 
    $_SESSION['panier']['taille'] = array(); 
    $_SESSION['panier']['prix'] = array(); 
} 

/* Ici, on sait que le panier existe, donc on ajoute l'article dedans. */ 
array_push($_SESSION['panier']['id_article'],$select['id']); 
array_push($_SESSION['panier']['qte'],$select['qte']); 
array_push($_SESSION['panier']['taille'],$select['taille']); 
array_push($_SESSION['panier']['prix'],$select['prix']); 

/* Affichons maintenant le contenu du panier : */ 
?> 
<pre> 
<?php 
var_dump($_SESSION['panier']); 
?> 
</pre> 
mon code c'est celui là :
<?php
session_start();
$_SESSION['panier'] = array();
$_SESSION['panier']['id_article'] = array();
$_SESSION['panier']['qte'] = array(); 
$_SESSION['panier']['oem'] = array(); 
$_SESSION['panier']['prix'] = array(); 
@$form1 = $_GET['type'];
$_GET['type'] = $form1;
@$form2 = $_GET['cartouche'];
$_GET['cartouche'] = $form2;
@$form3 = $_GET['Ref'];
$_GET['Ref'] = $form3;
$based = "localhost";
$admin = "root";
$password = "";
$bdd = "base";
$connect = mysql_connect($based,$admin,$password);
mysql_select_db($bdd, $connect) or die("Impossible de se connecter");
echo '<form id="menuselect1" action="'.$_SERVER['PHP_SELF'].'" method="get"> 
<div align="center">
<select name="type" onchange="document.forms[\'menuselect1\'].submit()"> ';
$base = "SELECT DISTINCT Types FROM tarif$";
$req = mysql_query($base) or die('Erreur SQL !'.$sql.''.mysql_error());
echo '<option selected="selected">'.$form1.'</option>';
while($data = mysql_fetch_array($req)){
echo '<option>'.$data['Types'].'</option>';
}
echo '</select>
<noscript><input type="submit" name="ok" value="ok" /></noscript>';
if ($form1 == "") {
die();
}
else {
	echo '<select name="cartouche" onchange="document.forms[\'menuselect1\'].submit()"> '; 
	$base2 = "SELECT DISTINCT (Marques) FROM tarif$ WHERE Types = '$form1'";
	$req2 = mysql_query($base2) or die('Erreur SQL !'.$sql.''.mysql_error());
	echo '<option selected="selected">'.$form2.'</option>';
	while($data2 = mysql_fetch_array($req2)){
	echo '<option>'.$data2['Marques'].'</option>';
	}
	echo '</select>
	<noscript><input type="submit" name="ok" value="ok" /></noscript>';
		if ($form2 == "") {
		die();
		}
		else{
		echo '<select name="Ref" onchange="document.forms[\'menuselect1\'].submit()">';
		mysql_select_db($bdd) or die("Impossible de se connecter");
		$base3 = "SELECT DISTINCT (Ref) FROM tarif$ WHERE Marques = '$form2' AND Types = '$form1'";
		$req3 = mysql_query($base3) or die('Erreur SQL !'.$sql.''.mysql_error());
		echo '<option selected="selected">'.$form3.'</option>';
		while($data3 = mysql_fetch_array($req3)){
		echo '<option>'.$data3['Ref'].'</option>';
		}
		echo '</select>
		</form>';
			if ($form3 == "") {
			die();
			}
			else {
			echo '<table width="673" height="78" border="1">
  			<tr align="center" valign="middle">
    		<td width="100" height="40"><strong>Type de Produit </strong></td>
    		<td width="100" height="40"><strong>Marques du Fabriquant </strong></td>
    		<td width="100" height="40"><strong>R&eacute;f&egrave;rence du produit </strong></td>
    		<td width="100" height="40"><strong>Observation</strong></td>
			<td width="100" height="40"><strong>Code OEM</strong></td>
    		<td width="100" height="40"><strong>Prix HT en &euro; </strong></td>
    		<td width="100" height="40"><strong>Ajouter au panier </strong></td>
  			</tr>';
			$base4 = "SELECT * FROM tarif$ WHERE Ref = '$form3' AND Marques = '$form2' AND Types = '$form1'";
			$req4 = mysql_query($base4) or die('Erreur SQL !'.$sql.''.mysql_error());
			while($data4 = mysql_fetch_array($req4)){
  			echo '<tr align="center" valign="middle">
    		<td width="100" height="40"><strong>'.$data4['Types'].'</strong></td>
    		<td width="100" height="40"><strong>'.$data4['Marques'].'</strong></td>
    		<td width="100" height="40"><strong>'.$data4['Ref'].'</strong></td>
    		<td width="100" height="40"><strong>'.$data4['Observations'].'</strong></td>
			<td width="100" height="40"><strong>'.$data4['CODE OEM'].'</strong></td>
    		<td width="100" height="40"><strong>'.$data4['PRIX'].'</strong></td>
    		<td width="100" height="40"><form id="panier" name="panier" method="POST" action="">
	  		<input type="submit" value="Ajouter"/>
    		</form></td>';
			} 
			}
		}
}
?>
Comment je pourrais rajouter les informations dans $select appart manuellement en sachant que mon bouton ajouter pour l'instant est indépendant des articles car on voit très bien que j'affiche juste à l'aide de ma base de données et que pour l'instant mon script ressemble plus à un système de recherche qu'à un script pour vendre avec un système de panier...

Donc ma question, comment je peux inserer les valeurs dans $select[prix] par exemple pour pouvoir ensuite les rentrer dans la variable $_session ???

Merci de vos réponses ;).
La culture, c'est comme la confiture, moins on en a, plus on l'étale.

ViPHP
ViPHP | 2144 Messages

08 févr. 2007, 12:56

Petit conseil: enleve les @ devant les instructions de récupérations de variables. il ne faut pas masquer les messages d'erreurs, mais gérer le fait qu'une variable qu'on espère recevoir par post peut ne pas exister.

Il faut donc faire:
if (isset($_GET['type']))
   $form1 = $_GET['type'];
else
   $form1 = "";

Eléphant du PHP | 145 Messages

08 févr. 2007, 12:59

Et il faut que je fasse ça pour chaque variable que je transmet???
Je ne met pas d'accolade au if et else???
La culture, c'est comme la confiture, moins on en a, plus on l'étale.

ViPHP
ViPHP | 2144 Messages

08 févr. 2007, 13:06

Oui, et de manière générale, il vaut mieux aussi vérifier si ce que l'utilisateur a saisi est cohérent (je ne sais si tu le fais dans ce script) pour éviter des problèmes tel que l'injection sql.

Pas besoin d'accolade, vu qu'il n'y a qu'une seule instruction à effectuer dans les deux cas, mais ce ça ne poserait aucun problème d'en mettre.