2009-02-23 4 views
0

Effectivement une copie de: How can I display data in table with PerlComment gérer un nombre variable d'éléments à partir d'une requête de base de données?

La réponse acceptée s'applique ici. Alors faites quelques-unes des alternatives. J'essaie d'exécuter des requêtes de base de données brutes à partir du programme Perl et d'afficher les résultats pour l'utilisateur. Quelque chose comme select * from table. Je veux afficher les informations dans un tableau HTML. Les colonnes du tableau HTML correspondent aux colonnes renvoyées.

J'ai quelques problèmes. Je peux exécuter describe table requête pour retourner le nombre de colonnes il y a dans la table. Cependant, comment vais-je stocker les informations des résultats renvoyés dans les tableaux?

Donc, si je stocke des résultats comme celui-ci:

while (($f1, $t2, $n3, $k4, $d5, $e6) = $sth1->fetchrow_array) 

Dans ce cas, je sais seulement qu'il ya, disons quatre colonnes (que je glissai du tableau décrit). Mais ce nombre quatre est dynamique et peut changer en fonction du nom de la table. Je ne peux pas déclarer mes variables en fonction de ce nombre. Aucune suggestion?

Répondre

4

Essayez:

print "<table>\n"; 

# display HTML header 
@cols = @{$sth->{NAMES_uc}}; 
print "<tr>".join("", map { "<th>${_}</th>" } @cols)."</tr>\n"; 

# display one HTML table row for each DB row 
while (my @row = $sth->fetchrow_array) { 
    print "<tr>".join("", map { "<td>${_}</td>" } @row)."</tr>\n"; 
} 
print "</table>\n"; 
2
while (my @row = $sth->fetchrow_array) 
{ 
     print "<tr>".join("", map{ "<td>${_}</td>" } @row)."</tr>" ; 
} 
+0

Pas besoin de la jointure. L'impression prend une liste. Donc vous pouvez dire: print '', carte (" $ _"), @row), '; – daotoad

2

Utilisez la technique proposée dans la réponse (s) à l'autre question - utiliser fetchrow_array chercher dans un tableau:

while (my @row = $sth->fetchrow_array()) 
{ 
    ...process array... 
} 

Ou utiliser une alternative à fetchrow_array(), comme fetchrow_hashref().

Questions connexes