begin process at 2012 05 31 02:06:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Divers

 > 

Problème Liste Déroulante + Résultat


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème Liste Déroulante + Résultat

vendredi 8 décembre 2006 à 04:37:01 | Problème Liste Déroulante + Résultat

mikacontact34

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&eacute;f&eacute;rence</th>
          <th width="158" scope="col">Quantit&eacute;</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>&nbsp;</td>
          <td>&nbsp;</td>
          <td><div align="center">TOTAL: <?php echo $total ?> Euros </div></td>
          <td>&nbsp;</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.


Cette discussion est classée dans : liste, session, get, article, total


Répondre à ce message

Sujets en rapport avec ce message

balise div et select [ par yop59 ] bonjour j'ai un gros souci,, cea fait 2jours que j'essai dans une table de type div contenant un article, un qte de modifier la qte avec un select et panier : je ne m'en sors pas.... [ par jereln ] Bonjour, je suis en trai de créer un panier avec utilisation des sessions.J'ai une première page (index.php) qui correspond à mon catalogue. Chaque ar Variables de session IE et Firefox [ par aquanovax ] Bonjour !Je rencontre un problème ces derniers jours, depuis que je suis apssé sur firefox 3. J'utilise pour le site que je développe actuellement des Problème de caddie, help! [ par optimed ] Bonjour!Je suis en train de faire un projet de caddie dans le cadre de mes cours pour la fac, le but étant de simuler un magasin de disques online et problème de caddie [ par optimed ] Bonjour!Je suis en train de faire un projet de caddie dans le cadre de mes cours pour la fac, le but étant de simuler un magasin de disques online et Liste deroulante [ par emlesna ] Bonjour à tous,Je suis debutant en PHP.Je voudrais savoir comment consrerver une valeur dans une liste déroulantelors du rafraîchissement de la page.. caddie électronique [ par mannou83 ] salut ça fait une semaine que je travaille sur ça et j'arrive a rien j'espère qu'on pourra m'aider sur ce forum Problème pour retenir choix d'une liste déroulante [ par Rflx ] Bonjour, Quand j'écris un article dans une catégorie (choisie via une liste déroulante) et que je souhaite éditer l'article après, je n'arrive pas à Liste deroulante et session [ par DjChat ] Bonjour a tous, j'ai crée un formulaire qui est stocker dans une BDD qui est editable par l'utilisateur, j'arrive a faire que quand l'utilisateur edit Caddie : récupérer le prix et calculer les montants HT, TTC, TVA [ par azigui ] Bonjour à tous,Y'aurait-il un bonne âme pour m'aider. Voilà je débute en PHP, je dois créer un panier.J'ai réussi à faire de l'incrémentation et de la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales