Menu

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

- - Dernière réponse : jordane45
Messages postés
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
- 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 :)

Afficher la suite 

5 réponses

Messages postés
6709
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1208
0
Merci
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
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665
0
Merci
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....
jordane45
Messages postés
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665 > 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
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665
0
Merci
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
jordane45
Messages postés
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665 > 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
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665
0
Merci
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;
?>


jordane45
Messages postés
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665 -
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;?>
jordane45
Messages postés
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665 -
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
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665
0
Merci
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 !!!
jordane45
Messages postés
25787
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
19 juin 2019
1665 > 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...) :-)