PHP sans bdd [Site Restaurant]

Résolu
Utilisateur anonyme -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,
Voila je suis débutant en php et je dois réaliser un projet sur une sorte de "borne" de restauration. J'ai réaliser la partie visuel de mon site avec des images cliquables.
Sous cette forme :
<a href="index.php?plat=Kebab Pain&prix= 5"><img src="./images/kebab/kebabpain.jpg" alt="Kebab Pain" title="Kebab Pain" width="100px" height="100px"/></a>

En faite il faut que quand on clique sur une image, a un endroit du site on lise le nom du produit sélectionné ainsi que son prix.
C'est a dire en php
<?php
$plat = $_GET['plat'] ;
$prix = $_GET['prix'] ;
echo $plat;
echo $prix;
?>
Affichage:
Kebab Pain 5

Jusque la rien de bien compliqué.
Ma question ce pose alors, comment afficher une liste des produits sélectionné et afficher le résultat de la note.

Par exemple je clique sur deux images (ou deux fois sur la même soyons fou :))
Je voudrais que ça m'affiche:

Kebab Pain 5
Gros Kebab 6
Addition 11

Je cherche désespérément sur internet mais je ne trouve pas :(
J'ai trouvé comment faire des additions en php style :
$r=$a+$b
echo $r

Mais comme je n'arrive pas a afficher une liste je ne vois pas comment je peux l'additionner.

Si quelqu'un pourrais m'aider :)

A voir également:

5 réponses

mpmp93 Messages postés 6648 Date d'inscription   Statut Membre Dernière intervention   1 340
 
Bonjour,

Vous dites: "je dois réaliser un projet" --> pour qui? Pourquoi?

Cordialement
0
Utilisateur anonyme
 
En effet je n'est pas précisé, c'est dans le cadre scolaire je suis en BTS SIO :)
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour;

Ma question ce pose alors, comment afficher une liste des produits sélectionné et afficher le résultat de la note.

Le plus simple serait de stocker tes "choix" dans une variable de session...
Puis pour les afficher.. de faire une boucle tout simplement.

<?php
session_start();

$plat = $_GET['plat'] ;
$prix = $_GET['prix'] ;

if(isset($_SESSION['meschoix'])){
  $arrChoix = $_SESSION['meschoix'];
}else{
  $arrChoix = array();
}
$arrChoix[]['plat'] = $plat;
$arrChoix []['prix '] = $prix ;

$_SESSION['meschoix'] = $arrChoix ;


// liste des produits :
print_r($_SESSION['meschoix']);

?> 


0
Utilisateur anonyme
 
Bonsoir,
L'idée d'un boucle je n'y avais pas pensé.
Je viens de tester le code et cela m'affiche:

Array ( [0] => Array ( [plat] => Kebab Pain ) [1] => Array ( [prix] => 5 ) )

J'ai bien respecté l'indentation du code pourtant....
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
Et bien..c'est bon
si tu rajoutes un produit il va s' ajouter dans le tableau..
a toi de faire la boucle et le traitement voulu
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Ah zut.
juste une petite modification à faire.. désolé :

<?php
session_start();

$plat = $_GET['plat'] ;
$prix = $_GET['prix'] ;

if(isset($_SESSION['meschoix'])){
  $arrChoix = $_SESSION['meschoix'];
}else{
  $arrChoix = array();
}
$arrChoix[] = array('plat' => $plat,'prix ' => $prix);

$_SESSION['meschoix'] = $arrChoix ;

//------------------------------------------------------------------
// Liste des produits 
// le temps des tests :
//------------------------------------------------------------------
print_r($_SESSION['meschoix']);


//------------------------------------------------------------------
// C'est ici qu'il te faut faire la boucle
// Un truc du genre par exemple :
 $total = 0;
//------------------------------------------------------------------
foreach($_SESSION['meschoix'] as $P){
if(isset( $P['prix']) && $P['prix']!='' {
  $Pprix = $P['prix'];
else{
  $P['prix']=0;
}
 echo "<br> plat : ".$P['plat']. "   prix : ".$Pprix ;
 $total += $Pprix; 
}
echo " Le total est de : ".$total;
//------------------------------------------------------------------
?>
0
Utilisateur anonyme
 
Bonjour, comme je l'ai dis dans mon premier poste je ne suis pas du tous expert en PHP. J'ai essayer de décortiquer un maximum le code avec mes quelques connaissance.
(J'ai oublier de préciser j'utilise WampServer pour visualiser mon php)
Ça m'indique qu'il y a une erreur sur le if du foreach ,je crois que c'est avec le } de fin.je ne suis pas sur. Mais même en changeant ça cela m'indique toujours une erreur :

Parse error: syntax error, unexpected '{' in C:\wamp\www\**********\index.php on line 125
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
La seconde parenthèse du if est mal placée. ..
désolé.
Il faut la mettre juste avant le {
0
Utilisateur anonyme
 
Maintenant ca m'affiche une erreur sur le else :(

 Parse error: syntax error, unexpected 'else' (T_ELSE) in C:\wamp\www\**********\index.php on line 127


Suite a la parenthèse:


<?php
session_start();

$plat = $_GET['plat'] ;
$prix = $_GET['prix'] ;

if(isset($_SESSION['meschoix'])){
$arrChoix = $_SESSION['meschoix'];
}else{
$arrChoix = array();
}
$arrChoix[] = array('plat' => $plat,'prix ' => $prix);

$_SESSION['meschoix'] = $arrChoix ;


print_r($_SESSION['meschoix']);


$total = 0;

foreach($_SESSION['meschoix'] as $P){
if(isset( $P['prix']) && $P['prix']!=' '){
$Pprix = $P['prix'];
else{
$P['prix']=0;
}
echo "<br> plat : ".$P['plat']. " prix : ".$Pprix ;
$total += $Pprix;
}
echo " Le total est de : ".$total;
?>


Si j'ai bien regarder l'accolade du foreach n'est pas fermé mais je sais pas ou la placer :(
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Désolé;
je n'avais pas de PC sous la main...

<?php
session_start();

$plat = $_GET['plat'] ;
$prix = $_GET['prix'] ;

if(isset($_SESSION['meschoix'])){
  $arrChoix = $_SESSION['meschoix'];
}else{
  $arrChoix = array();
}
$arrChoix[] = array('plat' => $plat,'prix ' => $prix);

$_SESSION['meschoix'] = $arrChoix ;


print_r($_SESSION['meschoix']);


 $total = 0;

foreach($_SESSION['meschoix'] as $P){
   if(isset( $P['prix']) && $P['prix']!=' '){
     $Pprix = $P['prix'];
   //manquait une parenthèse ici :
   }else{
     $P['prix']=0;
   }
   echo "<br> plat : ".$P['plat']. "   prix : ".$Pprix ;
   $total += $Pprix; 
}
echo " Le total est de : ".$total;
?>


0
Utilisateur anonyme
 
Bonjour ,

Alors voila j'ai montré votre code a mon prof, il m'a dis que pour notre niveau on utiliserais pas pour le moment de "session" il ma donner le code pour l'addition qui ce fais dans la balise <a>.
Comme ceci :

<a href="index.php?plat=Kebab Pain&prix= 5&total=<?php echo $total; ?>"><img src="./images/kebab/kebabpain.jpg" alt="Kebab Pain" title="Kebab Pain" width="100px" height="100px"/></a>


Et avec le php

<?php
$plat = $_GET['plat'];
$prix = $_GET['prix'];
$total = $_GET['total'];
$total += $prix;
?>

Je n'ai pas encore fais la liste des produits mais il m'a dit que c'était avec le même principeje crois mais j'ai essayer de mettre un autre echo dans le <a> style

<a href="index.php?plat=Kebab Pain&prix= 5&total=<?php echo $total; ?&plat=<?php echo $plat; ?>">
<img src="./images/kebab/kebabpain.jpg" alt="Kebab Pain" title="Kebab Pain" width="100px" height="100px"/></a>


Mais pas de résultat escompté !
0
Utilisateur anonyme
 
Il m'a préconisé de mettre un if dans le php pour afficher la liste des produits
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
Bon.. en gros... il veut juste que tu alimentes ton lien avec la liste des plats + faire le total ??

-> Sachant que dans une URL .. tu ne mets jamais plusieurs variables avec le même nom....
Là.. tel que tu essayes de l'écrire.. tu mets ?plat= ... &plat= ...... NON !!
A la limite tu peux, à chaque ajout.. créer une variable plat... plat1 ...pla2 ... et les variables prix qui vont avec (prix1 ... prix2....)

Encore mieux... Tu mets .. dans UNE SEULE variable list_plat.. tous les plats selectionnés...

(idem pour les prix)..
Un truc du genre :

<?php
$plat  = isset($_GET['plat']) && $_GET['plat']!=''?$_GET['plat']:'';
$prix  = isset($_GET['prix']) && $_GET['prix']!=''?$_GET['prix']:0;
$total = isset($_GET['total']) && $_GET['total']!=''?(float)$_GET['total']:0;

$lst_plats = isset($_GET['lst_plats']) && $_GET['lst_plats']!=''?$_GET['lst_plats'].",":$plat;


?>
<a href="?plat=Kebab Pain&prix=5&total=<?php echo $total+5;?>&lst_plats=<? echo $lst_plats.'Kebab Pain - 5';?>">
<img src="./images/kebab/kebabpain.jpg" alt="Kebab Pain" title="Kebab Pain" width="100px" height="100px"/></a>

<a href="?plat=frittes&prix=2&total=<?php echo $total+2;?>&lst_plats=<? echo $lst_plats.'frittes - 2';?>">
<img src="./images/kebab/frittes.jpg" alt="Frittes" title="Frittes" width="100px" height="100px"/></a>


<?php
Echo "<pre> Liste des produits :<br>";
$arrP = explode(",",$lst_plats);
foreach($arrP as $P){
 echo "<br>".$P;
}
echo "<br><strong>TOTAL = ".$total."</strong>";
echo "</pre>";

0
Utilisateur anonyme
 
Bonsoir,
Excuser mon absence j'ai bien testé votre code mais cela m'affiche exactement ce que j'ai déjà c'est a dire le plat et son prix, puis quand je clique sur une autre image pas de liste :(

Mon prof ma dis de mettre un if a un moment.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
Mon code fonctionne... étonnant que ça ne marche pas chez toi..
tu utilises bien un serveur php.?
tu as quoi comme url lorsque tu testes le programme ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Testes celui là :

<?php
$plat  = isset($_GET['plat']) && $_GET['plat']!=''?$_GET['plat']:'';
$prix  = isset($_GET['prix']) && $_GET['prix']!=''?$_GET['prix']:0;
$total = isset($_GET['total']) && $_GET['total']!=''?(float)$_GET['total']:0;
$lst_plats = isset($_GET['lst_plats']) && $_GET['lst_plats']!=''?$_GET['lst_plats'].",":$plat;


?>
<a href="?plat=Kebab Pain&prix=5&total=<?php echo $total+5;?>&lst_plats=<?php echo $lst_plats.'Kebab Pain - 5';?>">
<img src="./images/kebab/kebabpain.jpg" alt="Kebab Pain" title="Kebab Pain" width="100px" height="100px"/></a>

<a href="?plat=frittes&prix=2&total=<?php echo $total+2;?>&lst_plats=<?php echo $lst_plats.'frittes - 2';?>">
<img src="./images/kebab/frittes.jpg" alt="Frittes" title="Frittes" width="100px" height="100px"/></a>

<a href="?plat=kefta&prix=4&total=<?php echo $total+4;?>&lst_plats=<?php echo $lst_plats.'kefta - 4';?>">
<img src="./images/kebab/kefta.jpg" alt="kefta" title="kefta" width="100px" height="100px"/></a>

<?php

Echo "<pre>";
echo "<br>------------------------------<br>";
echo " <span>Liste des produits :</span>";
echo "<br>------------------------------<br>";
$arrP = explode(",",$lst_plats);
foreach($arrP as $P){
 echo "<br>".$P;
}
echo "<br><strong>TOTAL = ".$total."</strong>";
echo "</pre>";
?>


Ca devrait donner ça (les images en plus ^^ )


Et dans cet exemple.. l'url contient :
http://localhost/testJS/test3.php?plat=frittes&prix=2&total=25&lst_plats=Kebab%20Pain%20-%205,frittes%20-%202,kefta%20-%204,frittes%20-%202,Kebab%20Pain%20-%205,Kebab%20Pain%20-%205,frittes%20-%202



PS: par rapport à ta remarque (celle que tu répète sans arrêts ) :
Mon prof ma dis de mettre un if a un moment.

Dis toi.. que des IF tu en as déjà 4 dans le code que je t'ai donné...
ils sont là :
$plat  = isset($_GET['plat']) && $_GET['plat']!=''?$_GET['plat']:'';
$prix  = isset($_GET['prix']) && $_GET['prix']!=''?$_GET['prix']:0;
$total = isset($_GET['total']) && $_GET['total']!=''?(float)$_GET['total']:0;
$lst_plats = isset($_GET['lst_plats']) && $_GET['lst_plats']!=''?$_GET['lst_plats'].",":$plat;

C'est ce qu'on appel l'écriture TERNAIRE.
Et comme je sens que tu vas me demandé ... "c'est quoi ???" .. la réponse est là :http://laute.fr/2009/09/05/conditions-ternaires-et-php/

Maintenant..; si ce n'est pas de ces IF là que ton prof parlait.. le mieux c'est que tu lui demande exactement ce qu'il veut...
Car là.. je suis en train de faire ton exo .... mais normalement ca devrait bien être toi qui code...
Et lorsque ton prof te donne des consignes que tu ne comprend pas... c'est vers lui qu'il faut te retourner pour lui demander des explications.... et pas attendre bêtement qu'un gentil internaute devine à ta place ce qui est attendu....


0
Utilisateur anonyme
 
Ma parole que je suis bete le code marche j'ai oublier de mettre index.php au debut mon dieu....
Ca marche enfin..... -,-

Je vais essayer de le refaire en apprenant le ternaire.

Merci Beaucoup !!!
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > Utilisateur anonyme
 
Et n'oublie pas de revenir ici pour me donner ma note ( heuuu.. ta note... enfin.. celle que le prof te donnera pour cet exo...) :-)
0