begin process at 2012 05 31 13:48:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Récupérer par session


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

Récupérer par session

mardi 8 avril 2008 à 18:01:27 | Récupérer par session

bibo06

Bonjour,

J'ai posé une question sur un forum on l'on pas mal avancé, mais on est resté bloqué sur un petit problème, peut être pourriez vous me filer un coup de main.
Je m'explique, je suis en train de créer un site oscommerce, et je me suis fais une partie commande express.
C'est asser simple, les revendeur après identification peuvent avoir accès la partie commande express qui leur affiche la liste complète des produits par catégorie (j'ai une page destiné à la collection homme, une autre pour collection femme...).

Il peut donc selectionner ces produits à l'aide d'une checkbox et mettre les quantités.
Une fois son choix fais, il a le choix entre cliquer sur visionner sa commande envoyer la commande ou bien, aller sur la page d'une autre collection et choisir d'autre produits.

Mon problème est que j'aimerai garder en mémoire les produits déjà coché dans les différentes collection.
Par exemple:
  - Je choisis 2 produits dans la collection homme
  - Je clique sur visionner ma commande, mais je me rent compte que j'ai oublié quelque chose
  - Je clique sur retour et je rajoute 1 article de la collection homme toute en verifiant que les produits que j'ai déjà selectionnés sont bien cochés
  - Je vais également dans la collection femme pour choisir 2 articles
  - Je re-clique sur visionner ma commande et la j'ai mes 5 produits qui sont biens présents.

J'ai voulu utilisé la session, se qui me parrait le mieu car pas d'accès à la base pour stocker les produits selectionnés.
J'arrive à récupéré les produits séléctionnés, à les mettre en mémoire session, mais mon soucis et au moment du retour sur la page du listing produits, je n'arrive à récupérer les produits coché ou bien ma liste s'affiche en double...

Voici la partie de la page viosionner ma commande qui récupère les produits selectionné et les place en session:

$prix_total=0;
foreach ( $_POST["select"] AS  $value ){
 $data = explode("-", $value); 
 if ((!empty($_POST[$data[0]])) && ($_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">
     <table border="0" cellpadding="0" cellspacing="0">
       <tr><td class="main" height="10" width="100%"></td></tr>
       <tr><td class="main_bold" width="720">' . tep_draw_separator('pixel_trans.gif', '10', '1') . '-&nbsp;' . $data[1] . '<input type="hidden" name="select[]" value="'. $data[1] . '-' . $_POST[$data[0]] . '-' . $data[3] . '-' . $data[2] . '-' . $prix_unitaire . '-' . $prix . '-' . $prix_total . '" /></td></tr>
       <tr><td class="main" width="720">' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Quantité : ' . $_POST[$data[0]] . '</td></tr>
       <tr><td class="main" width="720">' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Couleur : ' . $data[3] . '</td></tr>
       <tr><td class="main" width="720">' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Taille : ' . $data[2] . '</td></tr>
       <tr><td class="main" width="720">' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Prix unitaire : ' . $prix_unitaire . ' Euros</td></tr>
       <tr><td class="main" width="720">' . tep_draw_separator('pixel_trans.gif', '30', '1') . 'Sous-total : ' . $prix . ' Euros</td></tr>
     </table>
      </td>
    </tr>';
  
  //mise en memoire session
    $_SESSION['panier'][] = array('nom'=>$data[1],
         'couleur'=>$data[3],
         'taille'=>$data[2],
         'quantite'=>$_POST[$data[0]]);
 

 }


Avec la personne sur l'autre forum, on a essayer ce script sur la page qui liste les produits d'une collection et qui devrait coché les produits selectionnés ultérieurement (page appelé lorsqu'on clique sur retour de la page visionner ma commande):

for($i=0;$i<count($_SESSION['panier']);$i++) {
              $data[]= array('nom'=>$_SESSION['panier'][$i]['nom'],
                                    'couleur'=>$_SESSION['panier'][$i]['couleur'],
                                    'taille'=>$_SESSION['panier'][$i]['taille'],
                                    'quantite'=>$_SESSION['panier'][$i]['quantite']); 
                                   
   }

   $count = count($data);

   foreach(range(0, $count) as $number) {
                $num.= $data[$number];
              }

              echo $num;

Voila sauf qu'on a aucun resultat sur le $num
J'ai fais un print_r($data); j'ai bien les les produits listé.
Quelqu'un aurait-il une idée??

mardi 8 avril 2008 à 19:47:54 | Re : Récupérer par session

malalam

Administrateur CodeS-SourceS
Hello,

tu n'oublies pas de mettre session_start() dans tes pages, avant toute autre chose ?
mardi 8 avril 2008 à 20:45:37 | Re : Récupérer par session

bibo06

Non non c'est site oscommerce pour revendeur et pour rentré dans la partie boutique, on est obligé de rentré un login mdp.
mardi 8 avril 2008 à 20:56:12 | Re : Récupérer par session

malalam

Administrateur CodeS-SourceS
Ca n'a pas de rapport : pour utiliser les sessions, tu dois obligatoirement les initialiser via un session_start() accessible par toutes yes pages. Je te conseille d'aller lire la doc sur les sessions sur php.net.

mardi 8 avril 2008 à 21:26:47 | Re : Récupérer par session

bibo06

Non mais c'est sur que ma session est démarrer, j'ai fait en sorte que si la personne n'est pas loger il est redirigé vers la page principal avec demande de rentrer le login mot de passe.
mardi 8 avril 2008 à 21:37:05 | Re : Récupérer par session

malalam

Administrateur CodeS-SourceS
Bon, comme tu veux.
mardi 8 avril 2008 à 23:18:18 | Re : Récupérer par session

bibo06

Pour être sur, j'ai tout de même vérifié, chacune de smes pages comporte un include qui va chercher un fichier ou il y a bien un session_start().

De toute manière si la session n'était pas démarrer, si je fais un print_r($_SESSION) je devrais rien avoir non? Or j'ai tout les renseignement sur la personne loger.

Aussi j'ai vérifier par un print_r($_SESSION['panier']) il me ressort bien les produits les produits selectionné auparavent.

En fait à la base, mon souci est que je ne sait pas comment eviter une boucle, j'ai ce script pour faire ma liste de produits et j'avais essayer le foreach pour lire le tableau qui contient les produits déjà choisit mais il me double ma liste de produit.

Voici le code qui crée la liste ainsi que le foreach:

$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'];
            }
            
            foreach (
$_SESSION["select"] AS  $value ){
            
$data_table explode("-"$value);
                
                if((
$data_table[1] == $data['products_name']) && ($data_table[3] == $data['couleur']) && ($data_table[2] == $data['taille'])) {
                    
$check ' checked="checked"';
                    
$quantite 'value="' $_SESSION[$data_table[0]] . '" ';
                } else {
                    
$check '';
                    
$quantite '';
                }
            
            
            echo 
'<tr>
            <td class="directbuy" width="90" align="center"><input type="checkbox" name="select[]" value="p' 
$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"><input class="quantite" type="text" name="p' 
$data['products_id'] . 'c' $data['couleur'] . 't' $data['taille'] . '" ' $quantite ' /></td>
            </tr>'
;
            
            }
    }



A la place du foreach j'ai egalement essayer avec un FOR mais j'ai le même résultat.
J'ai donc poster sur un forum et un gars sympa a essayer de m'aider en evitant le foreach et en passant par le code comme expliqué plus haut mais on arrive pas à avoir de bon résultats...

J'espère trouvé sur ceux forum quelqu'un qui pourrait m'aider, cette commande express commence vraiment à me sortir des yeux ca fait un petit moment que je suis dessus et tout seul j'ai du mal à avancer.
Si vous arriveriez à m'aider se serai vraiment vraiment sympa.
mercredi 9 avril 2008 à 10:12:29 | Re : Récupérer par session

bibo06

Personne aurait une idée??

Si c'est dur à comprendre dites le moi, j'essai de mieu expliquer, je vous donne plus d'infos si necessaire.

Faut vraiment que j'arrive à finir ce script je suis pas loin à mon avis, faut juste me donner une astuce pour avancé dans ce script. J'ai essayer pas mal de truc mais tout seul je n'y arriverai pas je n'ai pas asser de connaissance.



Cette discussion est classée dans : data, commande, session, collection, produits


Répondre à ce message

Sujets en rapport avec ce message

Vider un tableau [ par bibo06 ] Bonjour, J'ai fais une commande express sur un site de vente en ligne.Pour cette partie du site, je me sert d'un tableau construit de la sorte pour ga sessions [ par khadija212 ] Bonjour, S'il vous plait j'ai utilisé une session pour sauvegarder une variable id_client pour l'utilisé dans un autre fichier. Dans mon premier fich fermer une session [ par joujma5 ] bonjour j'ai un problème avec les sessions en faite j'ai deux session une session panier et une autre pour le client,une fois j'ai commandé un produit Variable de session qui disparait [ par ov3rdoze ] Bonjour à tous.Je souhaiterais ajouter un système de panier sur un site. J'ai donc fait une classe panier aui à priori fonctionne.A l'arrivée sur le s plusieurs produit sur une meme commande [ par lebelge95 ] Bonjour. Je voudrai savoir si quelqu'un aurait déjà un bout de code ou un entier ( ) qui permet de gérer un enregistrement d'une commande, de plusieu [php] petit probleme !! [ par dekovince ] bonjour a tous !!alors voila, je m explique :Un formulaire, une basse de donnee avec une table, et dans cette table un champs qui se nomme compteur !! toute petite question sur les sessions php! [ par joduak ] salut mes sauveurs! lol Bon c'est une simple question sur les sessions. Un client est sur mon site je lui attribue un id_session avec session_start() affichage de champs [ par chris tuckers ] Bonjour, alors, c'est une question top urgente et je bloque dessus depuis ce matin. Dans une page, je désirais voir renseigner deux tables. Voici lapr Variables de session [ par Aaron ] Bonjour,Je récupère des valeurs d'une table d'une base de données de la façon suivante :  $req = mysql_query("SELECT * FROM Users WHER Passer de variable avec HEADER() [ par chapata ] Hello ,voilà, j'ai un fichier "secure.php" qui vérifie s'il y a session ouverte sur le login, sinon redirige vers la page de login.php<b


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,624 sec (3)

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