IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Eviter une boucle


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 105
    Par défaut Eviter une boucle
    Salut à tous,

    J'ai une liste de produits avec checkbox pour selectionner se que l'on veut.
    Dans un tableau
    j'ai en mémoire les produits choisit auparavent.
    J'aimerai visionner ma liste de produits et faire en sorte que les produits contenu dans le tableau Session soit coché.

    Voici le code qui affiche la liste de produit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    while($data = mysql_fetch_assoc($request)) 
      { 
    			if ($data['final_price_promo'] == '') {
    				$final_price = $data['final_price'];
    			} else { 
    				$final_price = $data['final_price_promo'];
    			}
     
     
     
    			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>';
     
    	}
    Le tableau Session est formé de la sorte dans la page qui récapitule la commande que l'on veut passer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    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]]);
     
     
    	} 
    }
    Normalement j'ai ma condition qui va permettre de coché ou non les produits concerné mais je n'arrive pas à afficher.
    J'ai déjç la boucle qui parcoure le tableau de la requète pour faire la liste, si je fais une boucle pour parcourir le tableau Session, je vais ma liste en double, je ne sais pas comment faire.

  2. #2
    Membre émérite
    Avatar de gwinyam
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    1 162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 162
    Par défaut
    Essaie en utilisant une référence unique comme index de ton tableau en session pour chaque produit. Par exemple l'id en base de ta liste de produit. Comme ça quand tu parcours ta liste de produits pour l'afficher, tu n'as juste qu'à vérifier si la ligne indexée par l'id existe dans le tableau de session pour savoir que le produit y est stocké. Cela t'évitera une double boucle

Discussions similaires

  1. Eviter une boucle
    Par Muslimin dans le forum Diagrammes de Classes
    Réponses: 0
    Dernier message: 29/03/2014, 08h05
  2. eviter une boucle infine avec header
    Par cgodfrin dans le forum Langage
    Réponses: 5
    Dernier message: 01/04/2011, 12h26
  3. [PHP 4] Eviter un invalid argument dans une boucle
    Par goofyto8 dans le forum Langage
    Réponses: 2
    Dernier message: 30/01/2010, 21h56
  4. [Débutant] eviter une boucle for
    Par Minouchka dans le forum Images
    Réponses: 2
    Dernier message: 01/07/2009, 23h59
  5. Eviter une boucle while ?
    Par Synthox dans le forum Langage
    Réponses: 3
    Dernier message: 11/12/2006, 00h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo