caddie électronique

caddie électronique - PHP - Programmation

Marsh Posté le 04-01-2009 à 02:21:08    


salut
ça fait une semaine que je travaille sur ça et j'arrive a rien Sad
j'espère qu'on pourra m'aider sur ce forum
voila ma page creation.php qui vise a crée panier et l'afficher:
 
<?php
session_start();
require('includes/connection.php');
 
//démarrage de la session
 
$ref = $_GET['prod']; //référence du produit choisi
 
if(isset($ref )){ //si $ref n'est pas vide
 
if(!isset($_SESSION['caddie'])){ //si le caddie n'a pas été encore créé
 
$_SESSION['caddie'] = array(); //création de la variable de session
 
}
 
if(isset($_SESSION['caddie'][$ref ])) { //si ce produit a déjà été choisi
 
$_SESSION['caddie'][$ref ]++; //ajoute 1 a la quantité
 
}else {
 
$_SESSION['caddie'][$ref ] = 1; //si 1er ajout, met la quantité à 1
 
}
}
 
 
//Requête pour récupérer toutes les informations des produits et calcul du prix total.
 
foreach ($_SESSION['caddie'] as $idProduit =>$quantite) {
 
$rq="SELECT * FROM produit where code_pdt='$idProduit'";
 
echo "<table border='2' width='800' height='800'>";
 
$res=mysql_query($rq)or die("erreur dans la requete" );
 
echo "<tr> <th>Nom</th> <th>prix</th> <th>quantite</th> <th>Prix total</th></tr>";
 
while ($ligne=mysql_fetch_array($res)){
 
$nom=$ligne[0];
 
$prix_unitaire=$data[4];
 
if( ! isset( $prix_total) ) $prix_total =0; // l'initialiser si elle n'existe pas
$prix_total='$prix_unitaire*$quantite';
 
if( ! isset( $icaddie) ) $caddie =0; // l'initialiser si elle n'existe pas
$caddie += $prix_totals;
echo"<tr><td>$nom</td><td>$prix_unitaire</td><td>$quantite</td><td>prix_total</td><td>$caddie dinars</td>";
echo"</tr>";
}
echo"</table>";
 
}
?>
 
 
 
voila le liende la page ki envoi vers le lien:echo'<a href="creation.php?prod=<?php echo $ligne[0];?>&qte=<?php echo $quantite;?>action=ajout">Ajouter au panier</a>';
 
 
 
 
j'espère trouver de l'aide
merci Rolling Eyes

Reply

Marsh Posté le 04-01-2009 à 02:21:08   

Reply

Marsh Posté le 04-01-2009 à 10:37:28    

Bon, commence stp par éditer ton post et mettre ton code entre balises :
[ code=php]
[/code]
Pour qu'on y voit plus clair.
Ensuite : Quel est le problème ?


Message édité par esox_ch le 04-01-2009 à 10:37:39

---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2009 à 11:34:17    

Je suis sûr qu'il est possible de réduire la portée du problème et de trouver un cas de reproduction plus élémentaire, à supposer que tu décrives quel est le problème.

 

Je suis tout aussi sûr que les phrases débutent par une majuscule et se terminent par un point.

 

Rassure-moi : tu ne vas *réellement* utiliser ce panier électronique pour vendre des marchandises dans la vraie vie? [:pingouino]

Message cité 1 fois
Message édité par sircam le 04-01-2009 à 11:34:34

---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-01-2009 à 11:40:29    

sinon donne-nous le site qu'on aille y faire un tour :pt1cable:

Message cité 1 fois
Message édité par NewsletTux le 04-01-2009 à 11:40:48

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 04-01-2009 à 11:45:54    

NewsletTux a écrit :

sinon donne-nous le site qu'on aille y faire un tour :pt1cable:


 :non: Ce n'est pas parce que le monsieur écrit mal et qu'il oublie de décrire son probème qu'il faut être méchant. :non:
 

Spoiler :

Par contre, si ce truc passe en production... [:sedna]


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-01-2009 à 11:46:54    

sircam a écrit :

Je suis sûr qu'il est possible de réduire la portée du problème et de trouver un cas de reproduction plus élémentaire, à supposer que tu décrives quel est le problème.
 
Je suis tout aussi sûr que les phrases débutent par une majuscule et se terminent par un point.
 
Rassure-moi : tu ne vas *réellement* utiliser ce panier électronique pour vendre des marchandises dans la vraie vie? [:pingouino]


 
ça m'est déjà arrivé d'être appelé pour effectuer une consultance sur des scripts en prod de cette qualité là... Comme d'ab c'est une question d'argent.
Il y a des gens qui engagent des petits étudiants (comme moi) pour surveiller le boulot d'autres petits étudiants (qui pondent du script de merde) juste parce qu'on est infiniment moins cher que des professionnels...


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2009 à 11:54:25    

Et c'est reparti pour ce bon vieux débat... *sigh*


---------------
Now Playing: {SYNTAX ERROR AT LINE 1210}
Reply

Marsh Posté le 04-01-2009 à 11:56:10    

Non justement, à mon avis faut juste que l'auteur s'exprime mieux, et je suis sûr (je suis très positiviste) que c'est juste un exercice qu'il fait pour apprendre le PHP :)
Donc une fois qu'il se sera expliqué, on corrigera et tout repartira comme dans le meilleur des mondes :)


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2009 à 12:44:19    

bonjour
je tiens a signaler qu'il sagit d'un petit travail que j'effectue pour mes études ça n'a rien de professionnel  :lol:  
 
le problème de ce script c quand j'appuie sur le lien suivant:
<a href="creation.php?prod=<?php echo $ligne[0];?>&qte=<?php echo $quantite;?>action=ajout">Ajouter au panier</a>';  
sachant que $ligne[0] concerne le produit qu'on a choisit et qu'il es déja affiché a travers une requete vers la base  
et $quantite est une variable que le client précisera dans une zone Jtextfield.
 
ceci dit en cliquant sur le liant ça se dirige vers la page creation.php
qui contient le script suivant:
<?php  
session_start();  
require('includes/connection.php');  
 
//démarrage de la session  
 
$ref = $_GET['prod']; //référence du produit choisi  
 
if(isset($ref )){ //si $ref n'est pas vide  
 
if(!isset($_SESSION['caddie'])){ //si le caddie n'a pas été encore créé  
 
$_SESSION['caddie'] = array(); //création de la variable de session  
 
}  
 
if(isset($_SESSION['caddie'][$ref ])) { //si ce produit a déjà été choisi  
 
$_SESSION['caddie'][$ref ]++; //ajoute 1 a la quantité  
 
}else {  
 
$_SESSION['caddie'][$ref ] = 1; //si 1er ajout, met la quantité à 1  
 
}  
}  
 
 
//Requête pour récupérer toutes les informations des produits et calcul du prix total.  
 
foreach ($_SESSION['caddie'] as $idProduit =>$quantite) {  
 
$rq="SELECT * FROM produit where code_pdt='$idProduit'";  
 
echo "<table border='2' width='800' height='800'>";  
 
$res=mysql_query($rq)or die("erreur dans la requete" );  
 
echo "<tr> <th>Nom</th> <th>prix</th> <th>quantite</th> <th>Prix total</th></tr>";  
 
while ($ligne=mysql_fetch_array($res)){  
 
$nom=$ligne[0];  
 
$prix_unitaire=$data[4];  
 
if( ! isset( $prix_total) ) $prix_total =0; // l'initialiser si elle n'existe pas  
$prix_total='$prix_unitaire*$quantite';  
 
if( ! isset( $icaddie) ) $caddie =0; // l'initialiser si elle n'existe pas  
$caddie += $prix_totals;  
echo"<tr><td>$nom</td><td>$prix_unitaire</td><td>$quantite</td><td>prix_total</td><td>$caddie euro</td>";  
echo"</tr>";  
}  
echo"</table>";  
 
}  
?>  
 
 
et que le résultat d'affichage du panier donne quasiment rien de cke je m'y attend sauf le message suivant 100 euro, au deuxième clic 200 euro et ça ne s'arrete de s'incrémenter.
j'espère que je me suis enfin bien exprimé  :D  
merci

Reply

Marsh Posté le 04-01-2009 à 13:02:26    

Bon sang, fout ton code entre balises code (comme je l'ai dit plus haut) sinon personne ne t'aidera


---------------
Si la vérité est découverte par quelqu'un d'autre,elle perd toujours un peu d'attrait
Reply

Marsh Posté le 04-01-2009 à 13:02:26   

Reply

Marsh Posté le 04-01-2009 à 13:35:21    

bonjour  
je tiens a signaler qu'il sagit d'un petit travail que j'effectue pour mes études ça n'a rien de professionnel    
 
le problème de ce script c quand j'appuie sur le lien suivant:  
<a href="creation.php?prod=<?php echo $ligne[0];?>&qte=<?php echo $quantite;?>action=ajout">Ajouter au panier</a>';  
sachant que $ligne[0] concerne le produit qu'on a choisit et qu'il es déja affiché a travers une requete vers la base  
et $quantite est une variable que le client précisera dans une zone Jtextfield.  
 
ceci dit en cliquant sur le liant ça se dirige vers la page creation.php  
qui contient le script suivant:  
 
 

Code :
  1. <?php  
  2. require('includes/connection.php');  
  3.  
  4. //démarrage de la session  
  5.  
  6. $ref = $_GET['prod']; //référence du produit choisi  
  7.  
  8. if(isset($ref )){ //si $ref n'est pas vide  
  9.  
  10. if(!isset($_SESSION['caddie'])){ //si le caddie n'a pas été encore créé  
  11.  
  12. $_SESSION['caddie'] = array(); //création de la variable de session  
  13.  
  14. }  
  15.  
  16. if(isset($_SESSION['caddie'][$ref ])) { //si ce produit a déjà été choisi  
  17.  
  18. $_SESSION['caddie'][$ref ]++; //ajoute 1 a la quantité  
  19.  
  20. }else {  
  21.  
  22. $_SESSION['caddie'][$ref ] = 1; //si 1er ajout, met la quantité à 1  
  23.  
  24. }  
  25. }  
  26.  
  27.  
  28. //Requête pour récupérer toutes les informations des produits et calcul du prix total.  
  29.  
  30. foreach ($_SESSION['caddie'] as $idProduit =>$quantite) {  
  31.  
  32. $rq="SELECT * FROM produit where code_pdt='$idProduit'";  
  33.  
  34. echo "<table border='2' width='800' height='800'>";  
  35.  
  36. $res=mysql_query($rq)or die("erreur dans la requete" );  
  37.  
  38. echo "<tr> <th>Nom</th> <th>prix</th> <th>quantite</th> <th>Prix total</th></tr>";  
  39.  
  40. while ($ligne=mysql_fetch_array($res)){  
  41.  
  42. $nom=$ligne[0];  
  43.  
  44. $prix_unitaire=$data[4];  
  45.  
  46. if( ! isset( $prix_total) ) $prix_total =0; // l'initialiser si elle n'existe pas  
  47. $prix_total='$prix_unitaire*$quantite';  
  48.  
  49. if( ! isset( $icaddie) ) $caddie =0; // l'initialiser si elle n'existe pas  
  50. $caddie += $prix_totals;  
  51. echo"<tr><td>$nom</td><td>$prix_unitaire</td><td>$quantite</td><td>prix_total</td><td>$caddie euro</td>";  
  52. echo"</tr>";  
  53. }  
  54. echo"</table>";  
  55.  
  56. }  
  57. ?>


 
 
et que le résultat d'affichage du panier donne quasiment rien de cke je m'y attend sauf le message suivant 100 euro, au deuxième clic 200 euro et ça ne s'arrete de s'incrémenter.  
j'espère que je me suis enfin bien exprimé    
merci

Reply

Marsh Posté le 08-01-2009 à 13:04:36    

Rajoute "error_reporting  (E_ALL ^ E_STRICT);" une ligne en dessous du premier "<?php" et admire le résultat.
Ensuite tu liras le spoiler ci-dessous pour les explications si tu ne trouves pas tout seul. A noter que quasiment toutes tes erreurs sont des erreurs d'inattention.
 

Spoiler :

$ligne[0] et $data[4] ???
$prix_total='$prix_unitaire*$quantite'; ??? Un prix = du texte ???
 
"if( ! isset( $icaddie) ) $caddie =0;" ??? heu oui, donc si la variable X n'existe pas, je met la variable toto à 0. Logique ...
 
$prix_totals ... qui vient de ?
 
Vu qu'à chaque fois que t'appelle cette page tu augmentes la quantité de 1, tu t'attendais vraiment à ce que la quantité ne bouge pas?


 
PS : Au fait, t'as pensé à regarder le code de la page reçu par le navigateur et pas juste ce que le navigateur affiche à l'écran?

Reply

Marsh Posté le 08-01-2009 à 18:12:08    

mannou83 a écrit :

bonjour

Code :
  1. <?php  
  2. require('includes/connection.php');  
  3.  
  4. //démarrage de la session  
  5.  
  6. $ref = $_GET['prod']; //référence du produit choisi  
  7.  
  8. if(isset($ref )){ //si $ref n'est pas vide



 
Euh là tu ne saisis pas très bien le problème :
 
Tu crées une variable $ref avec comme valeur $_GET['ref']. Sauf que si $_GET['ref'] n'est pas configuré, $ref sera vide !
Puis tu testes $ref avec isset. Pour rappel, isset teste l'existence d'une variable, or, ce test renverra toujours TRUE puisque $ref est défini juste au dessus.
Tu devrais le tester avec empty ou avec is_numeric

Reply

Marsh Posté le 09-01-2009 à 13:22:54    

merci pour vos conseils, ça été enfin résolu ;))

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed