Panier( Caddie virtuel ) problème affichage du panier : resultats erronés

Signaler
-
Bonjour,



pour réaliser un site internet de panier/caddie d'achats d'articles, j'ai une Table Lignes de Commande mais elle ne donne pas le résultat attendu.

Merci d'avance pour votre aide.
Sergio1236


Enoncé du sujet à réaliser :
"ACHAT DE MATERIELS :
Cet espace permet à tout UE authentifié et à lui seul d'effectuer des achats parmi 3 catégories d'articles : informatique, livre, et hi-fi.
Pour chaque catégorie d'articles 5 ou 6 articles différents de votre choix seront proposés à la vente, chacun avec son prix unitaire.La liste des matériels en vente, classée par catégorie avec le prix de chaque article, sera accessible à tout utilisateur, qu'il soit UE authentifié ou non ou US. Un achat ne peut porter qu' au maximum sur 10 articles identiques, le nombre total d'articles différents achetés est libre ainsi que les catégories d' articles. Les informations concernant le type et la quantité d'articles achetés ainsi que le prix unitaire et le montant total des achats effectués seront mises à jour de manière « instantanée » et seront toujours visibles pour l' utilisateur tout au long du processus.
Tout UE authentifié aura la faculté de consulter la liste des achats qu'il a effectués depuis son inscription en tant qu' UE, ordonnée par date d'achat avec le montant total de chaque achat.Il pourra également consulter les détails de chaque achat.
L'US ou l'UE « non connecté » se verra proposé de s'inscrire comme UE ou de s'authentifier en cas de tentative d'achat.
La liste des matériels en vente, classée par catégorie avec le prix de chaque article, sera accessible à tout utilisateur, qu'il soit UE authentifié ou non ou US.
Un achat ne peut porter qu' au maximum sur 10 articles identiques, le nombre total d'articles différents achetés est libre ainsi que les catégories d' articles. "


------------------------------------------------------------------------------
Voici ma solution avec les problèmes à l'exécution :
c'est que quand un Client fait un achat d'un article qu'il choisit dans un menu déroulant ,
il n'affiche pas les derniers achats du Client mais il affiche l'exécution de la requête qu'il
y a dans la base de données :
voici la requête qui pose problème et qui ne donne pas le bon résultat :

$req$pdo->query("SELECT * FROM lignescommandes, articles,achats WHERE client_id '".$_SESSION['id_client']."' AND articles.id_article= lignescommandes.article_id");

Voici la table qui pose problème :

$requete = 'CREATE TABLE Lignescommandes (
id_ligne INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
achat_id INT UNSIGNED NOT NULL ,
article_id INT UNSIGNED NOT NULL ,
nb_art TINYINT UNSIGNED NOT NULL
)';

$requete = "INSERT INTO Lignescommandes(id_ligne,achat_id,article_id,nb_art) values
('',1,1,1), ('',1,2,1)"; ??? c'est toujours le mêmes article article_id =1 malgré qu'il y ait plus de 17 articles différents dans le menu déroulant, dans le résultat de 'exécution de la requête , on obtient tjrs les articles avec article_id=1 et article_id=2 .

--------------------------------------------------------------


Fichier : paiement.php :

La mise à jour de la base de données a été effectuée avec cette requête :

$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$pdo = new PDO('mysql:host=localhost;dbname=User', 'root', '', $pdo_options);
$req =$pdo ->prepare('INSERT INTO Achats SET client_id=:iduser,date=NOW()');


Voici la table qui pose problème :

$requete = 'CREATE TABLE Lignescommandes (
id_ligne INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
achat_id INT UNSIGNED NOT NULL ,
article_id INT UNSIGNED NOT NULL ,
nb_art TINYINT UNSIGNED NOT NULL
)';

$requete = "INSERT INTO Lignescommandes(id_ligne,achat_id,article_id,nb_art) values
('',1,1,1), ('',1,2,1)"; ??? c'est toujours le mêmes article article_id =1 malgré qu'il y a plus de
5 possibilités dans le menu déroulant.




------------------------------------------------------------------


les donnees d'utilisateur
NOM: Dupont

PRENOM: Jean

DATE NAISS: 1983-02-12

ADRESSE: Av jules 24

VILLE: Bruxelles

CODE POSTAL: 1190

EMAIL: dupont@yahoo.fr

DATE INSCIPTION: 2013-06-12 16:07:53

cliquer sur
VOIR MES DERNIERS ACHATS

Retour à la liste des utilisateurs :


---------------------------------------------------------------------------
Menu Déroulant :

Achat Livres

Type d'articles et prix :

Livres : Mes Pensées : 75 Euros

Nombre d'articles achetés : choisir 1
2
3

Valider vos achats : Ok




------------------------------------------------------------------------------------------------------------------------------------

En cliquant sur voir mes derniers achats : Le résultat ne correspond pas à l'achat : le livre Mes pensées n'apparaît pas dans le tableau.

Id Client ARTICLE Prix Unitair Quantite Total par Article Date achat
1 Amplificateur 150 € 1 150 € 2013-06-12
1 Casque Pro 100 € 1 100 € 2013-06-12

TOTAL GENERAL: 250€


Le programme ne fait qu'exécuter la requête SQL suivante :
SELECT * FROM lignescommandes, articles,achats WHERE client_id = '".$_SESSION['id_client']."' AND articles.id_article= lignescommandes.article_id


----------------------------------------------------------------------------

Voici le fichier de création de la base de données : creation_db_User.php


<?php

try
{
$pdo = new PDO('mysql:host=localhost', 'root', '');
}
catch (PDOException $e) {
die( "Erreur !: " . $e->getMessage() );
}


$req= 'CREATE DATABASE User';
/*$pdo->exec($req); */

if($pdo->exec($req) === FALSE)
{
echo 'Il y a une erreur dans votre requête de creation de la BD User :';
exit("Impossible de creer la Base de données User !");
}

try
{
$pdo = new PDO('mysql:host=localhost;dbname=User', 'root', '');
}
catch (PDOException $e) {
die( "Erreur !: " . $e->getMessage() );
}

$requete = 'CREATE TABLE Client (
id_client INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
login VARCHAR(40) NOT NULL,
pass VARCHAR(40) NOT NULL,
nom VARCHAR(40) NOT NULL,
prenom VARCHAR(30) NOT NULL,
date_naiss DATE DEFAULT NULL,
adresse VARCHAR (255) NOT NULL,
code_postal CHAR(5) NOT NULL,
ville VARCHAR(50) NOT NULL,
email VARCHAR(50) NOT NULL,
indesirable TINYINT UNSIGNED NOT NULL DEFAULT 0,
date_inscription DATETIME NOT NULL

)';
if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Client : ';
echo $requete;
exit();
}
echo'Table Client créée
';


$requete = "INSERT INTO Client(login,pass,nom,prenom,date_naiss,adresse,code_postal,ville,email,indesirable,date_inscription) values

('Jean','ede0f9c3a1d2093e3f48fcafd3c70915','Halima','Issa','1983-02-12','Av jules 24',1050,'Bruxelles','Hali@yahoo.fr','non',NOW()),
('Sara','06c56a89949d617def52f371c357b6db','Abba','Samir','1979-08-18','Rue malibrant 32',1160,'Bruxelles','Abba@yahoo.fr','non',NOW()),
('Aicha','81dc9bdb52d04dc20036dbd8313ed055','Nadine','Nour','1969-01-25','av Hector 4',1000,'Bruxelles','Nanour@yahoo.fr','non',NOW()),
('Val','21232f297a57a5a743894a0e4a801fc3','Valerie','Jacq','1995-12-16','Av marin 93',1040,'Bruxelles','Valja@yahoo.fr','non',NOW())";

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table Client:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table Client
';


$requete = 'CREATE TABLE Logs (
id_log INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
client_id INT UNSIGNED NOT NULL,
date_log DATETIME NOT NULL
)';
if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Logs ';
echo $requete;
exit();
}
echo'Table Logs créée
';


$requete = 'CREATE TABLE Achats (
id_achat INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
client_id INT UNSIGNED NOT NULL,
date DATETIME NOT NULL
)';
if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Achats ';
echo $requete;
exit();
}
echo'Table Achats créée
';

$requete = "INSERT INTO Achats(id_achat,client_id,date) values
('',1,NOW()),
('',1,NOW()),
('',2,NOW()),
('',2,NOW())";


if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table Achats:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table Achats
';


$requete = 'CREATE TABLE Lignescommandes (
id_ligne INT UNSIGNED AUTO_INCREMENT PRIMARY KEY ,
achat_id INT UNSIGNED NOT NULL ,
article_id INT UNSIGNED NOT NULL ,
nb_art TINYINT UNSIGNED NOT NULL
)';
if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Lignescommandes ';
echo $requete;
exit();
}
echo'Table Lignescommandes créée
';

$requete = "INSERT INTO Lignescommandes(id_ligne,achat_id,article_id,nb_art) values
('',1,1,1),
('',1,2,1)";

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table Lignescommandes:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table Lignescommandes
';


$requete = 'CREATE TABLE Articles (
id_article INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
nom_art VARCHAR(50) NOT NULL,
prix INT UNSIGNED NOT NULL,
categorie VARCHAR(50) NOT NULL,
en_vente TINYINT UNSIGNED NOT NULL DEFAULT 1
)';
if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Articles ';
echo $requete;
exit();
}
echo'Table Articles créée
';

$requete = "INSERT INTO Articles(nom_art,prix,categorie) values
('Amplificateur',150,'hifi'),
('Casque Pro',100,'hifi'),
('Scanner',250,'hifi'),
('Micro chaine',500,'hifi'),
('Ensemble Home Theater',250,'hifi'),
('Mes pensées',75,'livre'),
('Le savoir vivre',35,'livre'),
('PHP facile',30,'livre'),
('Le livre de java',50,'livre'),
('Langage C', 20,'livre' ),
('Linux', 100,'livre'),
('Souris',20,'info'),
('Carte son',50,'info'),
('CD antivirus',40,'info' ),
('Routeur', 65,'info' ),
('Disque dur',70,'info'),
('Pc portable',500,'info')";

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table Articles:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table Articles
';


$requete = 'CREATE TABLE IF NOT EXISTS categorie_articles (
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
categorie varchar(30) NOT NULL
)';

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table categorie_articles ';
echo $requete;
exit();
}
echo'Table categorie_articles créée
';

$requete = "INSERT INTO categorie_articles (id, categorie) VALUES
(1, 'informatique'),
(2, 'livre'),
(3, 'hifi')";

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table categorie_articles:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table categorie_articles
';


$requete = 'CREATE TABLE Billets (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
titre VARCHAR( 255 ) NOT NULL ,
contenu TEXT NOT NULL ,
date_creation DATETIME NOT NULL
)';

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Billets ';
echo $requete;
exit();
}
echo'Table Billets créée
';

$requete = "INSERT INTO Billets(id,titre,contenu,date_creation) values
('','Cours PHP','Le cours de PHP sur le site de zero est bien fait',NOW()),
('','La vie est belle','La vie ne vaut pas la peine d être vecue....de l Hoe',NOW()),
('','Le soleil','il fait beau pres de 25 degres',NOW())";

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table Billets:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table Billets
';


$requete = 'CREATE TABLE Minichat (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
pseudo VARCHAR( 255 ) NOT NULL ,
message VARCHAR(255) NOT NULL,
date DATETIME NOT NULL )';


if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Minichat ';
echo $requete;
exit();
}
echo'Table Minichat créée
';

$requete = "INSERT INTO Minichat(pseudo,message,date) values
('Marie','Il fait trés chaud aujourdhui',NOW()),
('Sara','Il fera beau demain',NOW()),
('Aicha','Problèmes avec php',NOW()),
('Marie','Solution de connexio',NOW())";

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table Minichat:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table Minichat
';


$requete = 'CREATE TABLE Blog (
id_blog INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
titre VARCHAR(255) NOT NULL,
texte text NOT NULL,
date DATETIME NOT NULL )';

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Blog ';
echo $requete;
exit();
}
echo'Table Blogs créée
';

$requete = "INSERT INTO Blog(titre,texte,date) values
('Php','Comprendre...php',NOW()),
('Langage C','Apprendre le c',NOW()),
('Informatique','Info pour le null',NOW())";

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table Blog:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table Blog
';



$requete = 'CREATE TABLE Commentaires (
id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
client_id INT UNSIGNED NOT NULL,
id_billet INT UNSIGNED NOT NULL,
auteur VARCHAR ( 255 ) NOT NULL ,
commentaire text NOT NULL,
date_commentaire DATETIME NOT NULL
)';
if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête de création de la table Commentaires ';
echo $requete;
exit();
}
echo'Table Commentaires créée
';

$requete = "INSERT INTO Commentaires(client_id,id_billet,auteur,commentaire,date_commentaire) values
(1,3,'Marie','Il fallait pas faire comme ça...',NOW()),
(2,1,'Aicha','Bonsoir le zero',NOW()),
(3,2,'Sara','Je souhaite à toutes et a tous bon vaccance',NOW())";

if($pdo->exec($requete) === FALSE)
{
echo 'Il y a une erreur dans votre requête d\'insertion dans la table Commentaires:';
echo $requete;
exit();
}
echo'Insertions effectuées dans la table Commentaires
';



if ($pdo) {
$pdo = NULL ;
// Fermeture de la connexion
}


----------------------------------------------------------------------------

Voici le code Php pour le fichier : achat_hifi.php

<?php session_start(); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Achat hifi</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" title="monstyle" href="style.css" />
</head>


<?php
include 'menu_connex.php';

?>
Achat HiFi


<form method="post" action="choix.php">
Type d'articles et prix :


<select name="prix">
<option value="150">Amplificateur YAMAHA 150 EUR</option>
<option value="250">Ensemble "Home Theater" 250 EUR</option>
<option value="100">Casque Pro 100 EUR</option>
<option value="250">Scanner 250 EUR</option>
<option value="155">Micro chaine 155 EUR</option>
</select>


Nombre d'articles achetés :


<select name="nbart" >
<option value="0">0</option>
<option value="1" selected="selected">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
</select>


Valider vos achats :



</form>




</html>

------------------------------------------------------------------------

Le code Php pour le fichier : voir_mes_achats.php




!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<link rel="stylesheet" href="style.css" />
<title>page voir mes achats</title>
</head>

<?php
include 'menu_connex.php';
?>

<?php

session_start();
if(!isset($_SESSION['id_client']))
//header('Location:../index.php');?>
<?php
//require_once('../Connections/maconnexion.php');
try
{
$pdo = new PDO('mysql:host=localhost;dbname=User', 'root', '');
}
catch (PDOException $e) {
die( "Erreur !: " . $e->getMessage() );
}



if (isset($_POST['achat'])){
$req=$pdo->query("SELECT * FROM lignescommandes, articles,achats WHERE client_id = '".$_SESSION['id_client']."' AND articles.id_article= lignescommandes.article_id");
$total=0;
$achat = $req ;
$donnees = $achat->fetch();

if(count($achat->fetch())>0){
echo '';
echo '----

Id Client |ARTICLE |Prix Unitaire |Quantite |Total par Article |Date achat |
';

while ($donnees = $achat->fetch()){

echo '----

'.$donnees['client_id'].',
'.$donnees['nom_art'].',
'.$donnees['prix'].' €,
'.$donnees['nb_art'].',
'.$donnees['prix'] * $donnees['nb_art'].' €,
'.$donnees['date'].',
';
$total+= $donnees['prix'] * $donnees['nb_art'];

}echo '----

TOTAL GENERAL |
'.$total . ' € |

';

echo '
';
}
else echo "vous n'avez rien acheter";

}




if ($pdo)
$pdo = NULL ;

?>

















</html>