In un precedente articolo avevamo già affrontato il discorso riguardante l'impaginazione per colonne dei records estratti da MySQL. Ora proporremo due nuove soluzioni che prevedono sia l'impaginazione orizzontale dei risultati sia quella verticale.
L'impaginazione orizzontale prevede una disposizione che ha come punto di riferimento le righe, si procede orizzontalmente per poi andare a capo e riprendere l'ordine nella riga successiva:
a b c
d e f
g ...
Ecco come potrebbe presentarsi il nostro codice per l'allineamento orizzontale (daremo per scontato che i dati di connessione e selezione del database si trovino in un file esterno incluso all'inizo dello script):
<?php
@include "config.php";
$colonne = 2;
$sql = "SELECT dato FROM tb";
$res = @mysql_query($sql);
if(($righe = @mysql_num_rows($res))>0)
{
echo "<table>\n";
for($i = 0; $i < $righe; $i++) {
$r = @mysql_fetch_array($res);
if($i % $colonne == 0) {
echo "<tr>\n";
}
echo "<td>" . $r['dato'] . "</td>\n";
if(($i % $colonne) == ($colonne - 1) || ($i + 1) == $righe) {
echo "</tr>\n";
}
}
echo "</table>\n";
}
?>
Per quanto riguarda invece l'allineamento verticale, questo prevede una disposizione basata sulle colonne, in pratica i dati verranno visualizzati uno sotto l'altro fino alla fine di una colonna per poi ricominciare in quella successiva:
a d g
b e .
c f .
Ed ecco il codice dello script per l'incolonnamento:
<?php
@include "config.php";
$colonne = 2;
$sql = "SELECT dato FROM tb";
$res = @mysql_query($sql);
$righe = @mysql_num_rows($res);
$rs = @ceil($righe / $colonne);
while($r = @mysql_fetch_array($res)) {
$data[] = $r['dato'];
}
echo "<table>\n";
for($i = 0; $i < $rs; $i++) {
echo "<tr>\n";
for($j = 0; $j < $colonne; $j++) {
if(isset($data[$i + ($j * $rs)])) {
echo "<td>" . $data[$i + ($j * $rs)] . "</td>\n";
}
}
echo "</tr>\n";
}
echo "</table>\n";
?> |