probleme sessions panier

probleme sessions panier - PHP - Programmation

Marsh Posté le 10-11-2005 à 10:31:53    

bonjour à tous, voici mon probleme:
j'arrive a recuperer les infos dans panier.php mais si je retourne sur ma_page.php pour revenir sur panier.php les données ont disparu, je sais que le probleme vient de moi mais je seche:
 
session:

Code :
  1. <?
  2. session_start();
  3. $_SESSION['achats'][$id] = array( 'ref' => $ref, 'designation' => $designation, 'prixht' => $prixht, 'quantite' => $quantite );
  4. ?>


 
formulaire ajout articles sur mapage.php:

Code :
  1. <form name="form1" method="post" action="http://www.informatiques-consommables.com/commandes/panier.php">
  2.                         <table width="100%"  border="1" bordercolor="#FFFFFF" bgcolor="#FFFFFF">
  3.                           <tr bordercolor="#BDDFE1" bgcolor="#FFFFFF">
  4.                             <td width="14%" class="menugauche"><table width="100%" border="0" cellpadding="0" cellspacing="0" >
  5.                               <tr>
  6.                                 <td><div align="center"><img src="../../design/img/no_photo.gif" width="45" height="45"></div></td>
  7.                               </tr>
  8.                               <tr>
  9.                                 <td><input name="ref" type="text" id="champ1" value="1ALP1" size="8" maxlength="8" onFocus="this.blur()"></td>
  10.                               </tr>
  11.                             </table></td>
  12.                             <td width="51%" class="textes"><textarea name="designation" cols="25" rows="4" id="champ2" onFocus="this.blur()">PACK de 20 lecteurs de
  13. disquettes 3.5 PCE 1.44MB
  14. (coloris : beige)</textarea></td>
  15.                             <td width="14%" class="textes"><input name="prixht" type="text" id="champ3" value="106.46" size="8" maxlength="8" onFocus="this.blur()"></td>
  16.                             <td width="11%" class="textes"><select name="quantite" id="champ4">
  17.                               <option value="0" selected>0</option>
  18.                               <option value="1">1</option>
  19.                               <option value="2">2</option>
  20.                               <option value="3">3</option>
  21.                               <option value="4">4</option>
  22.                               <option value="5">5</option>
  23.                               <option value="6">6</option>
  24.                               <option value="7">7</option>
  25.                               <option value="8">8</option>
  26.                               <option value="9">9</option>
  27.                             </select></td>
  28.                             <td width="10%" class="textes"><div align="right">
  29.                               <input name="submit" type="Image" src="../../design/img/panier.jpg" alt="Ajouter" border="0">
  30.                             </div></td>
  31.                           </tr>
  32.                         </table>
  33.                       </form>


 
code panier.php:

Code :
  1. <?php
  2. // On appelle la session
  3. session_start();
  4. // On affiche une phrase résumant les infos sur l'utilisateur courant
  5. echo 'reference : ',$_POST['ref'],'<br />
  6.      designation : ',$_POST['designation'],'<br />
  7.      prix HT : ',$_POST['prixht'],'<br />
  8.      quantite : ',$_POST['quantite'],'<br />';
  9. ?>
  10. <p>&nbsp;</p>
  11. <a href="javascript:history.go(-1)">Retour</a>


 
merci pour vos reponses

Reply

Marsh Posté le 10-11-2005 à 10:31:53   

Reply

Marsh Posté le 10-11-2005 à 10:42:20    

Que je sois sur de bien comprendre tu fais
mapage -> panier ->mapage
Et tu voudrais que les données qu'il y avait dans ton formulaire soit présentes ?
 
[ps: ton code c'est nawak :o ]

Reply

Marsh Posté le 10-11-2005 à 10:47:12    

pas exactement que si l'on retourne dans panier les données restent presente.

Reply

Marsh Posté le 10-11-2005 à 11:40:53    

le code n'en est qu'au debut je sais mais si quelqu'un pouvait me donner une nouvelle indication pour me permettre d'avancer se serait sympa.

Reply

Marsh Posté le 10-11-2005 à 11:52:37    

Question con : ca serait pas mieux de récupérer les infos du panier dans la session vu que le panier est censé les conaitre quel que soit les pages par où on est passé?

Reply

Marsh Posté le 10-11-2005 à 11:55:27    

snif.. oui , je suis completement perdu...

Reply

Marsh Posté le 10-11-2005 à 11:57:35    

la je les transmet au panier donc il n'est peut etre pas necessaire de tout reprendre a zero?

Reply

Marsh Posté le 10-11-2005 à 11:58:51    

MAIS LE PANIER ne garde pas en memoire c'est ca mon premier probleme, pour test: http://www.informatiques-consommab [...] 1/alps.php

Reply

Marsh Posté le 10-11-2005 à 12:17:48    

Quand tu remplis le panier, t'envoie les données dans la session.
Et quand tu affiches le contenu du panier, tu relis le contenu de la session.
Pas besoin de s'embêter à afficher des données temporaires qui viennent d'ailleur et qui seront plus là dés la page suivante.

Reply

Marsh Posté le 10-11-2005 à 12:20:07    

1. je parie un "PACK de 20 lecteurs de disquettes 3.5" que tu n'as pas de session_start sur /Catalogue/1/alps.php
 
2. c'est quoi ce délire du onfocus="this.blur()" ??? une protection antipirate [:pingouino]
 
PS : je viens donc de passer commande d'un Pack de 20 à 1 centime HT
 
EDIT: ceci dit /commandes/panier.php n'envoi pas cookie non plus, donc y'aurait-il pas comme un bug de la config des sessions ... ?


Message édité par shakpana le 10-11-2005 à 12:22:25

---------------
Il faut toujours arrondir les angles -- Raymond Poincaré (à moins que ce soit de Cicéron)
Reply

Marsh Posté le 10-11-2005 à 12:20:07   

Reply

Marsh Posté le 10-11-2005 à 12:20:43    

Pour que ton panier soit "gardé en mémoire", il faut utiliser les sessions.
 
pour faire simple, tu peux faire dans panier.php

Code :
  1. $_SESSION['panier'][]['ref'] = $_POST['ref'];
  2. $_SESSION['panier'][]['designation'] = $_POST['designation'];
  3. $_SESSION['panier'][]['prixht'] = $_POST['prixht'];
  4. $_SESSION['panier'][]['quantite'] = $_POST['quantite'];


 
 
Ca te crée une veriable de session 'panier' qui est un tableau de produits.
chaque produit "contient" un tableau avec (ref, designation, ...)
 
 
Ensuite, pour accéder au premier produit du panier, tu fais
 

Code :
  1. echo $_SESSION['panier'][0]['ref'];


 
 
voilà, avec ca tu devrais t'en sortir. Après, tu pourrais essayer avec une classe panier, mais essaye déjà ca.
 


---------------
oui oui
Reply

Marsh Posté le 10-11-2005 à 12:23:48    

merci pour vos reponses omega2 et art_dupond m'y remet de suite

Reply

Marsh Posté le 10-11-2005 à 12:24:40    

Code :
  1. $_POST['prixht'];


oui, mais faudrait arreter ça, direct !


---------------
Il faut toujours arrondir les angles -- Raymond Poincaré (à moins que ce soit de Cicéron)
Reply

Marsh Posté le 10-11-2005 à 12:28:13    

pourquoi :??:


---------------
oui oui
Reply

Marsh Posté le 10-11-2005 à 12:29:23    


as-ton avis ...
si chacun peut choisir le prix des articles qu'il commande, c'est la faillite directe, non ?


---------------
Il faut toujours arrondir les angles -- Raymond Poincaré (à moins que ce soit de Cicéron)
Reply

Marsh Posté le 10-11-2005 à 12:31:45    

art_dupond > par ce que je suis sur que tes clients seront super content de pouvoir tout acheter à -20% (une vente ne peut être anulé que si le prix de vente est tellement diférent du prix de vente normal que l'acheteur est censé avoir deviné que le prix était éroné) et que ton patron sera vraiment mécontent de tout vendre à perte ce qui en plus lui vaudrait pas mal de procés. (en france du moins pour les procés)

Reply

Marsh Posté le 10-11-2005 à 12:33:41    

ah ok comme ca... je pensais que j'avais fait une erreur de transmission de variable ;)


Message édité par art_dupond le 10-11-2005 à 12:33:58

---------------
oui oui
Reply

Marsh Posté le 10-11-2005 à 13:28:15    

Ce qui deonne ceci pour panier.php:
<?php
// On appelle la session
session_start();
// On affiche une phrase résumant les infos sur l'utilisateur courant
echo $_SESSION['panier'][]['ref'] = $_POST['ref'];
$_SESSION['panier'][]['designation'] = $_POST['designation'];
$_SESSION['panier'][]['prixht'] = $_POST['prixht'];
$_SESSION['panier'][]['quantite'] = $_POST['quantite'];
?>

Reply

Marsh Posté le 10-11-2005 à 13:42:27    

j'ai un probleme : pour l'affichage j'ai repris ceci :
 
    <td><?php echo $_SESSION['panier'][0]['ref'];?></td>
    <td><?php echo $_SESSION['panier'][0]['designation'];?></td>
    <td><?php echo $_SESSION['panier'][0]['prixht'];?></td>
    <td><?php echo $_SESSION['panier'][0]['quantite'];?></td>
 
http://www.informatiques-consommab [...] panier.php et cela m'affiche uniquement la reference et pas les autre valeurs.

Reply

Marsh Posté le 10-11-2005 à 14:46:22    

voila qui est mieux:
    <td width="25%"><?php echo $_SESSION['panier'][0]['ref'];?></td>
    <td width="25%"><?php echo $_SESSION['panier'][1]['designation'];?></td>
    <td width="25%"><?php echo $_SESSION['panier'][2]['prixht'];?></td>
    <td width="25%"><?php echo $_SESSION['panier'][3]['quantite'];?></td>

Reply

Marsh Posté le 10-11-2005 à 14:47:29    

par contre je suis ennuyer pour ajouter plusieurs articles

Reply

Marsh Posté le 10-11-2005 à 14:57:24    

je ne sais plus quoi faire pour repartir et ajouter d'autre article dans le panier.

Reply

Marsh Posté le 10-11-2005 à 15:16:36    

il te manque des bases importantes : manipulation des tableaux ... RTFM
 
quand tu fais ça :

Code :
  1. $tableau[]['a'] = 1;
  2. $tableau[]['b'] = 2;
  3. $tableau[]['c'] = 3;

ça donne ça

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [a] => 1
  6.         )
  7.     [1] => Array
  8.         (
  9.             [b] => 2
  10.         )
  11.     [2] => Array
  12.         (
  13.             [c] => 3
  14.         )
  15. )

donc il faut que tu arrives à ça

Code :
  1. $tableau[0]['a'] = 1;
  2. $tableau[0]['b'] = 2;
  3. $tableau[0]['c'] = 3;


pour avoir ça  

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [a] => 1
  6.             [b] => 2
  7.             [c] => 3
  8.         )
  9. )


Donc fais fonctionner tes meninges ...
allez, une piste ultra-basique :
- le comptage d'éléments dans $tableau
 
une autre beaucoup plus mieux, mais avec un nouveau concept pour toi :
- les références ($ref = & $tableau[])

Message cité 1 fois
Message édité par shakpana le 10-11-2005 à 15:17:27

---------------
Il faut toujours arrondir les angles -- Raymond Poincaré (à moins que ce soit de Cicéron)
Reply

Marsh Posté le 10-11-2005 à 15:21:33    

merci shakpana, intervention utile et sympas :-) v me casser les meninges

Reply

Marsh Posté le 10-11-2005 à 15:30:12    

probablement une question legere mais ft -il que je cré une autre page ou je travail tjrs dans panier.php?

Reply

Marsh Posté le 10-11-2005 à 15:32:15    

shakpana a écrit :

il te manque des bases importantes : manipulation des tableaux ... RTFM
 
quand tu fais ça :

Code :
  1. $tableau[]['a'] = 1;
  2. $tableau[]['b'] = 2;
  3. $tableau[]['c'] = 3;

ça donne ça

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [a] => 1
  6.         )
  7.     [1] => Array
  8.         (
  9.             [b] => 2
  10.         )
  11.     [2] => Array
  12.         (
  13.             [c] => 3
  14.         )
  15. )

donc il faut que tu arrives à ça

Code :
  1. $tableau[0]['a'] = 1;
  2. $tableau[0]['b'] = 2;
  3. $tableau[0]['c'] = 3;


pour avoir ça  

Code :
  1. Array
  2. (
  3.     [0] => Array
  4.         (
  5.             [a] => 1
  6.             [b] => 2
  7.             [c] => 3
  8.         )
  9. )


Donc fais fonctionner tes meninges ...
allez, une piste ultra-basique :
- le comptage d'éléments dans $tableau
 
une autre beaucoup plus mieux, mais avec un nouveau concept pour toi :
- les références ($ref = & $tableau[])


 
oups c'est vrai :p
 
ma faute :jap:  


---------------
oui oui
Reply

Marsh Posté le 10-11-2005 à 15:44:16    

mes recherches de tutos sur la manipulation de tableau s'averent infructueuses, auriez vous une indication supplementaire car je patauge.

Reply

Marsh Posté le 10-11-2005 à 16:25:43    

Voilà mon indication assez précise je pense : si on précise pas d'indice à php, il créra un nouvel indice.
Donc si on veut faire un tableau de tableau, soit on ne lui donne pas d'indice et il faudra lui doner directement le tableau complet à insérer, soit on lui donne un indice et on peut remplir le tableau intérieur petit à petit.

Reply

Marsh Posté le 10-11-2005 à 16:47:56    

merci, je vais essayer je pense de me rabatre sur un systeme plus simple..

Reply

Marsh Posté le 11-11-2005 à 09:32:03    

<?php
session_start();
if (isset($_SESSION['panier']['nb_art'])) { // controle si un article existe deja dans le panier
    $id_art_sel=$_SESSION['panier']['nb_art']+1; // numero de l'article qui sera ajout‚
} else {$id_art_sel=1;} // si il n'y a pas d'articles d‚j… pr‚sent
 
echo '<form name="form1" method="post" action="panier.php">
<INPUT type="hidden" name="id_art" value="'.$id_art_sel.'">'; // pour passage de l'id article
?>
                        <table width="100%"  border="1" bordercolor="#FFFFFF" bgcolor="#FFFFFF">
                          <tr bordercolor="#BDDFE1" bgcolor="#FFFFFF">
                            <td width="14%" class="menugauche"><table width="100%" border="0" cellpadding="0" cellspacing="0" >
                              <tr>
                                <td><div align="center"><img src="../../design/img/no_photo.gif" width="45" height="45"></div></td>
                              </tr>
                              <tr>
                                <td><input name="ref" type="text" id="champ1" value="1ALP1" size="8" maxlength="8" onFocus="this.blur()"></td>
                              </tr>
                            </table></td>
                            <td width="51%" class="textes"><textarea name="designation" cols="25" rows="4" id="champ2" onFocus="this.blur()">PACK de 20 lecteurs de
disquettes 3.5 PCE 1.44MB
(coloris : beige)</textarea></td>
                            <td width="14%" class="textes"><input name="prixht" type="text" id="champ3" value="106.46" size="8" maxlength="8" onFocus="this.blur()"></td>
                            <td width="11%" class="textes"><select name="quantite" id="champ4">
                              <option value="0" selected>0</option>
                              <option value="1">1</option>
                              <option value="2">2</option>
                              <option value="3">3</option>
                              <option value="4">4</option>
                              <option value="5">5</option>
                              <option value="6">6</option>
                              <option value="7">7</option>
                              <option value="8">8</option>
                              <option value="9">9</option>
                            </select></td>
                            <td width="10%" class="textes"><div align="right">
                              <input type="submit" value="ajouter">
                            </div></td>
                          </tr>
                        </table>
                      </form>
</body>
</html>
 
Pour ta page panier :
<?php
session_start();
 
$_SESSION['panier']['nb_art']=$_POST['id_art']; // nombre d'articles dans le panier
$_SESSION["panierID$_POST[id_art]"]['ref'] = $_POST['ref'];
$_SESSION["panierID$_POST[id_art]"]['designation'] = $_POST['designation'];
$_SESSION["panierID$_POST[id_art]"]['prixht'] = $_POST['prixht'];
$_SESSION["panierID$_POST[id_art]"]['quantite'] = $_POST['quantite'];
 
//$_SESSION=array();
//print_r($_SESSION);
?>
<style type="text/css">
<!--
body,td,th {
 color: #006699;
}
body {
 background-image: url(../design/styles/fond.gif);
}
-->
</style>
<link href="../design/styles/styles.css" rel="stylesheet" type="text/css">
<table width="100%"  border="1" bordercolor="#FFFFFF" bgcolor="#FFFFFF">
  <tr bordercolor="#BDDFE1" bgcolor="#BDDFE1" class="menugauche">
    <td width="25%">Reference</td>
    <td width="25%" bordercolor="#BDDFE1">Description</td>
    <td width="25%">Prix HT &euro; </td>
    <td width="25%">Quantit&eacute;</td>
  </tr>
</table>
 
<?php
for ($i=1;$i <= $_SESSION['panier']['nb_art']; $i++) { // pour chaque article du panier
    echo '<table width="100%" border="1" bordercolor="#FFFFFF" bgcolor="#FFFFFF" >
      <tr>
        <td width="25%">'.$_SESSION["panierID$i"]['ref'].'</td>
        <td width="25%">'.$_SESSION["panierID$i"]['designation'].'</td>
        <td width="25%">'.$_SESSION["panierID$i"]['prixht'].'</td>
        <td width="25%">'.$_SESSION["panierID$i"]['quantite'].'</td>
      </tr>
    </table>';
     
}
?>
    <p>&nbsp;</p>
    <table width="100%" border="1" bordercolor="#FFFFFF" bgcolor="FFFFFF" >
      <tr>
        <td bgcolor="#FFFFFF"><a href="javascript:history.go(-1)">Retour</a></td>
      </tr>
    </table>
<p>&nbsp;</p>

Reply

Marsh Posté le 11-11-2005 à 12:26:46    

donc comme ceci je peu ajouter plusieurs articles mais si je reouvre mon panier les données ont disparues:
test:
http://www.informatiques-consommab [...] /alps1.php

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed