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] Boucle while + passer un tour


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 101
    Par défaut [Tableaux] Boucle while + passer un tour
    Salut !
    Voila mon problème : J'ai fait un Script d'edition de Tutorial.
    Pour les categories je les ai mise dans un <select> pourqu'on puisse les choisir aisement.
    Alors de la BDD je vois de quel categorie fait parti le tutorial et je l'affiche premier dans mon <select> avec <option select="selected">.
    Maintenant p-e on a fait une erreur et il faudra modifier cette categorié via le choix quis e trouve dans ce select. Pour afficher toutes les autres categories qui existent je vais faire appel a une autre table et les reafficher. Seulement évidemment il y a ura toujorus 2 fois la même afficher un moment dans la liste

    Mon code resemble a ca :

    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
     
     
    $cat2 =  // Categirué récupérée
     
     
    $sql2 = "SELECT * FROM cat2tuto";
    $req2 = mysql_query($sql2);
    $cat2 = '<select name="cat2" class="formstyle1">
    <option selected="selected">'.$cat2.'</option>';
    while ($donnees2 = mysql_fetch_array($req2))
    {
     
    $cat2 .= '<option>'.$donnees2["cat2"].'</option>';
    }
    $cat2 .= '</select>';

    Ce qu'il faudrai que je fasse c'est include un if et si $cat2 == $donnees2["cat2"] que la boucle passe un tour. Mais je ne sais pas comment on fait cela ?

  2. #2
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    J'ai pas compris grand chose au message mais je tente ma chance...

    En mettant ça comme requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql2 = "SELECT DISTINCT(cat2) FROM cat2tuto";
    Mais sinon je vois pas où est le problème, pour "sauter" un tour dans ton while il suffit de rajouter un if classique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ($donnees2 = mysql_fetch_array($req2))
    {
    if(condition pour afficher les données)
          $cat2 .= '<option>'.$donnees2["cat2"].'</option>';
    }

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 101
    Par défaut
    Salut, merci pour ta réponse.
    Le Problème c'est que je dois au tout debut du <select> faire un <option select="selected">LA CATEGORIE</option>
    En suite je rentre dans ma boucle pour afficher tout ceux qui se trouvent dans une table SAUF LA CATEGORIE.
    C'est la le problème Avec DISTINCT ca marchera pas car toutes les catégories sont différents dans la table mais il y en a une qui est égale à LA CATEGORIE.
    Merci pour ton aide

  4. #4
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Ok, si tu connais déjà la catégorie à ne pas réafficher il suffit d'ajouter une condition comme je te l'ai montré dans la deuxième partie de mon précédent post...

    Sinon la solution plus classiquement utilisée consiste à construire ton SELECT avec toutes les catégories, et juste pour la catégorie adéquate tu ajoutes SELECTED="selected".

  5. #5
    Rédacteur

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2003
    Messages
    695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juillet 2003
    Messages : 695
    Par défaut
    si, dans ta boucle, ta ligne correspond à ta catégorie, continue
    http://fr2.php.net/continue

    c'est une technique que j'aime bien
    Articles sur developpez.com
    - Gestion des exceptions avec PHP5
    - Chiffrement et hash en PHP contre l'attaque Man in the middle
    - Aedituus - Espace membre sécurisé en PHP5

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2006
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 101
    Par défaut
    Pour le continue
    J'ai fait ainsi :

    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
     
     
    $cat2 = $donnees["cat2"];
    $cat2o = $cat2;
    $sql2 = "SELECT * FROM  cat2tuto";
    $req2 = mysql_query($sql2);
    $cat2 = '<select name="cat2" class="formstyle1">
    <option selected="selected">'.$cat2.'</option>';
    while ($donnees2 = mysql_fetch_array($req2))
    {
    if ( $donnees["cat2"] == $cat2o)
    {
    continue;
    }
    $cat2 .= '<option>'.$donnees2["cat2"].'</option>';
    }
     
    $cat2 .= '</select>';


    Mais le Problème maintenant cela ne m'affiche plus qu'une catégorie La categorie du départ



    Ok, si tu connais déjà la catégorie à ne pas réafficher il suffit d'ajouter une condition comme je te l'ai montré dans la deuxième partie de mon précédent post...

    Sinon la solution plus classiquement utilisée consiste à construire ton SELECT avec toutes les catégories, et juste pour la catégorie adéquate tu ajoutes SELECTED="selected".
    Peux tu me donner un bout de code ? Je comprend bien l'idée mais je ne vois pas comment je peux mettre en place cela :S

  7. #7
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Citation Envoyé par wamania
    si, dans ta boucle, ta ligne correspond à ta catégorie, continue
    http://fr2.php.net/continue

    c'est une technique que j'aime bien
    Perso je vois pas l'intérêt autant faire le traitement directement dans le if.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(condition de traitement)
       traitement;
    avec un continue ça donne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(condition de non-traitement)
       continue;
    traitement;
    La première solution me semble plus propre dans le cas précis...

  8. #8
    Membre Expert Avatar de Amara
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    2 688
    Détails du profil
    Informations personnelles :
    Localisation : France, Sarthe (Pays de la Loire)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 688
    Par défaut
    Si $categorie contient la catégorie par défaut ça fait un truc comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $sql2 = "SELECT * FROM cat2tuto";
    $req2 = mysql_query($sql2);
    $cat2 = '<select name="cat2" class="formstyle1">
    while ($donnees2 = mysql_fetch_array($req2))
    {
    $cat2 .= '<option';
    if($donnees2["cat2"] == $categorie)
      $cat2.= ' selected="selected"';
    $cat2 .= '>'.$donnees2["cat2"].'</option>';
    }
    $cat2 .= '</select>';
    Une autre chose bizarre tu ne donnes pas d'attributs VALUE à tes SELECT donc je vois pas comment tu vas récupérer la sélection...
    Et pourquoi tu mets tout ton code dans $cat2 au lieu de l'afficher directement avec echo ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [T-SQL]Skipper un tour de boucle while
    Par agougeon dans le forum Sybase
    Réponses: 2
    Dernier message: 04/08/2006, 13h26
  2. [Tableaux] boucle while qui ne boucle pas comme je veux
    Par oceane751 dans le forum Langage
    Réponses: 5
    Dernier message: 05/06/2006, 00h42
  3. [Tableaux] Ma boucle While ne va pas !!!
    Par tigzirt dans le forum Langage
    Réponses: 7
    Dernier message: 05/05/2006, 11h47
  4. [Tableaux] boucle while
    Par dafalri dans le forum Langage
    Réponses: 8
    Dernier message: 24/02/2006, 10h52
  5. [Tableaux] Boucle while imbriquer
    Par Le-Cortex dans le forum Langage
    Réponses: 11
    Dernier message: 09/09/2005, 14h22

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