caddie électronique

Répondre
manou83
le 04/01/2009 à 02:31
manou83
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:
http://www.lephpfacile.com/wall/wall-1659.php


voila le lien de 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

edit : le wall est parfait pour le code ;)
moogli
le 04/01/2009 à 14:38
moogli
salut,

quel est le problème exactement ?
je suis désolé mais on est pas devin !

quelques critique sur le code en lui même
ligne 7 à 9
<?php
$ref = $_GET['prod']; //référence du produit choisi

if(isset($ref )){
?>

Tu ne sais pas si prod existe dans l'url mais tu l'utilise quand meme.
Ensuite tu n'a pas compris l'utilisation de isset qui test l'existance d'une variable et non son contenu. $ref existe puisque tu la crée juste au dessus !

<?php
if ( !empty($_GET['prod'])) {
$ref = $_GET['prod'];
}
else{
// ejection de la page puisse qu'il n'y a rien a ajouter ;)
}
?>


ligne 33 la requete SQL
$rq="SELECT * FROM produit where code_pdt='$idProduit'"

perso j'utilise pas l'étoile (top gourmand) et pas les " pour délimiter une chaine de caractère afin d'avoir le problème de la ligne 48
$prix_total='$prix_unitaire*$quantite';
ici prix total aura bien entendu toujours la même valeur qui est la chaine de caractère que tu lui affecte!

ligne 40 : while ($ligne=mysql_fetch_array($res)){
mais ligne 45 tu utilise $prix_unitaire=$data[4]; d'où sort $data ?

tu utilise fetch_array dans le while mais les index numérique, pourquoi ne pas utiliser les index nommé afin d'avoir un code clair ?

ligne 48 tu crée $prix_total mais ligne 51 tu utilise : $caddie += $prix_totals;

ligne 52 $caddiedinars n'existe pas !

Afin d'éviter de futurs problèmes du même genre je te conseil :
- de ne plus utiliser les doubles quotes (")pour délimiter les chaines de caractères et utilise la concaténation pour y insérer le contenue de variables. Ceci a un double avantage, moins de sources d'erreur entre les deux syntaxe et une meilleur lisibilitée du code.
- ne pas utiliser l'étoile dans les requetes SQL (tu n'a besoin que de deux infos pas la peine de récupérer toutes les infos de la table.
- utilise les index nommé des tableaux (utilise mysql_fetch_assoc, par exemple pour ne pas être tenté ;) )
- Relis ton code a tête reposée afin afin d'éliminer les erreurs d'étourderie (ligne 48, 51 et 52).

Voila en corrigeant ces quelques lignes le fonctionnement devrait être plus conforme a ce que tu attend.

Pour info si tu ne nous dit pas ce qui ne va pas on va pas le deviner, on ne connais le fonctionnement globale de ton application donc sans information(s) claire(s) on ne peut pas t'aider plus que ce que je viens de faire.

j'ai mis ton code sur le wall c'est fait pour ça, c'est plus clair et ça use moins ma souris quand je parcourt le sujet ;)

@+
Il en faut peu pour être heureux !!!!!
manou83
le 04/01/2009 à 17:12
manou83
re , merci pour vos remarques ,j'ai soigné encore plus mon code
je vais etre plus claire smiley
ceci dit concernant la ligne 7 et 8 , la variable prod est récupréré a travers le lien décrit ci dessou je comprend pas votre remarke smiley

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 lien ça se dirige vers la page creation.php
qui contient le script suivant:

le wall ? http://www.lephpfacile.com/wall/wall-1660.php

et que le résultat d'affichage du panier donne a présent un tableau vide, je ne sais pa le problème il est ou


merci
i M@N
le 04/01/2009 à 18:39
i M@N
Hello.

On dirait qu'il manque session_start(); tout en haut de ton script juste après <?php

@+...
One Love, One Heart, One Unity.
moogli
le 04/01/2009 à 19:05
moogli
ligne 7 & 8 il ne faut JAMAIS présumer de l'existence d'une variable simplement parce que tout le monde peut modifier une url ;)

ensuite isset permet de vérifier l'existence d'une variable pas de savoir si elle contient quelque chose (empty le fait). donc si tu fait un isset c'est sur $_GET['prod'] pas sur $ref vu que c'est toi qui la crée ;)

première chose à faire :
- var_dump($_GET); sur creation.php afin de voir le contenu du tableau GET et vérifier que les valeurs voulues sont bien envoyées à cette page.

- Afficher les requetes SQL afin d'être sure qu'elles soient confirmes a ce que tu attend.

est ce que les tableaux sont affichés dans le code sources ? (entête et clôture ?)

le session_start() est il dans le fichier connection.php ?

A priori le script fonctionne, par contre je ne suis pas sur qu'il fonctionne comme tu le souhaite, vu que par exemple tu n'utilise pas la quantité passée dans l'url mais toujours un incrément de la valeur existante.

y a plein de modif possible à faire sur ton script.

<?php
if(isset($_SESSION['caddie'][ $_GET['prod'] ])) { //si ce produit a déjà été choisi

$_SESSION['caddie'][$_GET['prod'] ] = $_SESSION['caddie'][$_GET['prod']] + $_GET['qte'] ; //ajout du nombre choisis

}else {
// on vérifie que la référence existe (histoire d'éviter les bétises !).
$sql = 'SELECT count(id) FROM produit WHERE cod_pdt='.mysql_real_escape_string($_GET['pdt']);
$req = mysql_query($sql) or die('erreur SQL <br />'.$sql.'<br />'.mysql_error());
$data = mysql_fetch_row($req);
mysql_free_result($req);
if ( $data[0] == 1 ){
$_SESSION['caddie'][$ref ] = $_GET['qte']; //si 1er ajout on le crer en session !
}
else {
// ben oust la ref existe pas
}
}
?>

par exemple

@+
Il en faut peu pour être heureux !!!!!
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours