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 :

Regroupement par Ville (pas si simple). [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut Regroupement par Ville (pas si simple).
    Salut

    Voilà mon "problème" : j'ai créé un Fan-Club entièrement en php pour notre groupe de musique dans lequel on peut voir d'où proviennent les Fans, avec quelques infos et une photo pour chaqu'un. Il y a une page différente par Pays sauf pour la France qui comporte une page par Région.

    Les fiches des Fans sont rangées par ordre croissant alphabétique (des villes), mais je souhaiterais que lorsque des Fans viennent d'une même ville, celle-ci ne s'imprime qu'une seule fois, concrètement voilà ce que ça donne pour le moment pour la région Île de France par exemple :

    http://fan-club.towersound.net/fans/...-de-france.php

    Comme on peut le constater, 3 Fans viennent de Paris et il est donc indiqué 3 fois la ville de Paris, hors je souhaiterais que les cadres de ces 3 Fans se collent et que seul au dessus du premier soit indiqué Paris

    Voici mon code actuel :

    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
    <?php
    $connection = mysql_connect("***","***","***");
    $base = "***";
    mysql_select_db($base);
    $requete = mysql_query("SELECT * FROM fan_club WHERE region = 'Île-de-France' ORDER BY town ASC");
    while ($ligne = mysql_fetch_array($requete)) {
       print "<font size='2' face='Verdana' color='#CCCCCC'><i><b>".$ligne["town"]."</b></i></font><br>
    <table border='0' width='680' background='http://v3.towersound.net/graphiques/fond-cadre.jpg'>
                <tr>
                    <td width='100' rowspan='2'>
                        <center><img src='".$ligne["image"]."' width='100' height='100' border='0' alt='Photo Fan - ".$ligne["pseudo"]."'></center></td>
                    <td width='550'>
                    <center>
                    <font size='1' face='Verdana' color='#999999'>Surnom (Prénom) / <i>Nickname (First name) </i></font><font size='1' face='Verdana'>:</font> <font size='1' face='Verdana'>".$ligne["pseudo"]."</font>&nbsp;<font size='1' face='Verdana'>(</font><font size='1' face='Verdana'>".$ligne["name"]."</font><font size='1' face='Verdana'>).</font><br>
                    <font size='1' face='Verdana' color='#999999'>Date de naissance /&nbsp;<i>Birthday</i></font><font size='1' face='Verdana'> :</font> <font size='1' face='Verdana'>".$ligne["day"]."</font> <font size='1' face='Verdana'>".$ligne["month"]."</font> <font size='1' face='Verdana'>".$ligne["year"]."</font><font size='1' face='Verdana'>.</font></center></td>
                    <td width='23' align='left' height='25'>
                    <center><img src='".$ligne["language"]."' width='22' height='15' border='0' alt='Language.'></center>
                    </td>
                </tr>
                <tr>
                    <td width='573' align='left' colspan='2'><font size='1' face='Verdana' color='#CCCCCC'>Commentaire / <i>comment</i>&nbsp;: </font><font size='1' face='Verdana'>".$ligne["comment"]."</font>
                </td>
                </tr>
                </table><br>";
    }
    mysql_close($connection); 
    ?>
    Merci par avance pour votre aide,
    Bien Cordialement,

    Lonn.

  2. #2
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Bonjour et bienvenue sur les forums de developpez.com
    Il faut que tu stockes dans une variable la dernière ville affichée. Si c'est la même alors tu ne réaffiches pas :

    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
    $ville_precedente = '';
    while($ligne) {
       if ($ligne["town"] != $ville_precedente) {
          //
          //afficher_la_ville
          //
       }
       //
       //afficher_les_infos_du_fan
       //
       if ($ligne["town"] != $ville_precedente) {
          //
          //afficher_separation   (<br>)
          //
       }
       $ville_precedente = $ligne["town"];
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut
    Bonjour,

    Et merci beaucoup pour l'accueil et ta réponse !

    Etant tout à fait débutant dans le php (c'est avec la nouvelle version de notre site mise en ligne il y a quelques jours que je m'y suis mis ), je dois avouer avoir compris le principe mais avoir du mal à l'incorporer dans mes premières lignes...

    Voilà ce que j'ai fait pour le moment mais cela donne une boucle interminable avec la première ville affichée :

    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
    $requete = mysql_query("SELECT * FROM fan_club WHERE region = 'Île-de-France' ORDER BY town ASC");
    while ($ligne = mysql_fetch_array($requete)) {
    $ville_precedente = '';
    while($ligne) {
    if ($ligne["town"] != $ville_precedente) {
    print "<font size='2' face='Verdana' color='#CCCCCC'><i><b>".$ligne["town"]."</b></i></font><br>";
       }
    print "<table border='0' width='680' background='http://v3.towersound.net/graphiques/fond-cadre.jpg'>
                <tr>
                    <td width='100' rowspan='2'>
                        <center><img src='".$ligne["image"]."' width='100' height='100' border='0' alt='Photo Fan - ".$ligne["pseudo"]."'></center></td>
                    <td width='550'>
                    <center>
    				<font size='1' face='Verdana' color='#999999'>Surnom (Prénom) / <i>Nickname (First name) </i></font><font size='1' face='Verdana'>:</font> <font size='1' face='Verdana'>".$ligne["pseudo"]."</font>&nbsp;<font size='1' face='Verdana'>(</font><font size='1' face='Verdana'>".$ligne["name"]."</font><font size='1' face='Verdana'>).</font><br>
    				<font size='1' face='Verdana' color='#999999'>Date de naissance /&nbsp;<i>Birthday</i></font><font size='1' face='Verdana'> :</font> <font size='1' face='Verdana'>".$ligne["day"]."</font> <font size='1' face='Verdana'>".$ligne["month"]."</font> <font size='1' face='Verdana'>".$ligne["year"]."</font><font size='1' face='Verdana'>.</font></center></td>
                    <td width='23' align='left' height='25'>
                    <center><img src='".$ligne["language"]."' width='22' height='15' border='0' alt='Language.'></center>
                    </td>
                </tr>
                <tr>
                    <td width='573' align='left' colspan='2'><font size='1' face='Verdana' color='#CCCCCC'>Commentaire / <i>comment</i>&nbsp;: </font><font size='1' face='Verdana'>".$ligne["comment"]."</font>
    			</td>
                </tr>
            	</table><br>";
       if ($ligne["town"] != $ville_precedente) {
    print "<br>";   }
       $ville_precedente = $ligne["town"];
       }
       }
    mysql_close($connection); 
    ?>

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut
    Toutes mes excuses pour ma nullité et encore merci pour la formule, après 1 heure d'essaie, je viens de me rendre compte de la syntaxe correcte du code, me reste plus qu'à voir la présente la plus judicieuse (un écart que je ne souhaite pas subsiste entre les Fans provenant de la même ville).

    Vraiment désolé de mon ignorance dans le language php, lol !

    @bientôt !

    ps : la page rectifiée donne celà http://fan-club.towersound.net/fans/...francetest.php

    Et donc le code en rapport :
    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
    $requete = mysql_query("SELECT * FROM fan_club WHERE region = 'Île-de-France' ORDER BY town ASC");
    $ville_precedente = '';
    while($ligne = mysql_fetch_array($requete))
    {
    if ($ligne["town"] != $ville_precedente)
    {
    echo "<font size='2' face='Verdana' color='#CCCCCC'><i><b>".$ligne["town"]."</b></i></font><br>";
       }
    echo "<table border='0' width='680' background='http://v3.towersound.net/graphiques/fond-cadre.jpg'>
                <tr>
                    <td width='100' rowspan='2'>
                        <center><img src='".$ligne["image"]."' width='100' height='100' border='0' alt='Photo Fan - ".$ligne["pseudo"]."'></center></td>
                    <td width='550'>
                    <center>
    				<font size='1' face='Verdana' color='#999999'>Surnom (Prénom) / <i>Nickname (First name) </i></font><font size='1' face='Verdana'>:</font> <font size='1' face='Verdana'>".$ligne["pseudo"]."</font>&nbsp;<font size='1' face='Verdana'>(</font><font size='1' face='Verdana'>".$ligne["name"]."</font><font size='1' face='Verdana'>).</font><br>
    				<font size='1' face='Verdana' color='#999999'>Date de naissance /&nbsp;<i>Birthday</i></font><font size='1' face='Verdana'> :</font> <font size='1' face='Verdana'>".$ligne["day"]."</font> <font size='1' face='Verdana'>".$ligne["month"]."</font> <font size='1' face='Verdana'>".$ligne["year"]."</font><font size='1' face='Verdana'>.</font></center></td>
                    <td width='23' align='left' height='25'>
                    <center><img src='".$ligne["language"]."' width='22' height='15' border='0' alt='Language.'></center>
                    </td>
                </tr>
                <tr>
                    <td width='573' align='left' colspan='2'><font size='1' face='Verdana' color='#CCCCCC'>Commentaire / <i>comment</i>&nbsp;: </font><font size='1' face='Verdana'>".$ligne["comment"]."</font>
    			</td>
                </tr>
            	</table><br>";
       if ($ligne["town"] != $ville_precedente)
       {
    echo "<br>";
       }
       $ville_precedente = $ligne["town"];
       }
    mysql_close($connection); 
    ?>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 5
    Par défaut
    Bon voilà le code qui me donne à l'écran ce que je voulais voir précisément, mais je me doute en revanche que celui-ci ne dois pas être très optimisé...

    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
    41
    42
    43
    44
    45
    46
    47
    48
    $requete = mysql_query("SELECT * FROM fan_club WHERE region = 'Île-de-France' ORDER BY town ASC");
    $ville_precedente = '';
    while($ligne = mysql_fetch_array($requete))
    {
    if ($ligne["town"] != $ville_precedente)
    {
    echo "<br><font size='2' face='Verdana' color='#CCCCCC'><i><b>".$ligne["town"]."</b></i></font><br><table border='0' width='680' background='http://v3.towersound.net/graphiques/fond-cadre.jpg'>
                <tr>
                    <td width='100' rowspan='2'>
                        <center><img src='".$ligne["image"]."' width='100' height='100' border='0' alt='Photo Fan - ".$ligne["pseudo"]."'></center></td>
                    <td width='550'>
                    <center>
    				<font size='1' face='Verdana' color='#999999'>Surnom (Prénom) / <i>Nickname (First name) </i></font><font size='1' face='Verdana'>:</font> <font size='1' face='Verdana'>".$ligne["pseudo"]."</font>&nbsp;<font size='1' face='Verdana'>(</font><font size='1' face='Verdana'>".$ligne["name"]."</font><font size='1' face='Verdana'>).</font><br>
    				<font size='1' face='Verdana' color='#999999'>Date de naissance /&nbsp;<i>Birthday</i></font><font size='1' face='Verdana'> :</font> <font size='1' face='Verdana'>".$ligne["day"]."</font> <font size='1' face='Verdana'>".$ligne["month"]."</font> <font size='1' face='Verdana'>".$ligne["year"]."</font><font size='1' face='Verdana'>.</font></center></td>
                    <td width='23' align='left' height='25'>
                    <center><img src='".$ligne["language"]."' width='22' height='15' border='0' alt='Language.'></center>
                    </td>
                </tr>
                <tr>
                    <td width='573' align='left' colspan='2'><font size='1' face='Verdana' color='#CCCCCC'>Commentaire / <i>comment</i>&nbsp;: </font><font size='1' face='Verdana'>".$ligne["comment"]."</font>
    			</td>
                </tr>
            	</table><font size='1' face='Verdana'><br></font>";
    }
       else
    {
    echo "<table border='0' width='680' background='http://v3.towersound.net/graphiques/fond-cadre.jpg'>
                <tr>
                    <td width='100' rowspan='2'>
                        <center><img src='".$ligne["image"]."' width='100' height='100' border='0' alt='Photo Fan - ".$ligne["pseudo"]."'></center></td>
                    <td width='550'>
                    <center>
    				<font size='1' face='Verdana' color='#999999'>Surnom (Prénom) / <i>Nickname (First name) </i></font><font size='1' face='Verdana'>:</font> <font size='1' face='Verdana'>".$ligne["pseudo"]."</font>&nbsp;<font size='1' face='Verdana'>(</font><font size='1' face='Verdana'>".$ligne["name"]."</font><font size='1' face='Verdana'>).</font><br>
    				<font size='1' face='Verdana' color='#999999'>Date de naissance /&nbsp;<i>Birthday</i></font><font size='1' face='Verdana'> :</font> <font size='1' face='Verdana'>".$ligne["day"]."</font> <font size='1' face='Verdana'>".$ligne["month"]."</font> <font size='1' face='Verdana'>".$ligne["year"]."</font><font size='1' face='Verdana'>.</font></center></td>
                    <td width='23' align='left' height='25'>
                    <center><img src='".$ligne["language"]."' width='22' height='15' border='0' alt='Language.'></center>
                    </td>
                </tr>
                <tr>
                    <td width='573' align='left' colspan='2'><font size='1' face='Verdana' color='#CCCCCC'>Commentaire / <i>comment</i>&nbsp;: </font><font size='1' face='Verdana'>".$ligne["comment"]."</font>
    			</td>
                </tr>
            	</table><font size='1' face='Verdana'><br></font>";
    }
       $ville_precedente = $ligne["town"];
       }
    mysql_close($connection); 
    ?>
    En tout cas la présentation de la page est parfaite ^_^
    http://fan-club.towersound.net/fans/...francetest.php

    @++, Lonn.

  6. #6
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    Dans ce cas là merci de noter la discussion comme résolue

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/01/2015, 13h55
  2. Requete avec regroupement par mois.. ou pas ?
    Par flamby6969 dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 19/06/2008, 12h43
  3. Réponses: 5
    Dernier message: 29/09/2004, 11h05
  4. [DB2]Requête regroupement par intervals
    Par sm dans le forum DB2
    Réponses: 8
    Dernier message: 01/09/2004, 17h19
  5. Regroupement par mois
    Par fplanglois dans le forum SQL
    Réponses: 7
    Dernier message: 29/07/2003, 16h32

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