Afficher données dans tableau sans connaitre le nombre d' entrée

[Résolu/Fermé]
Signaler
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
-
Messages postés
184
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
-
Bonjour,
Je suis en train de faire un site sur mes billets de banque que je collectionne. Pour créer la table j'ai pas trop dde problèmes mais:
Sachant qu'il peut y avoir un ou 30 billets (recto et verso + pitch) comment faire ce tableau ?
Voici un exemple de ma page html pour les billets en doubles. http://abarka.free.fr/Billets_Banque_Doubles/Billets_en_double.htm
le classement se fait par pays.
Je saurais insérer les variables pour un tr mais je ne vois pas du tout comment faire s'il y a 30 tr.
Merci beaucoup àà ceux qui me trouveront une piste.




Le bonheur est la seule chose que l'on peut donner sans l'avoir.

4 réponses

Messages postés
184
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
24
Si tes billets sont répertoriés dans une base de données, tu fais ta requête, qui te renvoi un tableau et tu parcours ce tableau en l'affichant dans du html.

<?php

echo"<table>";
foreach($montableau as $ligne)
{
$titre=$ligne['nom_billet'];
$img=$ligne['img_billet'];
$desc=$ligne['description_billet'];

echo "<tr>";
echo "<td><h2>$titre</h2></td>";
echo "<td><img src='$img' /></td>";
echo "<td>$desc</td>";
echo "</tr>";
}
echo"</table>";
?>
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
430
Bonsoir et merci pour ta réponse rapide,
Dans ce que je vois, on n'affiche qu'un billet ?
Nous n'avons qu'un echo pour un tr. Or je ne sais pas à l'avance combien j'ai de billet pour chaque pays. Ca peut aller de une ligne à 30 lignes (à la louche). C'est bien ça qui me chiffonne !
Bon je vais me coucher, je revois ça demain. OK ?
Merci encore.

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Messages postés
184
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
24
Il n'y a qu'un echo certes mais il est dans un foreach donc le code fera des <tr> et des <td> autant de fois qu'il passera dans la boucle.

Tu ne sais pas combien tu aura de billets ok, mais comment est ce que tu as ce nombre ? Est ce qu'il viens d'un array() PHP ? d'une Base de Données ?

Dans ce que je t'envois, je sous-entend que tu as une BDD, que tu fais une requete SQL dans une table qui a comme colonnes :'nom_billet','img_billet','description_billet'
Et donc que tu récupères dans $montableau la totalité des informations sur tes billlets dans ce tableau PHP.

Ensuite je parcours $montableau à l'aide d'un foreach pour "placer" chaque case de cette variable-tableau PHP dans chaque case du tableau HTML dans les <tr><td>
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
430
Bonjour Yuh12,
Effectivement je suis en train de construire une BDD Mysql avec plusieurs colonnes:
id, pays, visuelrecto, valeurrecto, format, recto, visuelverso, valeurverso, verso.

Visuelrecto = image recto (type blob)
Valeurrecto = valeur nominale du billet (type varchar)
Format = dimensions du billet (type varchar)
Recto = personnage du recto (type varchar)
Visuelverso = image verso (type blob)
Valeurverso = valeur nominale du billet (type varchar)
On répéte le format pour le verso dans le second TD
Verso = personnage du verso (type varchar)

J'ai opté pour le type blob pour les images mais il m'affiche des données binaires. Pourtant ça m'a demandé le chemin pour insérer l'image dans la table. Bref je regarderai ça.

Ce tableau est accessible via un lien (pays) et tous les billets concernant ce pays devraient s'afficher avec en dessous de chaque imge une petite info (valeur, dimensions, personnage.
J'essaie ton script et te tiens au courant (je ne suis pas sur ma table soit optimisée).
Merci beaucoup en tous pour ton soutient !

Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Messages postés
3133
Date d'inscription
mercredi 30 janvier 2002
Statut
Contributeur
Dernière intervention
20 octobre 2020
430
Voici ce que j'ai fait (mais je ne suis pas très fort):
J'ai créé une autre table, flag, pour avoir la première ligne (drapeau, nom complet du pays, capitale, monnaie, et histoire de sa monnaie). ce tableau ne doit pas se répéter.
Au fait; je vois les images maintenant, il fallait juste cocher une case dans la structure. Transformation image/jpeg: inline.
<?php // on affiche la première ligne pour la planche d'un pays, drapeau, capitale, monnaie et histoire de la monnaie
£drapeau=£drapeau['drapeau'];
£nomcomplet=£nomcomplet['nomcomplet'];
£capitale=£ligne['capitale'];
£monnaie=£monnaie['monnaie']
£histoire=£histoire['histoire'];

echo"<table>";
select(£flag as £pays)
echo "<tr>";
echo "<td><img src='$drapeau' /></td><td>'£nomcomplet'<br />'£capitale'<br />'£monnaie'</td><td>'£histoire'</td>";
echo "</tr>";
echo"</table>";
// ce premier tableau ne se répète pas
//=========================================

// on affiche ici les lignes qui se répètent tant qu'il y a des billets pour ce pays
echo"<table>";
foreach($billets as $ligne)
{
// $titre=$ligne['pays']; // on n'a pas besoin du titre
$visuel_recto=$ligne['visuel_recto'];
$valeur_recto=$ligne['valeur_recto'];
$format=$ligne['format'];
$recto=$ligne['recto'];
$visuel_verso=$ligne['visuel_verso'];
$valeur_verso=$ligne['valeur_verso'];
$format=$ligne['format']; // on réaffiche le format du billet pour le verso
$verso=$ligne['verso'];

echo "<tr>";
echo "<td><h2>$titre</h2></td>";
echo "</tr>";
echo "<td class="billet"><img src='$visuel_recto' /><br />'$valeur_recto'<br />'$format'<br />'$recto'</td>";
echo "<td class="billet"><img src='$visuel_verso' /><br />'$valeur_verso'<br />'$format'<br />'$verso'</td>";
echo "</tr>";
}
echo"</table>";
?>


Si tu pouvais me conseiller ce serait super !
Merci d'avance.
Le bonheur est la seule chose que l'on peut donner sans l'avoir.
Messages postés
184
Date d'inscription
mercredi 7 mai 2014
Statut
Membre
Dernière intervention
28 septembre 2017
24
Quel est cette synthaxe ?
£drapeau

Je ne connais pas.

Eh bien je ne vois pas trop quoi dire de plus, tu voulais afficher plusieurs <tr> en fonction d'un tableau BDD, il fallait les mettre dans une boucle, maintenant que c'est fait il faut juste que tu le fasse marcher et puis c'est bon non ^^' ? ...

Je vois pas trop l'intêret de flag vu que je ne comprend pas ta synthaxe.
Pour moi ça devrait ressembler à ça :
echo"<table>
  <thead>
   <tr>
    <td>Pays</td>
    <td>Capitale</td>
    <td>Drapeau Recto</td>
    <td>Drapeau Verso</td>
    <td>Histoire</td>
   </tr>
  </thead>
  <tfoot>
   <tr>
    <td>Pays</td>
    <td>Capitale</td>
    <td>Drapeau Recto</td>
    <td>Drapeau Verso</td>
    <td>Histoire</td>
   </tr>
  </tfoot>
  <tbody>";
foreach($billets as $ligne)
{
 // Mes variables à déclarer.... $pays=$ligne['monpays'], $capitale pareil etc.. blablabla

 echo "<tr>
   <td><h2>".$pays."</h2></td>
   <td><h2>".$capitale."</h2></td>
   <td class='billet'><img src='".$visuel_recto."' /><br />'".$visuel_recto."'<br />".$format."<br />".$recto."</td>
   <td class='billet'><img src='".$visuel_verso."' /><br />'".$visuel_verso."<br />".$format."<br />".$verso."</td>
   <td><p>".$histoire."</p></td>
  </tr>";
}
 echo"</tbody>
 </table>";


En gros un seul tableau avec thead/tfoot qui définisse proprement tes colonnes et une boucle dans le tbody qui place le contenu de ta BDD dans ton tableau HTML.