Demande aide pour Modification de la quantité d'un panier virtuel

geogeo62118 Messages postés 20 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 1 juin 2009 - 30 mai 2009 à 13:25
geogeo62118 Messages postés 20 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 1 juin 2009 - 1 juin 2009 à 14:00
Bonjour, je souhaiterai obtenir de l'aide pour la modification de quantité d'un panier virtuel.
Mon problème est que j'ai mis en place mon test pour la modification qui fonction bien mais uniquement pour le cas où je n'ai qu'un seul article présent dans mon panier. pour moi le problème viens du fait que les identifiant du formulaire possède les mêmes nom quelque soit la ligne du tableau. Je ne parviens pas à trouver de solution. Voici mon code :

<?php
//pour la validation du formulaire **************************************************************
echo"
<script language= 'javascript'>
    function verific()
    {
      alert('ok');
      alert(document.getElementById('qtee').value);
      document.bidon.submit();
    }
</script>
";
//***********************************************************************************************

//pour la modification de la quantité************************************************************
if (isset($_POST['index']))
{
  echo $_POST['index'];
 
  if ($_POST['qtee'] > 0)
        {
            $positionProduit = array_search($_POST['index'],  $_SESSION['panier']['reference']);
            if ($positionProduit !== false)
            {
                $_SESSION['panier']['quantite'][$positionProduit] = $_POST['qtee'] ;
            }
        }
}
//**********************************************************************************************

//pour la suppression d'un article *************************************************************
If (isset($_GET['index']))
{
  $temp=array();
  $temp['ref']=array();
  $temp['quant']=array();
 
  for($i = 0; $i < count($_SESSION['panier']['reference']); $i++)
        {
            if ($_SESSION['panier']['reference'][$i] !== $_GET['index'])
            {
                 array_push( $temp['ref'],$_SESSION['panier']['reference'][$i]);
                 array_push( $temp['quant'],$_SESSION['panier']['quantite'][$i]);
            }
        }
       unset($_SESSION['panier']);
    for ($i = 0; $i < count($temp['ref']); $i++)
    {
    $_SESSION['panier']['reference'][$i]=$temp['ref'][$i];
    $_SESSION['panier']['quantite'][$i]=$temp['quant'][$i];
  }
       
        unset($temp);
}
//*************************************************************************************

//connexion au SGBD MySQL
      $connexion =mysql_connect("localhost","root","");

      //test si la connexion est faites ou non

      if($connexion)
      {
        if(count($_SESSION['panier']['reference'])!=0)
        {
           $NbRef = count($_SESSION['panier']['reference']);
            $i=0;
  //entete du tableau *******************
  echo "<CENTER>Votre panier en Détail :

                Ref |
        Désignation |
        Px Unit. |
        Qté |
        Montant |
        Supprimer |
        \";
  //*************************************
            //connexion reussi
            //connexion a la base de données
            mysql_select_db(\"ciw\",$connexion);

            $tot =0;
            for($i=0;$i<$NbRef;$i++)
            {
              $requete= \"select * from produits where reference='\".$_SESSION['panier']['reference'][$i].\"';\";
              $resultat=mysql_query($requete,$connexion);
              //recuperation du jeu d'enregistrement
              $ligne = mysql_fetch_assoc($resultat);
            $mont = $ligne['prix']*$_SESSION['panier']['quantite'][$i];
            $tot = $tot+$mont;
              echo \" ----
".$_SESSION['panier']['reference'][$i].",
                     ".$ligne['nom'].",
                     ".$ligne['prix']." €,
                                          <form id='bidon' name='bidon' method='POST' action='index.php?page=detailpanier&ident=".$_SESSION['panier']['reference'][$i]."'>
                       
                       
                     </form>                
                    ,
                     ".$mont." €,
                     <form action='index.php?page=detailpanier&index=".$_SESSION['panier']['reference'][$i]."' method='POST'>
                           
                          </form>
                   ,
                     \";
            }
            echo \"----
Total ,
                     ".$tot." €,
                   

";
        ?>
             <form action="index.php?page=requetes&pan=vid" method="POST">
             
            </form>      
        <?
        }
        else
        {
          echo "<CENTER>Impossible car votre panier est vide!!!
</center>";
        }
      }
      else
      {
        //echec de la connexion
        echo" probleme de connexion
";
      }
     
     
?>

merci d'avance!

6 réponses

geogeo62118 Messages postés 20 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 1 juin 2009
30 mai 2009 à 13:27
j'ai pas fait attention mais il manque l'attribut name='bidon' dans le premier formulaire.

merci d'avance!
0
geogeo62118 Messages postés 20 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 1 juin 2009
30 mai 2009 à 13:29
voic le bon code:

<?php
//pour la validation du formulaire **************************************************************
echo"
<script language= 'javascript'>
    function verific()
    {
      alert('ok');
      alert(document.getElementById('qtee').value);
      document.bidon.submit();
    }
</script>
";
//***********************************************************************************************

//pour la modification de la quantité************************************************************
if (isset($_POST['index']))
{
  echo $_POST['index'];
 
  if ($_POST['qtee'] > 0)
        {
            $positionProduit = array_search($_POST['index'],  $_SESSION['panier']['reference']);
            if ($positionProduit !== false)
            {
                $_SESSION['panier']['quantite'][$positionProduit] = $_POST['qtee'] ;
            }
        }
}
//**********************************************************************************************

//pour la suppression d'un article *************************************************************
If (isset($_GET['index']))
{
  $temp=array();
  $temp['ref']=array();
  $temp['quant']=array();
 
  for($i = 0; $i < count($_SESSION['panier']['reference']); $i++)
        {
            if ($_SESSION['panier']['reference'][$i] !== $_GET['index'])
            {
                 array_push( $temp['ref'],$_SESSION['panier']['reference'][$i]);
                 array_push( $temp['quant'],$_SESSION['panier']['quantite'][$i]);
            }
        }
       unset($_SESSION['panier']);
    for ($i = 0; $i < count($temp['ref']); $i++)
    {
    $_SESSION['panier']['reference'][$i]=$temp['ref'][$i];
    $_SESSION['panier']['quantite'][$i]=$temp['quant'][$i];
  }
       
        unset($temp);
}
//*************************************************************************************

//connexion au SGBD MySQL
      $connexion =mysql_connect("localhost","root","");

      //test si la connexion est faites ou non

      if($connexion)
      {
        if(count($_SESSION['panier']['reference'])!=0)
        {
           $NbRef = count($_SESSION['panier']['reference']);
            $i=0;
  //entete du tableau *******************
  echo "<CENTER>Votre panier en Détail :

                Ref |
        Désignation |
        Px Unit. |
        Qté |
        Montant |
        Supprimer |
        \";
  //*************************************
            //connexion reussi
            //connexion a la base de données
            mysql_select_db(\"ciw\",$connexion);

            $tot =0;
            for($i=0;$i<$NbRef;$i++)
            {
              $requete= \"select * from produits where reference='\".$_SESSION['panier']['reference'][$i].\"';\";
              $resultat=mysql_query($requete,$connexion);
              //recuperation du jeu d'enregistrement
              $ligne = mysql_fetch_assoc($resultat);
            $mont = $ligne['prix']*$_SESSION['panier']['quantite'][$i];
            $tot = $tot+$mont;
              echo \" ----
".$_SESSION['panier']['reference'][$i].",
                     ".$ligne['nom'].",
                     ".$ligne['prix']." €,
                                          <form id='bidon' name='bidon' method='POST' action='index.php?page=detailpanier'>
                       
                       
                     </form>                
                    ,
                     ".$mont." €,
                     <form action='index.php?page=detailpanier&index=".$_SESSION['panier']['reference'][$i]."' method='POST'>
                           
                          </form>
                   ,
                     \";
            }
            echo \"----
Total ,
                     ".$tot." €,
                   

";
        ?>
             <form action="index.php?page=requetes&pan=vid" method="POST">
             
            </form>      
        <?
        }
        else
        {
          echo "<CENTER>Impossible car votre panier est vide!!!
</center>";
        }
      }
      else
      {
        //echec de la connexion
        echo" probleme de connexion
";
      }
     
     
?>

merci d'avance!
0
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
31 mai 2009 à 14:26
Bonjour,

La réponse à ton problème est formulée dans la question "pour moi le problème viens du fait que les identifiant du formulaire possède les mêmes nom quelque soit la ligne du tableau"

Si ton formulaire avait les noms d echamps suffixés par _01, _02... le s_01 etc étant le snuméros de lignes, ton problème n'existerait plus vraiment, chaque champ et ligne ayant une identité unique.
0
geogeo62118 Messages postés 20 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 1 juin 2009
1 juin 2009 à 12:42
je suis d'accord avec toi mais si je mais mon numéro de ligne dans le nom, comment faire pour valider mon formulaire qui lui se valide avec du javascript où le nom du formulaire à besoin d'être spécifié?
car si j'avais un bouton de type submit , là je n'aurai pas de problème, mais comme je passe par du javascript, je ne vois pas comment faire.

merci d'avance!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nautilus99 Messages postés 661 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 18 septembre 2009 1
1 juin 2009 à 13:40
Bonjour,

Le Javascript sait gérer aussi les indices dans les tables. Regardes dans les codes ici, ou sur phpclasses.org, il y a pas mal d'exemples fonctionnels.
0
geogeo62118 Messages postés 20 Date d'inscription mardi 5 juin 2007 Statut Membre Dernière intervention 1 juin 2009
1 juin 2009 à 14:00
ok je vais essayer de regarder sur phpclasses.org et pour l'autre visiblement ya pas le lien.
encore merci.

merci d'avance!
0
Rejoignez-nous