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 :

Mettre mes enreg dans un tableau à 3 colonnes


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Points : 54
    Points
    54
    Par défaut Mettre mes enreg dans un tableau à 3 colonnes
    Salut,

    Je souhaite afficher des articles dans un tableau à 3 colonnes.
    Je récupère donc mes enregistrements dans un tableaux ($tablo) puis je souhaite les afficher dans un tableau html qui fait 3 colonnes.

    Le problème est que jamais j'ai jamais 3 colonnes mais toujours des lignes de 1 colonne !

    Je me suis basé sur un script trouvé sur un autre site.

    Je ne vois pas où est le problème car apparemment ça marche (d'après les commentaire du script).

    Voici mon 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
     
    <?php
    			// On met les données dans un tableau
    			while ($ligne1 = mysql_fetch_assoc($result1)) {
     
    				$tablo[] = $ligne1;
     
    			}
     
    			// On détermine le nombre de colonnes
    			$nbcol = 3; ?>
     
    			<table>
     
    				<?php $nb = count($tablo);
     
    				for ($i = 0; $i < $nb; $i++) {
     
    					// les valeurs à afficher
    					$libelle = $tablo[$i]['Libelle_produit'];
    					$code = $tablo[$i]['Code_produit'];
     
    					if ($i%$nbcol == 0) ?>
     
    						<tr>
     
    							<td>
    								<p><img width="50px" height="50px" src="Images/Produits/<?php echo $code.'_01.jpg'; ?>" alt="Photo de l'article <?php echo $code; ?>" /></p>
    								<p><?php echo $libelle; ?></p>
    							</td>
     
    					<?php
    					if ($i%$nbcol == ($nbcol - 1)) ?>
     
    						</tr>
     
    				<?php } ?>
     
    			</table>
    Merci d'avance.

  2. #2
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    J'ai rarement vu des scripts aussi horribles que ceux sur phpclasses et autres CodeS-SourceS. La réalisation d'une appli web ne saurait selon moi se limiter à patchwork de bouts de codes aussi crades.

    bref, pour afficher une <table> sur trois colonnes, il suffit que tu aies trois <td> (table data) par <tr> (table row):
    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>
    		<th>Col1</th>
    		<th>Col2</th>
    		<th>Col3</th>
    	</tr>
    	<tr>
    		<td>Valeur 1.1</td>
    		<td>Valeur 1.2</td>
    		<td>Valeur 1.3</td>
    	</tr>
    	<tr>
    		<td>Valeur 2.1</td>
    		<td>Valeur 2.2</td>
    		<td>Valeur 2.3</td>
    	</tr>
    	<tr>
    		<td>Valeur 3.1</td>
    		<td>Valeur 3.2</td>
    		<td>Valeur 3.3</td>
    	</tr>
    </table>
    Pour remplir un tel tableau dynamiquement avec des données issues d'une base de données, le mieux est d'utiliser une boucle:
    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
    <?php
     
    // Partie traitement
    $query = "SELECT a,b,c FROM table";
     
    if (!$results = mysql_query($query))
    	die("Erreur de requête");
     
    $data = array();
    while ($row = mysql_fetch_assoc($results)) {
    	$data[] = $row;
    }
     
    // ...
     
    // Partie affichage
    ?>
    <table>
    	<tr>
    		<th>Col A</th>
    		<th>Col B</th>
    		<th>Col C</th>
    	</tr>
    	<?php foreach ($data as $row): ?>
    	<tr>
    		<td><?=$row['a']?></td>
    		<td><?=$row['b']?></td>
    		<td><?=$row['c']?></td>
    	</tr>
    	<?php endforeach ?>
    </table>
    C'est aussi simple que ça.
    Note: il est toujours préférable de séparer les traitement de la mise en forme, tu y gagne en maintenabilité et en lisibilité (que celui qui n'a jamais eu à relire son code se présente, je lui paie un bière).

  3. #3
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Points : 54
    Points
    54
    Par défaut
    Salut,

    Merci pour ta réponse.

    C'est vrai que ça n'a pas l'air de marcher leur truc....

    En fait j'ai n enreg dans mon tableau, dans mon exemple j'en ai 51.

    Je veux afficher un tableau avec 3 colonnes.

    Donc ça me fera au total 17 lignes de 3 colonnes.

    En fait je veux :

    Ligne 1 colonne 1 = article 1
    Ligne 1 colonne 2 = article 2
    Ligne 1 colonne 3 = article 3

    Ligne 2 colonne 1 = article 4
    Ligne 2 colonne 2 = article 5
    Ligne 2 colonne 3 = article 6

    ...

    Et pas

    Ligne 1 colonne 1 = info 1 de l'article 1
    Ligne 1 colonne 2 = info 2 de l'article 1
    Ligne 1 colonne 3 = info 3 de l'article 1

    Ligne 2 colonne 1 = info 1 de l'article 2
    Ligne 2 colonne 2 = info 2 de l'article 2
    Ligne 2 colonne 3 = info 3 de l'article 2

    ...

    Je ne sais pas si tu vois la nuance avec ce que tu proposes ?

  4. #4
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    Ok, alors tu fais ça avec une boucle for et un modulo.

    Un peu de cette manière:
    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
    <?php
    // Traitement
    $a  = range(1,100);
    $ca = count($a);
    ?>
    <!-- affichage -->
    <table>
    	<tr>
    	<?php for ($i=1; $i<=$ca; $i++): ?>
    		<td><?=$a[$i]?></td>
    	<?php if ($i %3 == 0): ?>
    	</tr>
    	<tr>
    	<?php endif ?>
    	<?php endfor ?>
    </table>

  5. #5
    Membre du Club
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 77
    Points : 54
    Points
    54
    Par défaut
    Merci bien ça marche parfaitement.


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

Discussions similaires

  1. Réponses: 9
    Dernier message: 12/05/2006, 10h06
  2. Mettre mes fonctions dans un meme script
    Par sparrow dans le forum Langage
    Réponses: 4
    Dernier message: 25/03/2006, 02h26
  3. [MySQL] Afficher mes données dans un tableau HTML
    Par lassmust dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 02/03/2006, 12h43
  4. Réponses: 3
    Dernier message: 05/12/2005, 03h30
  5. Mettre un fichier dans un tableau
    Par peuf23 dans le forum Langage
    Réponses: 3
    Dernier message: 26/07/2005, 11h47

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