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 :

Afficher requete sql sur 3 colonnes


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 39
    Points
    39
    Par défaut Afficher requete sql sur 3 colonnes
    Bonjour,

    J'ai une requête est je souhaite afficher le résultat en plusieurs colonnes (3 dans mon cas)

    comme ceci

    1 5 9
    2 6 10
    3 7 11
    4 8 12

    Depuis avant hier je cherche mais pas moyen ...

    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
    <?php
    $sql = "SELECT id,nom FROM test ORDER BY nom ASC";
    $req = mysql_query($sql)or die(mysql_error());
    $prems_lettre='1';
     
    while ($res = mysql_fetch_assoc($req))
    {
    	if(strtolower($res['nom'][0])!= $prems_lettre)
    	{
    		echo '<span id="'.$res['nom'][0].'"><br />- ',strtoupper($res['nom'][0]),' -</span><br /><br />';
    		$prems_lettre = strtolower($res['nom'][0]);
    	}
     
    	$nom = $res[nom];
    	$id_annonceur = $res[id];
    	echo "<li><a href=\"$nom\">$res[nom]</a></li><br />";
     
     
    }
    ?>
    </ul><div>
    <?php
    }

    Merci de votre aide

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Tu peux utiliser l'opérateur modulo afin de savoir si le reste de la division de ton index dans ta boucle par 3 est égal à 0. J'éspère avoir bien compris ta demande.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <?php
    $sql = "SELECT id,nom FROM test ORDER BY nom ASC";
    $req = mysql_query($sql)or die(mysql_error());
    $prems_lettre='1';
    $i = 0;
    while ($res = mysql_fetch_assoc($req))
    {
        	$nom = $res[nom];
    	$id_annonceur = $res[id];
    	echo "<a href=\"$nom\">$res[nom]</a>";
            if(($i % 3) == 0) echo '<br/>';
            $i++;
    }

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    141
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 141
    Points : 39
    Points
    39
    Par défaut
    J'ai fait le html de ce que je voudrais en sorti de la requete SQL

    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
    <table>
     
    <tr><td >
     
    <ul><li ><a href="#" title="test"> Texte 1</a></li></ul>
    <ul><li ><a href="#" title="test"> Texte 2</a></li></ul>	
    <ul><li ><a href="#" title="test"> Texte 3</a></li></ul>
    </td><td >
     
    <ul><li ><a href="#" title="test"> Texte 4</a></li></ul>
    <ul><li ><a href="#" title="test"> Texte 5</a></li></ul>	
    <ul><li ><a href="#" title="test"> Texte 6</a></li></ul>
     
    </td><td >
     
    <ul><li ><a href="#" title="test"> Texte 7</a></li></ul>
    <ul><li ><a href="#" title="test"> Texte 8</a></li></ul>	
    <ul><li ><a href="#" title="test"> Texte 9</a></li></ul>
     
    </tr>
     
    </table>

  4. #4
    Membre expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Points : 3 545
    Points
    3 545
    Par défaut
    Salut,

    Comme l'a dit ThomasR, tu dois utiliser le modulo, qui donne le reste d'une division par trois. AInsi, si le reste est égal à zéro, c'est que ton compteur est un multiple de 3 et que tu dois alors sauter une ligne.
    En php, ça se dit comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(($i % 3) == 0) echo '<br/>';
    Dans ta demande de table, tu dois changer de cellule au lieu de sauter à la ligne.

    Bon code.
    • Avant de poser une question, n'hésitez pas à chercher dans la FAQ et les forums
    • Merci d'utiliser les balises de code (# dans l'éditeur)
    • N'oubliez pas de vous servir des boutons , et

    S.N.A.F.U

  5. #5
    Rédacteur
    Avatar de marcha
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2003
    Messages
    1 571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 571
    Points : 2 351
    Points
    2 351
    Par défaut
    Salut,

    En fait tu dois faire une "sorte de rotation". Je te propose
    de bufferiser tes données dans une grille (tableau php)
    puis de les afficher après.

    Voici un exemple qui devrait te donner des pistes.

    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
     
      $values = explode(',', '1,2,3,4,5,6,7,8,9,10,11,12,13');
      $total = count($values);
      $nbcols = 3;
      $nbrows = ceil($total/$nbcols); // nombre de lignes nécessaires
      $index = 0;
      $grid = array();
      foreach($values as $value) {
    	$grid[$index++][] = $value;
        $index %= $nbrows; // modulo pour limiter $index entre 0 et $nbrows-1
      }
      while($index<$nbrows) $grid[$index++][] = 'vide'; // complète les cellules manquantes
      echo "<table>";
      foreach($grid as $row) echo '<tr><td>'.implode('</td><td>', $row).'</td></tr>';
      echo "</table>";
    Si ton code fait plus d'une ligne, c'est que tu as mal choisi ton langage !

Discussions similaires

  1. [MySQL] Afficher requête SQL sur 2 colonnes
    Par kate59 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 06/10/2008, 19h02
  2. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  3. Réponses: 2
    Dernier message: 08/11/2007, 10h54
  4. [Tableaux] affichage d'une requete SQL sur 2 colonnes
    Par tondeuz dans le forum Langage
    Réponses: 5
    Dernier message: 01/06/2007, 15h47
  5. afficher les resultats d'une requete mysql sur 3 colonnes
    Par harlock59 dans le forum Requêtes
    Réponses: 7
    Dernier message: 24/12/2005, 14h38

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