Précédent   Forum des professionnels en informatique > PHP > Langage > Sessions
Sessions Forum d'entraide sur les sessions avec PHP. Avant de poster -> FAQ sessions, Cours sessions et Sources sécurité
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 25/11/2010, 17h00   #1
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Par défaut Sessions : efface tout au lieu de 1 élément

Bonjour à tous,

me revoilà avec mon problème de caddie.

Quasi tout fonctionne sauf que lorsque je tente de supprimer un élément, il me supprime tous les éléments de mon caddie. Il se retrouve donc vide. Il semblerait que l'id que je transmet en GET ne passe pas.

De plus je recharge ma page afin de mettre mon tableau à jour à l'aide de
<meta http-equiv="refresh" content="1;URL=<?php echo $_SERVER['PHP_SELF'] ?>"> mais il me le fait en boucle.

Quelqu'un aurait-il une idée?

Merci pour votre aide.

Voici la structure de mon cadie :

Code :
1
2
3
4
5
6
7
8
9
10
 
if (!isset($_SESSION['caddie']['prod'])) 
	{
    /* Initialisation du cadie */
    $_SESSION['caddie']         		=array();
    $_SESSION['caddie']['id'] 			=array();
    $_SESSION['caddie']['prod'] 		=array();
    $_SESSION['caddie']['qt']   		=array();
    $_SESSION['caddie']['nb_couleur'] 	=array();
 	}
et voici la page qui gère mon caddie

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
 
 
<?php
              echo '<table width="100%" class="table_prix">';
                echo '<tr>';
                  echo '<th>Ref</th>';
                  echo '<th>Photo</th>';
                  echo '<th>Quantit&eacute;</th>';
                  echo '<th>Produit</th>';
                  echo '<th>Prix Unitaire</th>';
                  echo '<th>Marquage</th>';
                  echo '<th>Quantit&eacute; Marquage</th>';
                  echo '<th>Total HTVA</th>';
                echo '</tr>';
            /* Debut boucle facture */
            if (!empty($_SESSION['caddie']['prod']))
			{
	        $caddie=count($_SESSION['caddie']['prod']);
        	}
        	else
        	{
        	$caddie=0;
        	}
        	$total=0;
	       	$total_facture=0;
      	    for ($i=0; $i<$caddie; $i++)
     		{
            $id			= $_SESSION['caddie']['id'][$i];
            $selected_stylo = $_SESSION['caddie']['prod'][$i];
            $quantity       = $_SESSION['caddie']['qt'][$i];
            $prix_quantity  = $quantity;
            $nb_couleur     = $_SESSION['caddie']['nb_couleur'][$i]; 
 
            /*Requetes de recherche*/
            $sql  = ("SELECT d.sty_id, d.sty_reference, d.sty_nom, d.ima_rang, d.ima_chemin, d.quantite, d.prix_vente, d.prx_print       
                      FROM v_devis3 d
                      WHERE d.sty_id = '".$selected_stylo."' AND d.ima_rang = '1'");
            $request_ref = mysql_query($sql) or die("S&eacute;lection de la base impossible !");
 
            $reference = mysql_fetch_assoc($request_ref);
 
            /* Test le prix/quantité à appliquer */
            if ($prix_quantity<5000) 
                { 
                echo '<p>D&eacute;sol&eacute;, la quantit&eacute; minimale est de 5000 pcs</p>'; 
                } 
                elseif ($prix_quantity >=5000 AND $prix_quantity <=10000) 
                { 
                $prix_quantity="5000";
                $prix_marquage=10; 
                } 
                elseif ($prix_quantity >=10000 AND $prix_quantity <15000) 
                { 
                $prix_quantity="10000"; 
                } 
                elseif ($prix_quantity >=15000 AND $prix_quantity <25000) 
                { 
                $prix_quantity="15000"; 
                } 
                elseif ($prix_quantity >=25000) 
                { 
                $prix_quantity="25000"; 
                } 
 
            $sql2 = ("SELECT d.sty_id, d.sty_reference, d.sty_nom, d.ima_rang, d.ima_chemin, d.quantite, d.prix_vente, d.prx_print, d.prt_prix       
                      FROM v_devis3 d
                      WHERE d.sty_id = '".$selected_stylo."' AND d.quantite='".$prix_quantity."' AND d.ima_rang = '1'");
 
            $request_prix  = mysql_query($sql2) or die("S&eacute;lection de la base impossible !");
            $request_prix  = mysql_fetch_assoc($request_prix);                
            $prix_uni = number_format($request_prix['prix_vente'], 4, ',','.');
 
                echo '<tr>';
                  echo '<td>'.$reference['sty_reference'].'
                  		<br /><a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&amp;id='.$_SESSION['caddie']['id'].'&amp;produit='.$_SESSION['caddie']['prod'].'&amp;quantite='.$_SESSION['caddie']['qt'].'&amp;quantite='.$_SESSION['caddie']['nb_couleur'].'">Supprimer cet article</a></td>';
                  echo '<td><img src="'.$reference['ima_chemin'].'" width="50" height="50" /></td>';
                  echo '<td>'.$quantity.'</td>';
                  echo '<td>'.$reference['sty_nom'].'</td>';
                  echo '<td>'.$prix_uni.' &euro;</td>';
                  echo '<td>'.$request_prix['prt_prix'].' &euro;</td>';
                  echo '<td>'.$nb_couleur.'</td>';
                  $total_stylo=$quantity*$request_prix['prix_vente'];
                  $total_marquage=(($nb_couleur*$request_prix['prt_prix'])*$quantity);
                  $total=$total_stylo+$total_marquage;
                  $total=number_format($total, 2, ',','.');
                  echo '<td class="prix"_rouge><b>'.$total.' &euro;</b></td>';
                  $total_facture+=$total;
                echo '</tr>';
         }       
              echo '<tr>';
              	echo '<td border="0"> </td>';
              	echo '<td border="0"> </td>';
              	echo '<td border="0"> </td>';
              	echo '<td border="0"> </td>';
              	echo '<td border="0"> </td>';
              	echo '<td border="0"> </td>';
              	echo '<td class="prix"_rouge><b>Total HTVA </b></td>';
              	echo '<td class="prix"_rouge><b>'.$total_facture.' &euro;</b></td>';
              echo '<tr>';
              echo '</table>';
 
 /* =>Suppression <= */
 if (isset($_GET['choix']) AND ($_GET['choix'] == "supprimer"))
 {
 $suppr_produit=$_GET['id'];
 echo '<p>Le produit '.$suppr_produit.' a été supprimé</p>';
 
 /* Stock contenu du panier sans celui à supprimer */
 $panier_tmp=array("id"=>array(),"produit"=>array(), "qt"=>array(),"nb_couleur"=>array());
 
 /* Comptage des articles du panier */
 $nb_produits=count($_SESSION['caddie']['id']);
 for($i=0; $i<$nb_produits; $i++)
		{
		if($_SESSION['caddie']['id'][$i]!=$suppr_produit)
			{
			echo '<p>passé</p>';
			array_push( $panier_tmp['id'], $_SESSION['caddie']['id'][$i]);
			array_push( $panier_tmp['prod'], $_SESSION['caddie']['prod'][$i]);
			array_push( $panier_tmp['qt'], $_SESSION['caddie']['qt'][$i]);
			array_push( $panier_tmp['nb_couleur'], $_SESSION['caddie']['nb_couleur'][$i]);
			}
		}
 /* Le transfert est terminé on réinitialise le panier */
 $_SESSION['caddie']=$panier_tmp;
/* Suppression du panier temporaire */
	unset($panier_tmp);
?>
<meta http-equiv="refresh" content="1;URL=<?php echo $_SERVER['PHP_SELF'] ?>">
<?php	
 }
 if (isset($_POST['devis']) AND ($_POST['selected_stylo'])!='') 
	{
	 echo '<p>Ajout POST</p>';
     $_select=array();
     $_select['id']    		=$_POST['new_id'];
     $_select['prod']    		=$_POST['selected_stylo'];
     $_select['qt']      		=$_POST['quantity'];
     $_select['nb_couleur']    	=$_POST['couleur'];
     array_push($_SESSION['caddie']['id'], $_select['id']);
     array_push($_SESSION['caddie']['prod'], $_select['prod']);
     array_push($_SESSION['caddie']['qt'], $_select['qt']);
     array_push($_SESSION['caddie']['nb_couleur'], $_select['nb_couleur']);
    echo '<meta http-equiv="refresh" content="1;URL="'.$_SERVER['PHP_SELF'].'">'; /*Va permettre de rafraichir la page pour afficher le nouvel article ajouté */ 
	}
			/* Continuer achats */
              echo '<a href="index.php"><p>Continuer mes achats</a></p>';
              echo '<p><a href="bon_commande.php?quantity='.$quantity.'">PDF</a></p>';
?>
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 09h16   #2
Membre régulier
 
Inscription : octobre 2010
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : octobre 2010
Messages : 101
Points : 71
Points : 71
Salut paintbox,

pour ton problème de caddie vide c'est normale car tu passes dans ton url le tableau 'id' et non la valeur qui t'intéresse:


Code :
<a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&amp;id='.$_SESSION['caddie']['id'][$i].'&amp;produit='.$_SESSION['caddie']['prod'][$i].'&amp;quantite='.$_SESSION['caddie']['qt'][$i].'&amp;quantite='.$_SESSION['caddie']['nb_couleur'][$i].'">Supprimer cet article</a>
N'oublie pas qu'a ce moment la tu es dans ta boucle for donc $i désigne l'élément courant.

ensuite pour ton souci de rechargement essaye de faire un
Code :
echo $_SERVER['PHP_SELF']
juste avant ta balise <meta>, histoire de vérifier le contenu, je pense qu'il y a toujours ?choix=supprimer dans ton url donc il est normal qu'il repasse dans ta condition et refasse le refresh.

pour mieux voir le réSultat, met en commentaire ton refresh:

Code :
1
2
echo $_SERVER['PHP_SELF'];
//echo '<meta http-equiv="refresh" content="1 URL="'.$_SERVER['PHP_SELF'].'">';
proxichou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 11h07   #3
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Hello Proxichou,

je ne vois pas ce que tu entends par valeur qui m'intéresse?

Je dois quand même supprimer la ligne qui m'intéresse et cette ligne se détermine par $_SESSION['caddie']['id'][$i] ? Est-ce faut ?

J'ai du mal à saisir la différence.
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 11h17   #4
Membre régulier
 
Inscription : octobre 2010
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : octobre 2010
Messages : 101
Points : 71
Points : 71
Dans ton code, par exemple, tu a écris:

Code :
$_SESSION['caddie']['id']
Ce qui désigne un tableau contenant TOUS les id de tes produits qu'il y a dans le panier.

Toi tu cherches a supprimer 1 élément, qui sera désigné par :

Code :
$_SESSION['caddie']['id'][1]; //id de ton produit au rang 1 dans ton caddie
d'ou l'intérêt de remplacer ton $_SESSION['caddie']['id'] par $_SESSION['caddie']['id'][$i]

autre chose, lorsque tu affiche les produits de ton panier tu récupère correctement ton id avec

Code :
$id			= $_SESSION['caddie']['id'][$i]
alors pourquoi l'avoir fait différemment lorsque tu souhaites récupérer un id pour le supprimer ?
proxichou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 11h23   #5
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
J'avais effectivement déjà essayé cela
<a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&amp;id='.$_SESSION['caddie']['id'][$i].'&amp;produit='.$_SESSION['caddie']['prod'].'&amp;quantite='.$_SESSION['caddie']['qt'].'&amp;quantite='.$_SESSION['caddie']['nb_couleur'].'">Supprimer cet article</a>

mais cela produit le même effet, tout disparaît. Le problème semble venir d'ailleurs ?
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 11h35   #6
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Pourquoi tu ne passes par simplement le $i en paramètre, plutôt que de passer par un tableau temporaire, tu pourra simplement faire :

unset($_SESSION['caddie']['id'][$suppr_produit]);
unset($_SESSION['caddie']['prod'][$suppr_produit]);
...
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 11h51   #7
Membre régulier
 
Inscription : octobre 2010
Messages : 101
Détails du profil
Informations personnelles :
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : octobre 2010
Messages : 101
Points : 71
Points : 71
Oui aussi, ça allégera ton code déjà.
proxichou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 11h58   #8
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Je viens de faire ceci comme tu le propose Joker-eph:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
 
if (isset($_GET['choix']) AND ($_GET['choix'] == "supprimer"))
 {
 $suppr_produit=$_GET['id'];
 echo '<p>Le produit '.$suppr_produit.' a été supprimé</p>';
 
 $nb_produits=count($_SESSION['caddie']['id']);
 for($i=0; $i<$nb_produits; $i++)
		{
		unset($_SESSION['caddie']['id'][$suppr_produit]); 
		unset($_SESSION['caddie']['prod'][$suppr_produit]);
		unset($_SESSION['caddie']['qt'][$suppr_produit]);
		unset($_SESSION['caddie']['nb_couleur'][$suppr_produit]);
		}
 /* Le transfert est terminé on réinitialise le panier */
 $_SESSION['caddie']=$panier_tmp;
/* Suppression du panier temporaire */
	unset($panier_tmp);
?>
<meta http-equiv="refresh" content="1;URL=<?php echo $_SERVER['PHP_SELF'] ?>">
<?php	
 }
mais cela ne fonctionne pas non plus.

Une question ? Mon lien supprimer ce produit doit bien passé ceci en paramètre ?

Code :
1
2
 
<a href="'.$_SERVER['PHP_SELF'].'?choix=supprimer&amp;id='.$_SESSION['caddie']['id'][$i].'&amp;produit='.$_SESSION['caddie']['prod'][$i].'&amp;quantite='.$_SESSION['caddie']['qt'][$i].'&amp;quantite='.$_SESSION['caddie']['nb_couleur'][$i].'">Supprimer cet article</a>
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 12h17   #9
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Je viens également de tester ceci :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
if (isset($_GET['choix']) AND ($_GET['choix'] == "supprimer"))
 {
 $suppr_produit=$_GET['id'];
 echo '<p>Le produit '.$suppr_produit.' a été supprimé</p>';
 
 $nb_produits=count($_SESSION['caddie']['id']);
 for($i=0; $i<$nb_produits; $i++)
		{
		if (($_SESSION['caddie']['id'][$i]==$suppr_produit))
		{
		unset($_SESSION['caddie']['id'][$i]); 
		unset($_SESSION['caddie']['prod'][$i]);
		unset($_SESSION['caddie']['qt'][$i]);
		unset($_SESSION['caddie']['nb_couleur'][$i]);
		}
		}
 /* Le transfert est terminé on réinitialise le panier */
 $_SESSION['caddie']=$panier_tmp;
/* Suppression du panier temporaire */
	unset($panier_tmp);
?>
<meta http-equiv="refresh" content="1;URL=<?php echo $_SERVER['PHP_SELF'] ?>">
<?php	
 }
Mais cela ne marche pas non plus. Je ne vois pas pourquoi? Je lui donne quand même l'id à supprimer ?
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 12h45   #10
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Ceci fonctionne :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
if (isset($_GET['choix']) AND ($_GET['choix'] == "supprimer"))
 {
 $suppr_produit=$_GET['id'];
 echo '<p>Le produit '.$suppr_produit.' a été supprimé</p>';
 
 $nb_produits=count($_SESSION['caddie']['id']);
 for($i=0; $i<$nb_produits; $i++)
		{
		if (($_SESSION['caddie']['id'][$i]==$suppr_produit))
		{
		unset($_SESSION['caddie']['id'][$i]); 
		unset($_SESSION['caddie']['prod'][$i]);
		unset($_SESSION['caddie']['qt'][$i]);
		unset($_SESSION['caddie']['nb_couleur'][$i]);
		}
		else
			{
			echo '<p>Désolé pas trouvé</p>';
			}
		}
?>
<meta http-equiv="refresh" content="5;URL=<?php echo $_SERVER['PHP_SELF'] ?>">
<?php	
 }
mais seulement à condition que je les supprimer en partant du bas de la liste et en remontant.

Si je supprime un élément dans la liste (ex: l'article 2 sur un total de 5) j'ai ceci comme erreur:
Idem si je commence par le haut de la liste (le 1 par ex)
Notice: Undefined offset: 2 in /Applications/MAMP/htdocs/projets/bics-promo/devis.php on line 95

Notice: Undefined offset: 2 in /Applications/MAMP/htdocs/projets/bics-promo/devis.php on line 96

Notice: Undefined offset: 2 in /Applications/MAMP/htdocs/projets/bics-promo/devis.php on line 97

Notice: Undefined offset: 2 in /Applications/MAMP/htdocs/projets/bics-promo/devis.php on line 99
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 13h38   #11
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
C'est bon mon problème est résolu. En fait c'était visiblement mon $panier_tmp qui n'avait pas la même structure que mon $_SESSION['caddie']

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
if (isset($_GET['choix']) AND ($_GET['choix'] == "supprimer"))
 {
 $suppr_produit=$_GET['id'];
 echo '<p>Le produit '.$suppr_produit.' a été supprimé</p>';
 
 /* Stock contenu du panier sans celui à supprimer */
 
 	$_SESSION['pannier']         		=array();
    $_SESSION['pannier']['id'] 			=array();
    $_SESSION['pannier']['prod'] 		=array();
    $_SESSION['pannier']['qt']   		=array();
    $_SESSION['pannier']['nb_couleur'] 	=array();
 
 /* Comptage des articles du panier */
 $nb_produits=count($_SESSION['caddie']['id']);
 for($i=0; $i<$nb_produits; $i++)
		{
		if($_SESSION['caddie']['id'][$i]!=$suppr_produit)
			{
			echo '<p>passé</p>';
			array_push( $_SESSION['pannier']['id'], $_SESSION['caddie']['id'][$i]);
			array_push( $_SESSION['pannier']['prod'], $_SESSION['caddie']['prod'][$i]);
			array_push( $_SESSION['pannier']['qt'], $_SESSION['caddie']['qt'][$i]);
			array_push( $_SESSION['pannier']['nb_couleur'], $_SESSION['caddie']['nb_couleur'][$i]);
			}
		}
 
 /* Le transfert est terminé on réinitialise le panier */
 $_SESSION['caddie']=$_SESSION['pannier'];
 
/* Suppression du panier temporaire */
	unset($_SESSION['pannier']);
?>
<meta http-equiv="refresh" content="1;URL=<?php echo $_SERVER['PHP_SELF'] ?>">
<?php	
 }

Merci à vous 2 pour votre aide !
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 14h24   #12
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Pourquoi faire simple quand on peut faire compliqué ?



Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
if (isset($_GET['choix']) AND ($_GET['choix'] == "supprimer")) {
 if(!isset($_GET['id'])) {
   echo 'Erreur, id manquant';
 else {
   $suppr_produit=$_GET['id'];
   echo '<p>Le produit '.$suppr_produit.' a été supprimé</p>';
   unset($_SESSION['caddie']['id'][$suppr_produit]); 
   unset($_SESSION['caddie']['prod'][$suppr_produit]);
   unset($_SESSION['caddie']['qt'][$suppr_produit]);
   unset($_SESSION['caddie']['nb_couleur'][$suppr_produit]);
 }
?>

D'une manière générale, ton code est vraiment spaghetti, c'est une horreur :-(

Rien qu'au niveau structure de donnée, ton caddie devrait plutôt être :

Code :
1
2
3
4
 
$_SESSION['caddie'][$id][...]
// Au lieu de 
$_SESSION['caddie'][...][$id]
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 14h35   #13
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Tu veux dire qu'il devrait plutôt se présenter comme ceci ?

$_SESSION ['caddie']['id']['prod']
$_SESSION ['caddie']['id']['qt']
$_SESSION ['caddie']['id']['nb_couleur']

Je pensais que ma façon de le construire était bonne.

Je débute et tes conseils sont les bienvenue !
Merci
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 14h52   #14
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Bon je restructure rapidement que tu vois l'idée :

Code :
1
2
3
4
5
6
 
if (!isset($_SESSION['caddie']['prod'])) 
	{
    /* Initialisation du cadie */
    $_SESSION['caddie'] =array();
 	}

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
 
<table width="100%" class="table_prix">
  <tr>
    <th>Ref</th>
    <th>Photo</th>
    <th>Quantit&eacute;</th>
    <th>Produit</th>
    <th>Prix Unitaire</th>
    <th>Marquage</th>
    <th>Quantit&eacute; Marquage</th>
    <th>Total HTVA</th>
  </tr>
<?php
/* Debut boucle facture */
  $total=0;
  $total_facture=0;
  if (!empty($_SESSION['caddie'])) {
      	    foreach($_SESSION['caddie'] as $i => $produit) {
              $id                  = $produit['id'];
              $selected_stylo = $produit['prod'];
              $quantity         = $produit['qt'];
              $prix_quantity  = $quantity;
              $nb_couleur     = $produit['nb_couleur']; 
 
            /*Requetes de recherche*/
            $sql  = ("SELECT d.sty_id, d.sty_reference, d.sty_nom, d.ima_rang, d.ima_chemin, d.quantite, d.prix_vente, d.prx_print       
                      FROM v_devis3 d
                      WHERE d.sty_id = '".$selected_stylo."' AND d.ima_rang = '1'");
            $request_ref = mysql_query($sql) or die("S&eacute;lection de la base impossible !");
 
            $reference = mysql_fetch_assoc($request_ref);
 
            /* Test le prix/quantité à appliquer */
            if ($prix_quantity<5000) { 
                echo '<p>D&eacute;sol&eacute;, la quantit&eacute; minimale est de 5000 pcs</p>'; 
            } elseif ($prix_quantity <=10000) { 
                $prix_quantity="5000";
                $prix_marquage=10; 
            } elseif ($prix_quantity <15000) { 
                $prix_quantity="10000"; 
            } elseif ($prix_quantity <25000) {
                $prix_quantity="15000"; 
            } elseif ($prix_quantity >=25000) { 
                $prix_quantity="25000"; 
            } 
 
 ....
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 15h02   #15
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
Ok, je vois.

Et pourquoi utiliser un foreach plutôt que qu'un if ?
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 15h09   #16
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Citation:
Envoyé par paintbox Voir le message
Ok, je vois.

Et pourquoi utiliser un foreach plutôt que qu'un if ?
Hum... tu devrais relire le code, le foreach remplace ton for($i=0; $i<$nb_produits; $i++)
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 15h15   #17
Membre à l'essai
 
Inscription : mars 2009
Messages : 170
Détails du profil
Informations forums :
Inscription : mars 2009
Messages : 170
Points : 20
Points : 20
oui j'avais compris mais je voulais juste savoir quel était l'avantage du foreach par rapport au if puisque les 2 fonctionnent ?
paintbox est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2010, 15h33   #18
Membre éclairé
 
Inscription : octobre 2004
Messages : 235
Détails du profil
Informations forums :
Inscription : octobre 2004
Messages : 235
Points : 360
Points : 360
Je ne comprends pas ta question, foreach() remplace for(), rien à voir avec if() ??
Joker-eph est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h19.


 
 
 
 
Partenaires

Hébergement Web