tabella html con ciclo for annidato

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Buongiorno,

potete aiutarmi a costruire una tabella html secondo le mie esigenze?
ieri notte sono arrivato alla prima concluione dopo una giornata intera ma mi sono proprio bloccato

ho una variabile che mi resituisce questo valore come esempio

$ar=5,5,2,3;

da questa ora devo creare una tabella che abbia tante righe quanti i valori presenti in questo caso 4 e
tante colonne quanti i singoli valori della variabile quindi

righe 4
prima riga-------->5 colonne
seconda riga----->5 colonne
terza riga-------->2 colonne
quarta riga------->3 colonne

dato che con la tabella htm questo non si può fare se non usando colwspan pensavo anche dif arlo con i div ma il conceto resta uguale

io ho fatto cosi ma non funge e ho finito i tentativi

PHP:
$arr=5,5,2,3;
$ar=explode(","$arr);
$nr=count($ar)
echo "<div id="contenitore">;

for ($j = 0; $j < $count-1; $j++) {
//creo le righe
echo "<tr>"
//dato che $ar è un array quindi epr fare il ciclo per ogni colonna dovrei fare $ar[0] $ar[1] etc ho preseguito cosi
for ($i = 0; $i <= $ar[$j]; $i++) {
echo "<td>";///etc
}
echo "</tr>";
}

ma niente d a fare come giro e la volto mi crea le 4 righe ma per ogni riga mi da il $ar[$j] massimo quindi in questo caso mi da 5 colonne per ogni riga e concettualmente non sbaglia ma non è quello che mi serve.

Sicurmaente dovrò arlo con dei div ma mi manca proprio la sintassi esatta.
Suggerimenti?
 
Ciao, prova cosi
PHP:
<?php

$arr = "5,5,2,3";
$ar = explode(",", $arr);
$nr = count($ar);
$x = max($ar);
echo "<table border=1>";
for ($j = 0; $j < $nr; $j++) {
    echo "<tr>";
    for ($i = 0; $i < $ar[$j]; $i++) {
        $r = 1;
        if ($i == $ar[$j] - 1) {
            if ($ar[$j] < $x) {
                $r = $x - $ar[$j] + 1;
            }
        }
        echo "<td colspan='$r'>&nbsp;" . $ar[$j] . "&nbsp;</td>";
    }
    echo "</tr>";
}
echo "</table>";
?>
 
Ultima modifica:
Sei un genio.

non ci ho capito molto però :D

dopo me lo studioo ben bene però non funge il colspan

e penso che non possa fungere perchè se uno degli element ad esempio è pari a 5 si creeranno 5 colonne. quindi nella riga dove sono occupate solo 3 colonne dovrebbe saltare la prima e la quinta per centrarli per dove l'elemento è pari a 4 non può unire le celle

iuso?
 
si che funge il colspan
questo è l'html generato dallo script
HTML:
<table border=1>
<tr>
<td colspan='1'>&nbsp;5&nbsp;</td>
<td colspan='1'>&nbsp;5&nbsp;</td>
<td colspan='1'>&nbsp;5&nbsp;</td>
<td colspan='1'>&nbsp;5&nbsp;</td>
<td colspan='1'>&nbsp;5&nbsp;</td>
</tr>
<tr>
<td colspan='1'>&nbsp;5&nbsp;</td>
<td colspan='1'>&nbsp;5&nbsp;</td>
<td colspan='1'>&nbsp;5&nbsp;</td>
<td colspan='1'>&nbsp;5&nbsp;</td>
<td colspan='1'>&nbsp;5&nbsp;</td>
</tr>
<tr>
<td colspan='1'>&nbsp;2&nbsp;</td>
<td colspan='4'>&nbsp;2&nbsp;</td>
</tr>
<tr>
<td colspan='1'>&nbsp;3&nbsp;</td>
<td colspan='1'>&nbsp;3&nbsp;</td>
<td colspan='3'>&nbsp;3&nbsp;</td>
</tr>
</table>
ho provato ad aumentare righe e colonne
PHP:
$arr = "4,9,5,6,7,5,6,2,3,4";
guarda qui
 
ah si ok cosi

forse mi sono spegato male



seguendo il tuo esempio nella prima riga quella con il 4 vorreic he le 4 celle siano centrate rispetto la tabella.

come ad esempio una struttura piramidale.

Quindi se le colonne sono 5

|____|___|___|___|___|
|__5_|_5_|_5_|_5_|_5_|
|______3___3___3_____|
|___4____4___4___4___|

non penso sia ppssibile nelle tabelle html, ora sto provando a usare il tuo codice con il div.

quindi creare tot contenitori al post di tr e tot sottocontenitore al posto dei td ma la vedo dura.
 
Ultima modifica:
cosi potrebbe andare?
PHP:
<style>
    table {
       margin: auto;
    }
    table tr td {
        border: 1px solid black;
    }
</style>
<?php
$arr = "4,9,5,6,7,5,6,2,3,4";
$ar = explode(",", $arr);
$nr = count($ar);
$mx = max($ar);
echo "<table>\n";
for ($j = 0; $j < $nr; $j++) {
    echo "<tr><td>\n";
    echo "<table>";
    echo "<tr>";
    for ($i = 0; $i < $ar[$j]; $i++) {
        echo "<td>&nbsp;" . $ar[$j] . "&nbsp;</td>\n";
    }
    echo "</tr>";
    echo "</table>";
    echo "</td></tr>\n";
}
echo "</table>";
?>
creiuna tabella all'interno di ogni tr e le centi con i css
 
Grandioso.

Come ho fatto a non pensarci io ?

Grazie ciric.











O forse lo avevo già detto a borgo? :confused:
 

Discussioni simili