PHP sans bdd [Site Restaurant]

Résolu/Fermé
Utilisateur anonyme - 22 nov. 2014 à 18:18
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 - 26 nov. 2014 à 23:25
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 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 1 339
22 nov. 2014 à 22:10
Bonjour,

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

Cordialement
0
Utilisateur anonyme
22 nov. 2014 à 23:41
En effet je n'est pas précisé, c'est dans le cadre scolaire je suis en BTS SIO :)
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
22 nov. 2014 à 22:18
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
22 nov. 2014 à 23:52
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 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647 > Utilisateur anonyme
23 nov. 2014 à 00:22
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 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
23 nov. 2014 à 00:31
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
23 nov. 2014 à 15:06
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 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647 > Utilisateur anonyme
23 nov. 2014 à 16:23
La seconde parenthèse du if est mal placée. ..
désolé.
Il faut la mettre juste avant le {
0
Utilisateur anonyme
23 nov. 2014 à 16:52
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 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
24 nov. 2014 à 09:42
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
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
24 nov. 2014 à 19:28
Il m'a préconisé de mettre un if dans le php pour afficher la liste des produits
0
jordane45 Messages postés 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647 > Utilisateur anonyme
24 nov. 2014 à 20:03
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
26 nov. 2014 à 21:36
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 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647 > Utilisateur anonyme
26 nov. 2014 à 21:40
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 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647
26 nov. 2014 à 22:57
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
26 nov. 2014 à 23:17
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 38136 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 avril 2024 4 647 > Utilisateur anonyme
26 nov. 2014 à 23:25
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