Creation panier produit

Résolu/Fermé
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018 - 12 mars 2018 à 00:00
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018 - 18 mars 2018 à 21:12
bonjour

j'essaie de créer pour la première fois un panier produit, pour le début ca va, mais l'étape du fichier modifierpanier je n'ai pas bien compris, en fait j'ai mon fichier panier.php j'ai une page blanche alors que si je le nomme panier.html je vois bien sur le localhost il est fonctionnel avec quelques erreurs et idem pour le fichier modifierpanier.php j'ai une page blanche et quand je met en header('Location:panier.html') il me renvoit bien au fichier panier.html donc je n'ai pas compris comment faire. puisque je dois nommer mon fichier panier.php. je vous montre mes codes :

fichier panier.php
<?php
session_start ();

<!DOCTYPE html PUBLIC>
<html>
<head>

<meta charset=utf-8"/>
<title>exo panier</title>
</head>


<link href="panierproduit.css" rel="stylesheet" type="text/css">

<body>

<header>
<h1>Panier produits</h1>
</header>
<section id = "panier">

<form id = "produit" action ="modifierPanier.php?" method="get"  name="produit">
<label for="disque">Disque dur 500Go</label>
<input type="text" id="disque" name="disque" prix="100€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="netbook">Netbook 10 pouces</label>
<input type="text" id="netbook" name="netbook" prix="170€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="tablette">tablette 10.1 pouces</label>
<input type="text" id="tablette" name="tablette" prix="210€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="telephone">Samsung Galaxy C7</label>
<input type="text" id="telephone" name="telephone" prix="307€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

</section>
<section id = "RecapCommande">
<fieldset>
<legend>
Recapitulatif de votre commande :
</legend>
<div id="recap">
<?php
echo'<br />';
if(isset($_SESSION['DisqueDur']))
{
echo$_SESSION['DisqueDur'].' DisqueDur'.' ( '.$_SESSION['DisqueDur']*100.' € )<br />';
}
if(isset($_SESSION['tablette']))
{
Echo $_SESSION['Netbook'].' Netbook'.' ( '.$_SESSION['Netbook']*170.' € )<br />';
}
if(isset($_SESSION['tablette']))
{
echo$_SESSION['Tablette'].' Tablette'.' ( '.$_SESSION['Tablette']*210.' € )<br />';
}
if(isset($_SESSION['Telephone']))
{


echo$_SESSION['Telephone'].' Telephone'.' ( '.$_SESSION['Telephone']*307.' € )<br />';
}
echo'<br />';
?>
</div>
<div id="validerPanier">
Total article : 
<?php
Echo $_SESSION['nombreArticlePanier'];
?>
<br/><br/>
Total à payer : 
<?php
echo($_SESSION['DD500go']*100)+($_SESSION['Netbook']*170)+($_SESSION['Tablette']*210)+(
$_SESSION['Telephone']*307);
echo' €<br /><br />';
?>
<a href="modifierPanier.php?valider=1">
<button>Valider</button></a>

<a href="modifierPanier.php?vider=1">
<button>Vider</button></a>
</div>
</fieldset>
</section>

<section id="confirmation">
<fieldset>
<legend>Validation de votre commande :</legend>
<?php
echo $_SESSION['CdeValide'];?>
</fieldset>
</section>





<?php
if (!isset($_SESSION['nombreArticlePanier']) || empty($_SESSION['nombreArticlePanier']))
{
  $_SESSION['nombreArticlePanier'] = 1;
}
    else
{
  $_SESSION['nombreArticlePanier']++;
}
header('Location:panier.php');

?>

</form>
</body>
</html>

 ?>


fichier modifier.php :

<?php
session_start();
/* On ajoute un produit dans le panier */
if (!isset($_SESSION['nombreArticlesPanier']) || empty($_SESSION['nombreArticlesPanier'])){
$_SESSION['nombreArticlesPanier']=1;
}
else {
$_SESSION['nombreArticlesPanier']++;
}
header('Location:panier.php');
?>


merci de votre aide
A voir également:

4 réponses

jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 mars 2018 à 12:16
Bonjour,

Première erreur... tu n'as pas fermé la balise PHP avant de mettre ton html
<?php
session_start ();

<!DOCTYPE html PUBLIC>
<html>

A remplacer par :
<?php
session_start ();

//au passage... pour avoir les erreurs PHP, pense à mettre ceci en haut de tes fichiers php
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);


//FERMETURE PHP avant de mettre le HTML ...
?>
<!DOCTYPE html PUBLIC>
<html>


Un peu de lecture au passage :
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
Modifié le 12 mars 2018 à 12:20
NB : EMPTY ... vérifie déjà que la variable est ISSET .. donc pas besoin de mettre les deux
if (!isset($_SESSION['nombreArticlesPanier']) || empty($_SESSION['nombreArticlesPanier'])){
$_SESSION['nombreArticlesPanier']=1;
}
else {
$_SESSION['nombreArticlesPanier']++;
}

devient :
if ( empty($_SESSION['nombreArticlesPanier'])){
$_SESSION['nombreArticlesPanier']=1;
}
else {
$_SESSION['nombreArticlesPanier']++;
}


Et puis... pourquoi passer par une variable que tu incrémentes pour connaitre le nombre de produits dans ton panier ???
Si ton panier est un ARRAY ( ce qu'il doit être... toute autre solution étant absurde....)... pour savoir combien de produits s'y trouvent.. un simple count suffit

par exemple :
$nbArticles = count($_SESSION['articles']);
0
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018
12 mars 2018 à 15:07
merci beaucoup jordane45 pour ton aide et t conseils.

j'ai le meSsage d'erreur suivant :L’encodage de caractères du document HTML n’a pas été déclaré. Le document sera affiché avec des caractères incorrects pour certaines configurations de navigateur si le document contient des caractères en dehors de la plage US-ASCII. L’encodage de caractères de la page doit être déclaré dans le document ou dans le protocole de transfert.

donc je comprend pas je remet mon code :

<?php
session_start();

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

?>
<!DOCTYPE html PUBLIC>
<html>
<head>

<meta charset="utf-8">
<title>exo panier</title>
</head>


<link href="panierproduit.css" rel="stylesheet" type="text/css">

<body>

<header>
<h1>Panier produits</h1>
</header>
<section id = "panier">

<form id = "produit" action ="modifierPanier.php?" method="get"  name="produit">
<label for="disque">Disque dur 500Go</label>
<input type="text" id="disque" name="disque" prix="100€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="netbook">Netbook 10 pouces</label>
<input type="text" id="netbook" name="netbook" prix="170€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="tablette">tablette 10.1 pouces</label>
<input type="text" id="tablette" name="tablette" prix="210€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="telephone">Samsung Galaxy C7</label>
<input type="text" id="telephone" name="telephone" prix="307€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

</section>
<section id = "RecapCommande">
<fieldset>
<legend>
Recapitulatif de votre commande :
</legend>
<div id="recap">
<?php
echo'<br />';
if(isset($_SESSION['DisqueDur']))
{
echo$_SESSION['DisqueDur'].' DisqueDur'.' ( '.$_SESSION['DisqueDur']*100.' € )<br />';
}
if(isset($_SESSION['Netbook']))
{
Echo $_SESSION['Netbook'].' Netbook'.' ( '.$_SESSION['Netbook']*170.' € )<br />';
}
if(isset($_SESSION['Tablette']))
{
echo$_SESSION['Tablette'].' Tablette'.' ( '.$_SESSION['Tablette']*210.' € )<br />';
}
if(isset($_SESSION['Telephone']))
{


echo$_SESSION['Telephone'].' Telephone'.' ( '.$_SESSION['Telephone']*307.' € )<br />';
}
echo'<br />';
?>

</div>
<div id="validerPanier">
Total article : 
<?php
Echo $_SESSION['nombreArticlePanier'];
?>
<br/><br/>
Total à payer : 
<?php
echo($_SESSION['DD500go']*100)+($_SESSION['Netbook']*170)+($_SESSION['Tablette']*210)+(
$_SESSION['Telephone']*307);
echo' €<br /><br />';
?>
<a href="modifierPanier.php?valider=1">
<button>Valider</button></a>

<a href="modifierPanier.php?vider=1">
<button>Vider</button></a>
</div>
</fieldset>
</section>

<section id="confirmation">
<fieldset>
<legend>Validation de votre commande :</legend>
<?php
echo $_SESSION['CdeValide'];?>
</fieldset>
</section>





<?php
if (!isset($_SESSION['nombreArticlePanier']) || empty($_SESSION['nombreArticlePanier']))
{
  $_SESSION['nombreArticlePanier'] = 1;
}
    else
{
  $_SESSION['nombreArticlePanier']++;
}
header('Location:panier.php');

?>

</form>
</body>
</html>


merci de ton aide. je continue a chercher.
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
12 mars 2018 à 18:23
Déjà.. tu n'as pas tenu compte de mes remarques...
et visiblement tu n'as pas été lire le lien que je t'ai donné !

Donc commence par ça... ensuite on verra !!!
0
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018
Modifié le 12 mars 2018 à 22:35
merci jordane45 eh oui dsl j'avais mal parcouru le lien que tu m'a donné, du coup c bcp plus claire et je peux maintenant enfin afficher mes 2 fichiers php, j'ai créer une fonction debug dans un fichier à part : debug.php .
je vois maintenant que dans mon script php tout n'est pas fonctionnel j'ai beaucoup d'erreur, quand j'ajoute au panier je valide et je vide je suis renvoyé vers une page blanche
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649 > moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018
13 mars 2018 à 22:14
Donc maintenant que tu as lu et compris le lien que je t'ai donné, tu as donc pu effectuer des corrections dans ton code.
Si malgré ça tu as toujours des problèmes... il faut que tu nous montres ton "nouveau" code que l'on regarde ce qui cloche.
0
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018
13 mars 2018 à 22:41
J'ai fait des corrections et maintenant il reste des erreurs de syntaxe sur mes lignes écho :

<?php
session_start();

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

?>
<!DOCTYPE html PUBLIC>
<html>
<head>

<meta charset="utf-8">
<title>exo panier</title>
</head>


<link href="panierproduit.css" rel="stylesheet" type="text/css">

<body>

<header>
<h1>Panier produits</h1>
</header>
<section id = "panier">

<form id = "produit" action ="modifierPanier.php?" method="get"  name="produit">
<label for="disque">Disque dur 500Go</label>
<input type="text" id="disque" name="disque" prix="100€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="netbook">Netbook 10 pouces</label>
<input type="text" id="netbook" name="netbook" prix="170€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="tablette">Tablette 10.1 pouces</label>
<input type="text" id="tablette" name="tablette" prix="210€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="telephone">Samsung Galaxy S7</label>
<input type="text" id="telephone" name="telephone" prix="307€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

</section>
<section id = "RecapCommande">
<fieldset>
<legend>
Recapitulatif de votre commande :
</legend>
<div id="recap">
<?php
echo'<br />';
if(isset($_SESSION['DisqueDur']))
{
echo$_SESSION['DisqueDur'].' DisqueDur'.' ( '.$_SESSION['DisqueDur']*100.' € )<br />';
}
if(isset($_SESSION['Netbook']))
{
Echo $_SESSION['Netbook'].' Netbook'.' ( '.$_SESSION['Netbook']*170.' € )<br />';
}
if(isset($_SESSION['Tablette']))
{
echo$_SESSION['Tablette'].' Tablette'.' ( '.$_SESSION['Tablette']*210.' € )<br />';
}
if(isset($_SESSION['Telephone']))
{


echo$_SESSION['Telephone'].' Telephone'.' ( '.$_SESSION['Telephone']*307.' € )<br />';
}
echo'<br />';
?>

</div>
<div id="validerPanier">
Total article : 
<?php
Echo $_SESSION['nombreArticlePanier'];
?>
<br/><br/>
Total à payer : 
<?php
echo($_SESSION['DisqueDur']*100)+($_SESSION['Netbook']*170)+($_SESSION['Tablette']*210)+(
$_SESSION['Telephone']*307);
echo' €<br /><br />';
?>
<a href="modifierPanier.php?valider=1">
<button>Valider</button></a>

<a href="modifierPanier.php?vider=1">
<button>Vider</button></a>
</div>
</fieldset>
</section>

<section id="confirmation">
<fieldset>
<legend>Validation de votre commande :</legend>
<?php
echo $_SESSION['CdeValide'];?>
</fieldset>
</section>





<?php
if (!isset($_SESSION['nombreArticlePanier']) || empty($_SESSION['nombreArticlePanier']))
{
  $_SESSION['nombreArticlePanier'] = 1;
}
    else
{
  $_SESSION['nombreArticlePanier']++;
}
header('Location:panier.php');

?>

</form>
</body>
</html>



sinon mon 2e fichier php(modifierPanier.php) j'ai corriger je n'ai plus d'erreur

merci de ton aide
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
13 mars 2018 à 22:57
Déjà .. echo et non pas Echo
Ensuite... qu'as tu modifié en tenant compte des liens que je t'ai donné ????

- Je vois toujours un maximum PHP au milieu de ton HTML ...
- Je ne vois pas les récupérations "propres" des variables AVANT de les utiliser
- La fonction empty fait déjà le isset .. pas besoin d'utiliser les deux ensembles

En gros.. tu n'as rien fait de ce qui est marqué dans les liens....

Et une fois tout ça corrigé .... ajoute donc, au début de ton fichier, un
print_r($_SESSION);

et montre nous ce que ça t'affiche....
0
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018
14 mars 2018 à 14:25
salut

ok je vois plus clairement mes erreurs voila le print :

print_r($_SESSION);


Total article :
( ! ) Notice: Undefined index: nombreArticlePanier in C:\wamp\www\Phpdebutant\exo10\panier.php on line 75
Call Stack
# Time Memory Function Location
1 0.0004 143024 {main}( ) ..\panier.php:0


Total à payer :
( ! ) Notice: Undefined index: DisqueDur in C:\wamp\www\Phpdebutant\exo10\panier.php on line 80
Call Stack
# Time Memory Function Location
1 0.0004 143024 {main}( ) ..\panier.php:0

( ! ) Notice: Undefined index: Netbook in C:\wamp\www\Phpdebutant\exo10\panier.php on line 80
Call Stack
# Time Memory Function Location
1 0.0004 143024 {main}( ) ..\panier.php:0

( ! ) Notice: Undefined index: Tablette in C:\wamp\www\Phpdebutant\exo10\panier.php on line 80
Call Stack
# Time Memory Function Location
1 0.0004 143024 {main}( ) ..\panier.php:0

( ! ) Notice: Undefined index: Telephone in C:\wamp\www\Phpdebutant\exo10\panier.php on line 81
Call Stack
# Time Memory Function Location
1 0.0004 143024 {main}( ) ..\panier.php:0
0 €

Validation de votre commande :

( ! ) Notice: Undefined index: CdeValide in C:\wamp\www\Phpdebutant\exo10\panier.php on line 97
Call Stack
# Time Memory Function Location
1 0.0004 143024 {main}( ) ..\panier.php:0

( ! ) Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\Phpdebutant\exo10\panier.php:80) in C:\wamp\www\Phpdebutant\exo10\panier.php on line 111
Call Stack
# Time Memory Function Location
1 0.0004 143024 {main}( ) ..\panier.php:0
2 0.0010 144248 header ( ) ..\panier.php:111


peut etre jai mal compris comment recuperer une variable proprement. j'avoue PHP j'ai du mal sur certains points
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
14 mars 2018 à 14:31
Il faudrait aussi nous montrer ton code actuel (celui que tu as modifié en tenant compte des informations fournies dans le lien..)
- Tu auras, bien entendu, placé le MAXIMUM de code PHP ... AVANT tout code html
- Récupérer correctement les variables...
0
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018
16 mars 2018 à 01:28
merci jordane j'ai suivi t indications et surtout Récupérer PROPREMENT les variables AVANT de les utiliser principale probleme j'ai plus de messages d'erreur car elles sont identifié avec print_r($_SESSION);
maintenant il reste quelque bug avec le bouton vider panier ca ne se vide pas

<?php
session_start();

error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);

?>
<!DOCTYPE html PUBLIC>
<html>
<head>

<meta charset="utf-8">
<title>exo panier</title>
</head>


<link href="panierproduit.css" rel="stylesheet" type="text/css">

<body>

<header>
<h1>Panier produits</h1>
</header>
<section id = "panier">

<form id = "produit" action ="modifierPanier.php?" method="get" name="produit">
<label for="disque">Disque dur 500Go</label>
<input type="text" id="disque" name="disque" prix="100€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="netbook">Netbook 10 pouces</label>
<input type="text" id="netbook" name="netbook" prix="170€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="tablette">Tablette 10.1 pouces</label>
<input type="text" id="tablette" name="tablette" prix="210€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

<label for="telephone">Samsung Galaxy S7</label>
<input type="text" id="telephone" name="telephone" prix="307€" size = '10' />
<input type="button" value="Ajouter au panier" /><br />

</section>

<section id = "RecapCommande">
<fieldset>
<legend>
Recapitulatif de votre commande :
</legend>
print_r($_SESSION);

<div id="recap">
<?php
echo'<br />';
if(isset($_SESSION['DisqueDur']))
{echo $_SESSION['DisqueDur'].' DisqueDur'.' ( '.$_SESSION['DisqueDur']*100
.' € );<br />';}
if(isset($_SESSION['Netbook']))
{echo $_SESSION['Netbook'].' Netbook'.' ( '.$_SESSION['Netbook']*170
.' € )<br />';}
if(isset($_SESSION['Tablette']))
{echo $_SESSION['Tablette'].' Tablette'.' ( '.$_SESSION['Tablette']*210
.' € )<br />';}
if(isset($_SESSION['Telephone']))
{echo $_SESSION['Telephone'].' Telephone'.' ( '.$_SESSION['Telephone']*307
.' € )<br />';}
echo'<br />';
?>
</div>

Total article :
<?php
if(isset($_SESSION['nombreArticlePanier']))
echo $_SESSION['nombreArticlePanier'];?><br/><br/>
Total à payer :
<?php
if(isset($_SESSION['DisqueDur']))
echo($_SESSION['DisqueDur']*100)+($_SESSION['Network']*170)+($_SESSION['Tablette']*210)+($_SESSION['Telephone']*307);
echo' €<br /><br />';
?>
<a href ="modifierPanier.php?valider=1">
<button>Valider</button>
</a>
<a href ="modifierPanier.php?vider=1">
<button>Vider</button>
</a>
</div>
</fieldset>
</section>
<section id ="confirmation">
<fieldset>
<legend>
Validation de votre commande :
</legend>
<?php
if(isset($_SESSION['CommandeValide']))
echo $_SESSION['CommandeValide'];
?>
</fieldset>
</section>
</body>
</html>

0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
16 mars 2018 à 10:04

j'ai plus de messages d'erreur car elles sont identifié avec print_r($_SESSION);

Hein ?
Quel rapport entre la récupération "propre" des variables et cette phrase ?

Je vais te donner un exemple de ce qu'il faut faire :
Si je prends, en exemple ton bout de code suivant :
if(isset($_SESSION['DisqueDur']))
{echo $_SESSION['DisqueDur'].' DisqueDur'.' ( '.$_SESSION['DisqueDur']*100
.' € );<br />';}


Moi je le ferai de la façon suivante :
AVANT le HTML (donc au début de ton fichier PHP ...)
$DisqueDur = !empty($_SESSION['DisqueDur']) ? $_SESSION['DisqueDur'] *100
.' €   : NULL;

Et là ou tu souhaites afficher l'information (dans ton html)
echo $DisqueDur;
0
jordane45 Messages postés 38137 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
16 mars 2018 à 10:11
Et concernant :

maintenant il reste quelque bug avec le bouton vider panier ca ne se vide pas

Ben... il faudrait nous montrer le code qui est sensé "vider" ton panier pour qu'on puisse essayer de voir ce qui ne va pas
0
moon136 Messages postés 71 Date d'inscription samedi 12 août 2017 Statut Membre Dernière intervention 17 avril 2018
18 mars 2018 à 21:12
merci jordane c'est résolu, c'est bien fonctionnel plus de messages d'erreur et le panier se valide bien et se vide bien
0