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 :

Tableau html dynamic avec choix colonne et ligne auto


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Par défaut Tableau html dynamic avec choix colonne et ligne auto
    Bonjour,

    je cherche à créer un tableau dynamic via php avec le choix sur le nombre de colonne tout en gérant le nombre de ligne automatiquement.


    J'ai donc procéder comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    $nbligne=0;  
    $nbcolone = 5;  
    echo '<table><tr>';  
    	while($data=mysql_fetch_assoc($res)){  
    		if (($nbligne % $nbcolone) ==0 && $nbligne !=0) {  
    			echo '</tr><tr>';  
    			$nbligne=0;  
    		}  
     
    		echo '<td>'.$data['num'].'</td>';   
    		$nbligne++;  
    	}  
    echo '</table>';
    Bémol le formatage me conviens pas, je souhaiterais obtenir ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AA	AE	AI
    AB	AF	AJ
    AC 	AG 	AK
    AD	AH
    Au lieu de ceci actuellement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AA	AB	AC
    AD	AE	AF
    AG 	AH 	AK
    AL	AM
    merci pour votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Ce que tu souhaites est bien expliqué dans le code ci-dessous:


    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
    <?php
    $nbCols = 3; // nombre de colonnes du tableau
    $cpt = 0; // compteur d'éléments
    ?>
     
    <table>
      <tr>
        <th style="width:<?php echo round(100/$nbCols);?>%;">Colonne 1</th>
        <th style="width:<?php echo round(100/$nbCols);?>%;">Colonne 2</th>
        <th style="width:<?php echo round(100/$nbCols);?>%;">Colonne 3</th>
      </tr>
    <?php
     
    $rs = mysql_query(...); // exécution de la requête
    // Nota : on pourrait tout aussi bien parcourir les éléments d'un tableau ou les fichiers d'un dossier
     
    while ($row=mysql_fetch_assoc($rs)) { // parcours des résultats
     
        // début d'une ligne
        if ($cpt%$nbCols==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ...
            echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne
     
     
        // On place chaque élément dans une cellule du tableau
        echo '<td>';
        echo ... // affichage de tout ce qu'on veut dans la cellule
        echo '</td>';
     
     
        // fin d'une ligne
        if ($cpt%$nbCols==($nbCols-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ...
            echo '</tr>'; // ..., on est sur le dernier élément d'une ligne
     
        $cpt++; // on incrémente le compteur pour savoir où on en est
    }
     
    // Au cas où ...
    if ($cpt!=0 && $cpt%$nbCols!=0) { // S'il n'y a pas eu assez de cellules dans la boucle pour finir la ligne ...
        echo '<td colspan="'.($nbCols - ($cpt%$nbCols) ).'">&nbsp;</td>'; // ... on complète avec une cellule vide de la bonne taille...
        echo '</tr>'; // ... et on ferme la ligne
    }
     
    ?>
     
    </table>

  3. #3
    Membre très actif Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Par défaut
    Ta source donne exactement le même résultat que mon code ci-dessus ...

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    il faut que tu tris tes données ds la requête avant de les afficher

  5. #5
    Membre très actif Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Par défaut
    Je te suis pas ... ORDER DESC/ASC ?

    Au cas ou je me serais mal exprimer voici le rendu que je souhaite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <table>
    	<tr><td>AA</td> <td>AE</td> <td>AI</td></tr>
    	<tr><td>AB</td> <td>AF</td> <td>AJ</td></tr>
    	<tr><td>AC</td> <td>AG</td> <td>AK</td></tr>
    	<tr><td>AD</td> <td>AH</td></tr>
    </table>

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 349
    Par défaut
    autant pour moi j'avais inversé les deux

    solution rapide tu crées un tableau deux dimensions de taille nbligne nbcolonne
    au lieu d'afficher directement tu mets tout ds le tableau et tu affiches ensuite

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Citation Envoyé par la_chouette Voir le message
    Ta source donne exactement le même résultat que mon code ci-dessus ...
    Oup's, ce n'était qu'un élément du puzzle, mais je me souvenais bien avoir déjà fait ça quelque part. ça devrait être complet avec ce code:
    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
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    <?php
    header('Content-Type: text/html; charset=UTF-8');
     
    $tab[] = 'A';
    $tab[] = 'Alain';
    $tab[] = 'Alexandre' ;
    $tab[] = 'Arthur';
    $tab[] = 'B';
    $tab[] = 'Bernard';
    $tab[] = 'Bill';
    $tab[] = 'Boby' ;
    $tab[] = 'C';
    $tab[] = 'Catherine';
    $tab[] = 'Carinne' ;
    $tab[] = 'Caroline';
    $tab[] = 'Charles';
    $tab[] = 'D';
    $tab[] = 'Damien';
    $tab[] = 'Didier';
    $tab[] = 'Dominique';
     
    $nb_colonne = 3;
     
    $nb_lignes = ceil(count($tab)/$nb_colonne);
     
    for ($i = 0; $i < $nb_lignes ; $i++)
            {
                    $incr = $i;
     
                    for($j = 0 ; $j < $nb_colonne ; $j++)
                    {      
                            if (isset($tab[$incr])){$temp[] = $tab[$incr]; $incr += $nb_lignes;} else  $temp[] = null;
                    }
            }
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Affichage multi-colonnes</title>
    </head>
     
    <body>
    <table>
    <?php
    $cpt = 0;
    foreach ($temp as $value)
    {
        // début d'une ligne
        if ($cpt%$nb_colonne==0) // on divise le nb d'élément par le nb de colonnes. Si le reste est de 0 ...
            echo '<tr>'; // ..., alors on est sur le premier élément d'une ligne
     
     
        // On place chaque élément dans une cellule du tableau
        echo '<td style="padding:0 10px 0 10px">';
        echo $value; // affichage de tout ce qu'on veut dans la cellule
        echo '</td>';
     
     
        // fin d'une ligne
        if ($cpt%$nb_colonne==($nb_colonne-1)) // on divise le nb d'élément par le nb de colonnes. Si le reste est de ($nbCols-1) ...
            echo '</tr>'; // ..., on est sur le dernier élément d'une ligne
     
        $cpt++; // on incrémente le compteur pour savoir où on en est
    }
    ?>
    </table>
    </body>
    </html>

Discussions similaires

  1. Réponses: 1
    Dernier message: 14/01/2014, 11h08
  2. [MySQL] Requete mysql avec choix colonne
    Par franck31 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 09/11/2011, 00h14
  3. [MySQL] Afficher les données dans un tableau html horizontal avec une seule requête au lieu de 6
    Par arthuro45 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/10/2010, 11h13
  4. [SQL] Limiter taille tableau html construit avec données sql
    Par syl2042 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/09/2007, 15h23
  5. tableau html, probleme avec ie
    Par duktil dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 02/11/2005, 18h20

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