Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Non résolu

Langage PHP :Pb Liste déroulante + Affichage

mikacontact, le vendredi 8 décembre 2006 à 04:40:09
Bonjour tout le monde... Il est tard et je désespère, alors je post ici mon problème avant de perdre espoir.

Mon sujet: Panier d'une boutique de e-commerce.
J'ai une page panier.php dans laquelle j'ai une liste déroulante. Cette liste me propose, pour un même article, trois choix: 1,2 ou 3 (qui correspondent à des quantités). Sélectionner 2 dans ma liste déroulante revient donc à dire que je veux commander 2 articles de la même référence. Pour ce faire, je clique sur "2" dans ma liste déroulante, et ensuite je clique sur un bouton "Actualiser" pour mettre à jour le prix total de ma commande (Total=Prix . quantité, sisi, je promet )

Problème n°1: Avec le code ci-dessous, lorsque je clique sur "actualiser" après avoir saisie une quantité de "2", ça me remet ma liste déroulante sur la valeur initiale ( à savoir '1'). Comment faire pour qu'après avoir cliquer sur "actualiser", la valeur "2" reste affichée sur ma page.

Extrait du code concernant ce pb:
//Mon script pour l'actualisation:
if($modifPanier=="ACTUALISER")
{
for($i=0;$i<count($liste);$i++)
{
$nbi='nb'.$i; // Concaténation
$list[$i][1]=$_GET["$nbi"]; // recup du nombre d'article dans la liste
$liste[$i][3]=$liste[$i][1]*$liste[$i][2]; // prixArticle=nbre*prixUnitaire
}
$_SESSION['liste']=$liste; // mAj de la liste
}

//Ma liste déroulante:
<select name="nb<?php echo $i ?>" id="nb" > <!-- Affiche nb0, nb1, nb2, etc.-->
<option value="1" <?php if($liste[$i][1]==1) echo "SELECTED"; ?>>1</option>
<option value="2" <?php if($liste[$i][1]==2) echo "SELECTED"; ?>>2</option>
<option value="3" <?php if($liste[$i][1]==3) echo "SELECTED"; ?>>3</option>
</select>
</div>
</label></td>

// Mon bouton actualiser:
<label>
<input type="submit" name="modifPanier" value="ACTUALISER" />
</label>

Problème n°2: A l'évidence, mon objectif est d'afficher le coût total de la commande.
J'utilise donc la formule simple suivante: $total+=$row_rsPanier['prix'] * $liste[$i][1];
mais le problème, c'est que quand je sélectionne une quantité de '2' par exemple pour un article, ça ne me calcul ni ne m'affiche ce fameux $total . Par contre, lorsque j'ajoute différents articles, le total se calcul bien entre les différents article, sur la base d'une quantité de '1'.

Je vous met le code complet de ma page panier.php:
<?php
session_start(); // Sert à démarrer une session.

//*******************************************INITIALISATION DES VARIABLE***********************************************

//----------------------
if(!isset($_SESSION['total'])) /* $_SESSION[] -> tableau global contenant toutes les variables de sessions pour la session courante*/
$_SESSION['total']=0;
//----------------------
if(!isset($_GET['ajoutPanier']))
$ajoutPanier=""; // Init de ajoutPanier.
else $ajoutPanier=$_GET['ajoutPanier']; // On récup la valeur de ajoutPanier qui est passée par URL.
//----------------------
if(!isset($_GET['modifPanier']))
$modifPanier=""; // Init de modifPanier.
else $modifPanier=$_GET['modifPanier'];
//----------------------
if(!isset($_GET['suppPanier']))
$suppPanier=""; // Init de suppPanier.
else $suppPanier=$_GET['suppPanier'];
//----------------------
if(!isset($_GET['enregistreCommande']))
$enregistreCommande=""; // Init de enregistreCommande.
else $enregistreCommande=$_GET['enregistreCommande'];
//----------------------
if(!isset($_GET['article']))
$article=""; // Init de article.
else $article=$_GET['article'];
//----------------------
if(isset($_SESSION['liste']))
$liste=$_SESSION['liste']; // $Liste prend les valeurs de la liste contenue dans la variable de session.

//**************************************FIN DE INITIALISATION DES VARIABLE*********************************************
?>

<?php
//**********************************UTILISATION DES PARAMETRES DE CONNEXION DE LA BDD**********************************
require_once('../Connections/ConnexionBoutique.php');
?>

<?php
mysql_select_db($database_ConnexionBoutique, $ConnexionBoutique); // Sélectionne une base de données MySQL

//*******************************************SCRIPT AJOUT PANIER******************************************************
if ($ajoutPanier=="AJOUTER")
{
$reference=$_GET['reference'];
$nb=1; // La quantité par défaut est égale à 1.
$prix=$_GET['prix'];
$liste[]=array($reference,$nb,$prix,$prix); // Création d'un tableau dynamique.
$_SESSION['liste']=$liste;
}

//*******************************************SCRIPT MODIF PANIER******************************************************
if($modifPanier=="ACTUALISER")
{
for($i=0;$i<count($liste);$i++)
{
$nbi='nb'.$i; // Concaténation
$list[$i][1]=$_GET["$nbi"]; // recup du nombre d'article dans la liste
$liste[$i][3]=$liste[$i][1]*$liste[$i][2]; // prixArticle=nbre*prixUnitaire
}
$_SESSION['liste']=$liste; // mAj de la liste
}

//*******************************************SCRIPT SUPP PANIER*******************************************************
if($suppPanier=="SUPPRIMER")
{
for($i=0;$i<count($liste);$i++)
{
if($article==$i)
array_splice($liste,$i,1); // Suppression de l'article.
}
$_SESSION['liste']=$liste; // mAj de la liste
}

//*****************************************SCRIPT ENREGISTRER CMDE****************************************************
if($enregistreCommande=="COMMANDER")
{
if(!isset($_GET['action'])) // Si la variable action n'a pas encore de valeur, alors
$_SESSION['action']="ENREGISTRER"; // Mémorisation de l'action dans une variable de session avec la valeur //"ENREGISTRER"

// header("Location: commande.php"); //Ne fonctionne pas, je ne sais pas pourquoi, donc j'utilise le javascript // suivant:

// On redirige automatiquement l'utilisateur vers la fiche pour commander:
echo '<script language="Javascript">
<!--
document.location.replace("commande.php");
// -->
</script>';
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><!-- InstanceBegin template="/Templates/Modele Public.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Document sans titre</title>
</head>

<body>
<div align="center"><img src="../images/bandeauapublic.GIF" width="650" height="156" border="0" usemap="#Map" />
<map name="Map" id="Map">
<area shape="rect" coords="6,114,156,157" href="catalogue.php" />
<area shape="rect" coords="187,115,299,155" href="panier.php" />
<area shape="rect" coords="316,114,495,159" href="commande.php" /><area shape="rect" coords="529,114,642,160" href="../Administrateur/index.php" />
</map></div>
<table width="912" height="94" border="0" align="center">
<tr><!-- InstanceBeginEditable name="regionPublicModifiable" -->
<th scope="col">

<?php
if(isset($liste)) //affiche le tableau que s'il y a au moins un article.
{
?>

<form id="formulairePanier" name="formulairePanier" method="get" action="panier.php">
<table width="802" border="2">
<tr>
<th width="188" scope="col">Référence</th>
<th width="158" scope="col">Quantité</th>
<th width="182" scope="col">Prix</th>
<th width="244" scope="col">Supprimer</th>
</tr>

<?php
$total=0.00; // Initialisation du total de la commande à 0.
for($i=0;$i<count($liste);$i++)
{ // Déf. de la requête SQL afin de récupérer les informations de l'article stockées dans la BDD
// La requete suiv. prend tous les champs de la table articles en fonction de la référence de chaque article:
$query_rsPanier="select * from articles where reference='".$liste[$i][0]."'"; // dimx=$i : Les articles / //dimy=0: reference
$rsPanier=mysql_query($query_rsPanier, $ConnexionBoutique);
$row_rsPanier=mysql_fetch_assoc($rsPanier); // Retourne un tableau associatif qui contient la ligne lue dans le // résultat $rsPanier
?>

<tr>
<td><div align="center">

<?php
echo $row_rsPanier['nom']
?></div></td>

<td><label>
<div align="center">

<select name="nb<?php echo $i ?>" id="nb" > <!-- Affiche nb0, nb1, nb2, etc.-->
<!-- value indique la valeur envoyée au serveur si cette option est choisie -->
<option value="1" <?php if($liste[$i][1]==1) echo "SELECTED"; ?>>1</option>
<option value="2" <?php if($liste[$i][1]==2) echo "SELECTED"; ?>>2</option>
<option value="3" <?php if($liste[$i][1]==3) echo "SELECTED"; ?>>3</option>
</select>
</div>
</label></td>

<td><div align="center">
<?php
echo $row_rsPanier['prix']
?>
</div></td>

<td><div align="center">

<a href="panier.php?suppPanier=SUPPRIMER&article=<?php echo $i ?>">

<img src="../images/Next.gif" width="20" height="12" /></div></td>
</tr>
<?php
$total+=$row_rsPanier['prix'] * $liste[$i][1];

} // FIN DU BLOC FOR

$_SESSION['total']=$total; // Mémorise le total dans la session.
?>

<tr>
<td> </td>
<td> </td>
<td><div align="center">TOTAL: <?php echo $total ?> Euros </div></td>
<td> </td>
</tr>
</table>
<p>
<label>
<input type="submit" name="modifPanier" value="ACTUALISER" />
</label>
<label>
<input type="submit" name="enregistreCommande" value="COMMANDER" />
</label>
</p>
</form>

<?php } else { ?>
<p align="center"><strong><font size="4" face="Verdana, Arial, Helvetica, sans-serif">Votre panier est vide</font></strong></p>

</th>
<?php
} // FIN DU TEST isset($liste)
?>
<!-- InstanceEndEditable --></tr>
</table>
<div align="center"><img src="../images/BarreBasPublic.GIF" width="649" height="18" />
</div>
</body>
<!-- InstanceEnd --></html>


J'ai essayé d'être le plus concis possible, au détriment d'une certaine longueur.
Merci pour votre aide.
Cordialement.
Répondre à mikacontact  Signaler ce message aux modérateurs Aller au dernier message

1


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
oberion, le vendredi 8 décembre 2006 à 11:28:47
Hello,

Pour le pb n°1, il est ou le <form> ? Ourson grognon
Répondre à oberion

2


  • 1
    Ce message vous semble utile, votez !
  • Ce message ne vous semble pas utile, votez !
  • Signaler ce message aux modérateurs
 mikacontact, le vendredi 8 décembre 2006 à 15:29:28
<form id="formulairePanier" name="formulairePanier" method="get" action="panier.php">

:D
Répondre à mikacontact

Résultats pour Langage PHP :Pb Liste déroulante + Affichage

HTML PHP liste deroulante $$$$$$$ lien$$$$$$ (Résolu) Bonjour, j'ai creer une liste deroulante il y 3 options et je veux envoyer l'utilisateur sur une autre page kan il choisi l'option 1 et sur une autre page pour l'option 2 et idem pour la option 3. et je ne sais pas comment faire:... www.commentcamarche.net/forum/affich-6098285-html-php-liste-deroulante-lien
[PHP] liste déroulante (Résolu) Bonjour, Je souhaite afficher dans un formulaire une liste déroulante dont les données sont récupérées d'une table MySQL. Je voudrait avoir la possibilité de rajouter de nouvelles données dans cette même liste déroulante. Ceci est-il possible en... www.commentcamarche.net/forum/affich-4517021-php-liste-deroulante
Php+liste deroulante+doublons (Résolu) Bonjour, Je genere une liste deroulante grace a une requete sql et j'aimerais simplement supprimmer les doublons . J'ai deja chercher sur le net mais je n'ai rien trouver de concluant,donc toute aide serai la bienvenue !!! merci... www.commentcamarche.net/forum/affich-4822726-php-liste-deroulante-doublons

Résultats pour Langage PHP :Pb Liste déroulante + Affichage

Listes déroulantes simples avec ExcelDans votre tableau, vous souhaitez insérer un texte ou une valeur choisi dans une liste (déroulante). vous créez votre liste, ligne aprés ligne, sur votre feuille en cours ou sur une autre feuille du classeur en cours. vous la nommez : INSERTION... www.commentcamarche.net/faq/sujet-8674-listes-deroulantes-simples-avec-excel

Résultats pour Langage PHP :Pb Liste déroulante + Affichage

Probleme affichage liste deroulante (Résolu)Bonjour, j'ai une liste déroulante statique le probleme et que lorsque je selectionne une valeur et je la valide le fonctionnment et bien effectuer mais a l'affichage la valeur que j'ai selectionner ne reste pas afficher, ma liste... www.commentcamarche.net/forum/affich-5089267-probleme-affichage-liste-deroulante
Liste déroulante en php Mysql (Résolu)Bonjour, J'ai un petit problème dont je suis sur beaucoup d'entre vous ont la solution Voila, je remplis une liste déroulante avec une table Mysql (en php). Mon problème est que je n'arrive pas à faire en sorte que chaque élement de la... www.commentcamarche.net/forum/affich-1428706-liste-deroulante-en-php-mysql
Liste déroulante en php/lien hypertexte (Résolu)Bonjour, Je suis un débutant en php. La question est peut etre evidente mais je n'ai pas trouvé la réponse sur le forum. Voila le pb, je souhaite faire 2 listes déroulantes en php puis mettre un bouton submit qui suivant les choix combinés... www.commentcamarche.net/forum/affich-2367127-liste-deroulante-en-php-lien-hypertexte