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

Langage PHP Discussion :

[Tableaux] Boucles et conditions


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 103
    Par défaut [Tableaux] Boucles et conditions
    Bonjour

    VOilà mon problème :

    je dois affichier une ligne de catégorie et sous-catégorie et divisios de ces sous catégories sous forme de <select>

    voilà mon script :

    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    <select name="idcateg" size="1">
    <option value="0">Choisissez</option>
    <?php
    	$sql6 = 'SELECT id,nom FROM categ';
    	$res6 = mysql_query($sql6) or die(mysql_error());
     
    	$sql7 = 'SELECT id,nom,categ FROM sscateg';
    	$res7 = mysql_query($sql7) or die(mysql_error());
     
    	$sql8 = 'SELECT id,nom,sscateg FROM divisions';
    	$res8 = mysql_query($sql8) or die(mysql_error());
     
    	while($row6 = mysql_fetch_row($res6))
    	{
    		// J'affiche la catégorie
    		echo '<option value="'.$row6[0].'"> - - - '.strtoupper($row6[1]).' - - - </option>';
    		// boucle sur les ss categ
    		while($row7 = mysql_fetch_row($res7))
    		{
    			// Si la ss catég en cours dans la boucle fait bien partie de la catégorie en cours
    			if($row7[2] == $row6[0])
    			{
    				// J'affiche la ss-categ
    				echo '<option value="s'.$row7[0].'"> - - '.$row7[1].' - - </option>';
    				// Boucle sur les divisons
    				while($row8 = mysql_fetch_row($res8))
    				{
    					// Si la division en cours fait partie de la ss categ
    					if($row8[2] == $row7[0])
    					{
    						// j'affiche la divion
    						echo '<option value="d'.$row8[0].'">'.$row8[1].'</option>';
    					}
    				}
    			}
    		}
    	}
    ?>
    </select>


    Le problème est le suivant : tout s'affiche très bien dans la catégorie 1, puis il affiche "- - - Catégorie 2 - - - " et puis plus rien

    Pourtant il doit bien y avoir des sous catégories là dedans...

    Voilà je ne comprend pas

    Merci de m'aider

    un p'tit screen pour vous aider à comprendre...



    edit : pk mon image elle s'affiche pas ?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Par défaut
    salut, si tu veux executer tes boucles de cette facon, il te faut charger les resultats dans un tableau, parce que la, tu parcours la boucles de resultat qu'une fois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($row7v = mysql_fetch_row($res7))
    apres, mysql_fetch_row retourne false, y a plus de résultats.


    sinon ce que tu peux faire c'est executer les requetes selon la categories que tu veux afficher.

  3. #3
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 103
    Par défaut
    Citation Envoyé par coca25
    salut, si tu veux executer tes boucles de cette facon, il te faut charger les resultats dans un tableau, parce que la, tu parcours la boucles de resultat qu'une fois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($row7v = mysql_fetch_row($res7))
    apres, mysql_fetch_row retourne false, y a plus de résultats.


    sinon ce que tu peux faire c'est executer les requetes selon la categories que tu veux afficher.
    la solution que tu propose, si j'ai bien compris, demanderais beaucoup plus de requete, donc ce serait bien plus lent...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    while($row7v = mysql_fetch_row($res7))
    p'tite erreur dans les colorations, c'est pas dans mon code originel , je vais corriger


    c'est bien gentil de me proposer une solution mais j'aimerais bien trouver la solution ici, j'aime pas tourner le dos à nu problème

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    c'est bien gentil de me proposer une solution mais j'aimerais bien trouver la solution ici, j'aime pas tourner le dos à nu problème
    Mais je pense bien que ce soit les seules solutions possibles...

    comme la dit coca soit tu met tous dans des tableaux ensuite tu faite le traitement..

    soit tu fais des requetes supplémentaires

    autre chose ton code donne vraiment mal a la tête avec des $row7[2] == $row6[0] un peu partout, pourquoi ne pas utiliser mysql_fetch_array pour avoir plutot quelque chose de ce genre: $sscategorie['categ'] == $categorie['id'] enr enommant bien sur les $row

  5. #5
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    103
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 103
    Par défaut
    je comprends pas ce que vous voulez dire avec les tableaux

    enfin mais c'est pas grave alors je vais ajouter des requetes...

    sinon je m'en vais transformer mes rows sur le champs meric pour l'info

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 349
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    de rien de rien

  7. #7
    Membre expérimenté
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 194
    Par défaut
    Citation Envoyé par Hayabusa
    je comprends pas ce que vous voulez dire avec les tableaux

    enfin mais c'est pas grave alors je vais ajouter des requetes...

    sinon je m'en vais transformer mes rows sur le champs meric pour l'info
    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
     
    // imaginons tu as lancé une requete avant
    // la boucle suivante va se lancer jusqu'a épuisement des résultats
    while ($row = mysql_fetch_array ($res))
    {
      // traitement
    }
     
    // celle-ci ne se lancera jamais, il n'y a plus d'enregistrement disponibles
    while ($row = mysql_fetch_array ($res))
    {
      // traitement
    }
     
     
    // par contre:
    $tab = array ();
    while ($row = mysql_fetch_array ($res))
      array_push ($tab, $row);
     
    foreach ($tab as $ligne)
    {
      // traitement
    }
     
    foreach ($tab as $ligne)
    {
      // traitement
    }
     
    // les deux boucles foreach seront traités car le tableau est parcouru en entier à chaque fois
    voilà

Discussions similaires

  1. [Tableaux] Boucle for dans condition de if
    Par Lenorah dans le forum Langage
    Réponses: 5
    Dernier message: 03/03/2008, 18h06
  2. [Tableaux] Boucle dans une boucle
    Par spawns dans le forum Langage
    Réponses: 2
    Dernier message: 12/02/2006, 13h11
  3. [Tableaux] boucle for et instruction continue
    Par reg11 dans le forum Langage
    Réponses: 4
    Dernier message: 16/12/2005, 18h00
  4. [Tableaux] Boucle while imbriquer
    Par Le-Cortex dans le forum Langage
    Réponses: 11
    Dernier message: 09/09/2005, 14h22
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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