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 :

Quelle boucle et quelle structure de contrôle?


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 1
    Par défaut Quelle boucle et quelle structure de contrôle?
    Bonjour à tous,

    N'étant pas un crack en programmation, je galère sur le moyen d'afficher les données issues d'une requète Mysql.
    L'affichage souhaité correspond à une liste d'article (publications scientifiques) tagée avec 2 identifiants. L'un correspond à un auteur et l'autre à un type d'article.

    Ma requête fonctionne et correspond à mes souhaits.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    requete="SELECT count(type_publi), publications.*,  publisagent.*, annuaire.id, typepubli.id_type, nom_type AS CATEGORIE From publications, publisagent, annuaire, typepubli  WHERE   publications.type_publi = id_type AND publications.id = publicationsID AND agent_idagent=annuaire.id AND annuaire.id=50 GROUP BY type_publi ORDER by id_type asc;
    En résumé, je veux que tous les articles d'un auteur s'affiche en fonction du type et que le nom du type apparaisse avant chaque liste.
    Afficher tous les articles d'un type et si ce type n'a pas de valeur à retourner il passe au type suivant.
    Et à chaque groupe de valeur, le nom du type en titre.

    Avec cette boucle, j'obtiens au mieux la liste des articles avec à chaque fois le mon du type.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    while( $ligne=mysql_fetch_row ($this->result_set )) 		
    					 {
    					$m.="<h2>".$ligne[7]."</h2>";
    					$m.="<ul><li>$ligne[0]$ligne[1]$ligne[2]$ligne[3]$ligne[4]<b>$ligne[5]$ligne[7]</b></li></ul>"; }
    Je n'arrive pas formuler mes conditions dans cette boucle.

    Pouvez vous m'aider?
    D'avance merci.

    Alouettes21

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Août 2007
    Messages : 109
    Par défaut
    Bonjour,

    Avant toute chose, il serait bon pour toi, que tu n'utilise pas mysql_fetch_row , mais plutot mysql_fetch_assoc ou mysql_fetch_object qui te permettront de nommé tes champs en retour au lieu d'utilisé de indice ( $ligne["toto"] au lieu de $ligne[0]).

    Ensuite, également pour que tu puisse facilement maintenir ton code, utilise une syntaxe ANSI 92 dans tes requêtes SQL, c'est à dire avec INNER JOIN , LEFT OUTER JOIN ,... ( regarde les tutos sur developpez)

    Pour ton problème maintenant

    tu dois tester si tu est toujours sur le même type

    attention à l'ordre de récupération de ta requête ordonne par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $m_type  = '';
    while( $ligne=mysql_fetch_row ($this->result_set ))
    {
    if ($m_type  <> $ligne[7])
    {
            $m.="<h2>".$ligne[7]."</h2>";
            $m_type = $ligne[7];
    }
    $m.="<ul><li>$ligne[0]$ligne[1]$ligne[2]$ligne[3]$ligne[4]<b>$ligne[5]$ligne[7]</b></li></ul>"; }
    Ce code n'afficheras qu'une seule fois le type

    Bon courage

  3. #3
    Membre chevronné Avatar de guigo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    612
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 612
    Par défaut
    Salut,
    Il pourrait aussi etre judicieux, de faire une structure en 2 parties....
    Une pour qui sert a extraire tes données et les extraires, l'autre pour l'affiche

    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
     
     
    echo PrintPubli();
     
     
    function SelectData(){
       $Sql;
       while($Ligne=mysql_fetch_array($Sql))
          //Construction d'un tableau a 2 dimensiondans ton cas      //$Tab[$Type]=array($auteur);
     
        }
        return($Tab);
     
    }
     
    function PrintPubli(){
        //voir post de romulus1206
       return $m;
    }

Discussions similaires

  1. Quelle boucle utiliser?
    Par Sherman750 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 02/11/2012, 19h12
  2. [Lex/Yacc] Aide traduction des structures de contrôle
    Par pelo68 dans le forum Générateurs de compilateur
    Réponses: 2
    Dernier message: 07/12/2010, 10h26
  3. boucle FOR: quelle synthaxe correcte utiliser?
    Par fhano dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 16/08/2008, 21h08
  4. Réponses: 9
    Dernier message: 19/06/2008, 11h54
  5. Réponses: 7
    Dernier message: 12/03/2007, 09h06

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