2012-11-05 4 views
0

Pour créer une table dynamique dans php, j'ai défini la variable $count à partir d'une requête, qui compte les lignes dans une table spécifique. Ensuite, je voudrais créer une table avec le nombre exact de lignes comme une table html:Comment adresser chaque ligne d'une table mysql?

for($i=1;$i=<$count;$i++){ 
    echo"<tr><td>$name</td><td>$rights</td></tr>"; 
} 

C'est la façon dont je veux la table à afficher. Mais à chaque fois que la boucle for est appelée, les valeurs $name et $rights doivent être extraites de la table de base de données. Mais comment dois-je gérer cela? J'ai pensé à une simple requête en sélectionnant le nom de la ligne où ID est égal à i. Mais alors je me suis souvenu que toujours quand je supprime une entrée de la table il y aura des lacunes. Par exemple quand il y a 3 entrées et je supprime le second. Il y a juste 2 entrées; donc le nom de la deuxième rangée, dont l'ID est 3, ne sera jamais sélectionné. Y a-t-il un moyen de traiter ce problème d'une manière appropriée?

+1

Impossible de répondre sans voir comment vous exécutez votre requête. Mais j'imagine que c'est quelque chose comme '$ name = $ row ['name']; $ rights = $ row ['rights']; ' –

+1

Sélectionnez-les tous et passez en revue le résultat. – Wug

Répondre

2

Vous n'utiliserez pas un for vous utiliserez un while ou un foreach avec les résultats de la requête.

<?php 
$db = new PDO($dsn, $user, $pass); 
$stmt = $db->query('SELECT id, rights FROM the_table'); 
?> 

<table> 
<thead> 
<tr> 
    <th>Id</th> 
    <th>Rights</th> 
</tr> 
</thead> 
<tbody> 
<?php if($stmt !== false): ?> 
<?php foreach($stmt as $row): ?> 
    <tr> 
    <td><?php echo $row['id'] ?></td> 
    <td><?php echo $row['rights'] ?></td> 
    </tr> 
<?php endforeach; ?> 
<?php endif; ?> 
</tbody> 
</table> 
Questions connexes