PHP sans bdd [Site Restaurant] [Résolu/Fermé]

Signaler
-
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
-
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 :)

5 réponses

Messages postés
6648
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 280
Bonjour,

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

Cordialement
Utilisateur anonyme
En effet je n'est pas précisé, c'est dans le cadre scolaire je suis en BTS SIO :)
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209
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']);

?> 


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....
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209 > 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
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209
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;
//------------------------------------------------------------------
?>
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
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209 > Utilisateur anonyme
La seconde parenthèse du if est mal placée. ..
désolé.
Il faut la mettre juste avant le {
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 :(
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209
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;
?>


Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209
Et bien tu as une erreur dans l'url au niveau de lst_plats.
montre TON code php..
Utilisateur anonyme
C'est exactement le votre tous en haut de mon html :
<?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;

?>

Mon image :

<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>


et le php a la fin:
		<?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>";
		?>

Mais en realité quand je copie l'url des chose change :(
Utilisateur anonyme
Ah voila ca donne ca :

http://localhost/descargues/index.php?plat=Kebab%20Pain&prix=5&total=5&lst_plats=<?%20echo%20$lst_plats.%27Kebab%20Pain%20-%205%27;?>
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209
Pourquoi tu separes le code en trois ?
Tu as d'autres coses dans ta page ?
Utilisateur anonyme
Vue que c'est un restaurant j'ai au moins 30 image et je crois que les variable ce mettent en haut en php (je crois).

Mais avec une seul image ca devrai marcher pour tester
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209
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....


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 !!!
Messages postés
31190
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
24 janvier 2021
3 209 > 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...) :-)