Memoire session

cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009 - 31 mars 2008 à 14:03
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009 - 1 avril 2008 à 10:58
Bonjour à tous,

Je suis en train de créer une commande express sur un site oscommerce.
Cette commande express consiste à facilite la commande des revendeur en leur donnant accés à la liste des produits par collection (collection homme, collection femme...).

J'affiche le resultat d'un requète sous forme de tableau, la personne coche les produits qu'elle veut et lorsque qu'elle appuie sur visionner la commande, elle a un resumer puis peut lancer la commande.

Mon seul problème, j'ai des pages differentes pour chaque collection, en haut de chaque pages j'ai des liens qui permettent de passer d'une collection à une autre.
Et il faudrai que lorsque je change de collection je garde en mémoire les produits que je viens de cocher.
J'ai donc pensé à passer par la session.

Mes variables sont bien garder en mémoire c'est très bien sauf que lorsque que je veut re-afficher mes produits coché je ne sais pas comment faire.

Voici le code qui affiche les produits sur une des pages collection:

<?php 
        $request = tep_db_query("SELECT c.parent_id, pd.products_id, pd.products_name, p.products_ref, p.products_price, s.specials_new_products_price, taille.products_options_values_id, couleur.products_options_values_id, couleur.products_options_values_name AS couleur, taille.products_options_values_name AS taille, pa.options_values_price, ( 
pa.options_values_price + p.products_price ) AS final_price, (pa.options_values_price + s.specials_new_products_price ) AS final_price_promo 
FROM products_stock ps, products_description pd LEFT JOIN specials s USING(products_id), products_options_values couleur, products_options_values taille, products_attributes pa, products p, products_to_categories p2c, categories c 
WHERE pd.products_id = ps.products_id 
AND pd.products_id = pa.products_id 
AND pd.products_id = p.products_id 
AND p2c.products_id = pd.products_id 
AND p2c.categories_id = c.categories_id 
AND c.parent_id = 4 
AND SUBSTRING( ps.products_stock_attributes FROM 3 FOR 2 ) = couleur.products_options_values_id 
AND SUBSTRING( ps.products_stock_attributes FROM 8 FOR 2 ) = taille.products_options_values_id 
AND pa.options_values_id = taille.products_options_values_id 
ORDER BY pd.products_name, couleur.products_options_values_id, taille.products_options_values_id "); 
                 
while($data = mysql_fetch_assoc($request))  
  {  
            if ($data['final_price_promo'] == '') { 
                $final_price = $data['final_price']; 
            } else {  
                $final_price = $data['final_price_promo']; 
            } 
             
            if(($_SESSION['nom'] == $data['products_name']) &amp;&amp; ($_SESSION['couleur'] == $data['couleur']) &amp;&amp; ($_SESSION['taille'] == $data['taille'])) { 
                $check = ' checked="checked"'; 
                $quantite = 'value="' . $_SESSION['quantite'] . '" '; 
            } else { 
                $check = ''; 
                $quantite = ''; 
            } 
             
             
            echo '<tr> 
            <td class="directbuy" width="90" align="center">. $data['products_id'] . 'c' . $data['couleur'] . 't' . $data['taille'] . '-' . $data['products_name'] . '-' . $data['taille'] . '-' . $data['couleur'] . '-' . $final_price . '"' . $check . ' /></td> 
            <td class="directbuy_ref" width="50">' . $data['products_ref'] . '</td> 
            <td class="directbuy_nom" width="260">' . $data['products_name'] . '</td> 
            <td class="directbuy" width="130" align="center">' . $data['couleur'] . '</td> 
            <td class="directbuy" width="90" align="center">' .$data['taille'] . '</td> 
            <td class="directbuy_check" width="100" align="center">. $data['products_id'] . 'c' . $data['couleur'] . 't' . $data['taille'] . '" ' . $quantite . ' /></td> 
            </tr>'; 

    } 
             
?> 


Vous pouvez voir la partie qui va récupérer les variables mis en session, j'ai tester de mettre le foreach mais ca me mets ma liste de produits en doublons...
C'est à ce niveau que j'ai mon problème.

Et voici la partie qui sert à visionner la commande, je me sert de cette pour faire les essai je ferai en sorte de mettre le même genre de code sur les autre pages pour ca garde en mémoire sur toutes les pages:

<?php 
$prix_total=0; 
foreach ( $_POST["select"] AS  $value ){ 
    $data = explode("-", $value);     
    if ((!empty($_POST[$data[0]])) &amp;&amp; ($_POST[$data[0]] != 0)) { 
         
        $prix= $data[4] * $_POST[$data[0]]; 
        $prix_total += $prix; 
        $prix_unitaire= sprintf("%01.2f", $data[4]); 
        echo '<tr> 
                  <td class="main"> 
                                          ----
,
                      ----
' . tep_draw_separator('pixel_trans.gif', '10', '1') . '-&amp;nbsp;' . $data[1] . '. $data[1] . '-' . $_POST[$data[0]] . '-' . $data[3] . '-' . $data[2] . '-' . $prix_unitaire . '-' . $prix . '-' . $prix_total . '" />,
                      ----
' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Quantité : ' . $_POST[$data[0]] . ',
                      ----
' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Couleur : ' . $data[3] . ',
                      ----
' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Taille : ' . $data[2] . ',
                      ----
' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Prix unitaire : ' . $prix_unitaire . ' Euros,
                      ----
' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Sous-total : ' . $prix . ' Euros,
                    
 
                  </td> 
                </tr>'; 
         
        //mise en memoire session 
        $_SESSION['nom'][] = $data[1];   
        $_SESSION['quantite'][] = $_POST[$data[0]];  
        $_SESSION['couleur'][] = $data[3];   
        $_SESSION['taille'][] = $data[2];   

    }  
}     
    echo '<tr><td class="main" height="10"></td></tr> 
          <tr> 
            <td>' . tep_draw_separator("pixel_trans.gif", "100%", "3") . '</td> 
          </tr>';     
     
    if ((!empty($_POST[$data[0]])) &amp;&amp; ($_POST[$data[0]] != 0)) { 
        //montant total de la commande 
          echo '<tr><td class="main_bold" height="20">Total de la commande : ' . $prix_total . ' Euros</td></tr>';  
     
    } else { 
        echo '<td height="30" class="main">&amp;nbsp;' . TEXT_PROBLEM . '</td> 
              <tr> 
                <td>' . tep_draw_separator("pixel_trans.gif", "100%", "3") . '</td> 
              </tr> 
              <tr><td class="main_bold" height="20">Total de la commande :</td></tr>'; 
    } 
?> 


Ici on peut apercevoir les variables qui sont mis en mémoire session.

Voila je pense j'ai tout expliquer, si vous avez des question et surtout si vous auriez une solution à mon problème ca me permetterai d'avancer, ca fait un petit moment que je suis la dessu je galère pas mal...

5 réponses

zen69 Messages postés 584 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 29 avril 2010 1
31 mars 2008 à 16:32
Vous pouvez voir la partie qui va récupérer les variables mis en
session, j'ai tester de mettre le foreach mais ca me mets ma liste de
produits en doublons...

Je ne te suis pas la dessus... la liste en doublons ?

Aurais-tu oublié de mettre une condition pour ne pas recréer les items déjà dans la liste ?

<hr size="2" width="100%" />  zen69 aka Ortho Le Profett
  [site web]
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
31 mars 2008 à 17:44
Si tu veux, ma liste est formée de la sorte:

- ref produit - nom du produit - couleur -taille -


Avec le foreach j'ai ca:

- ref produit - nom du produit - couleur -taille -
- ref produit - nom du produit - couleur -taille -
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
31 mars 2008 à 17:53
Désolé je me suis trompé de code, dans la page ou j'ai ma requete sql, donc celle qu irécupère les variables mises en session, j'ai essayer :




foreach ($_SESSION["select"] AS  $value ){
   $data_table = explode("-", $value);
    
    if(($data_table[1] == $data['products_name']) &amp;&amp; ($data_table[3] == $data['couleur']) &amp;&amp; ($data_table[2] == $data['taille'])) {
     $check = ' checked="checked"';
     $quantite = 'value="' . $_SESSION[$data_table[0]] . '" ';
    } else {
     $check = '';
     $quantite = '';
    }


à la place de

if(($_SESSION['nom'] == $data['products_name']) &amp;&amp; ($_SESSION['couleur'] == $data['couleur']) &amp;&amp; ($_SESSION['taille'] == $data['taille'])) {
    $check = ' checked="checked"';
    $quantite = 'value="' . $_SESSION['quantite'] . '" ';
   } else {
    $check = '';
    $quantite = '';
   }


La partie de code que j'ai mis plus haut ne fonctionnait pas...
0
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
31 mars 2008 à 18:02
de plus... j'oublié, le code qui rentre les variable danbs la memoire session , je l'avais fais de la sorte:


//mise en memoire session
  $_SESSION["select"] = $_POST["select"];
 


au lieu de

//mise en memoire session 
        $_SESSION['nom'][] = $data[1];   
        $_SESSION['quantite'][] = $_POST[$data[0]];  
        $_SESSION['couleur'][] = $data[3];   
        $_SESSION['taille'][] = $data[2]; 
0

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

Posez votre question
cs_bibo06 Messages postés 116 Date d'inscription mardi 28 novembre 2006 Statut Membre Dernière intervention 10 mars 2009
1 avril 2008 à 10:58
Personne aurais une tite idée avec un foreach??
0
Rejoignez-nous