Visualizzare un array in una tabella

fonzyyyyyyy

Nuovo Utente
12 Set 2005
6
0
0
Mettiamo di avere un array di 20 elementi e volerlo visualizzare in una tabella di 4 X 4 elementi.

Avevo pensato di creare due cicli di for uno dentro l'altro in questo modo:

$Numero = 20;
echo"<table border='0' cellpadding='2' cellspacing='2'>";
for($i=0;$i<$Numero;$i++)
{
echo"<tr>";
for($n=0;$n<4;$n++)
{
echo"<td>";
echo"$i";
echo"</td>";
}
echo"</tr>";
}
echo"</table>";

Ovviamente però non funziona...mi crea 2 colonne con gli stessi 20 elementi.
 
cosi dovrebbe funzionare:
PHP:
<?
$array = array(0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19);
//contiamo i valori dell'array (un pò come il tuo 20)
$numero = count($array);

//stampiano la tabella
echo "<table>\n";
for ($i = 0; $i <= $numero - 1; $i++)
{

//numero delle colonne
if ($col == ceil($numero / 4))
{
$col = 0;
echo " </tr>\n";
echo " <tr>\n";
}

//stampa dei valori
echo " <td>" . $array[$i] . "</td>\n";
$col++;
}
echo "</table>\n";
?>

Il vantaggio è che ti basterà modificare:
PHP:
$col == ceil($numero / 4)

in 3 o come vuoi per ottenere senza sforzo un diverso incolonnamento.
:byebye:
 
e se...

Salve a tutti.:byebye:

dicevo, e se volessi visualizzare dei dati provenienti da una selezione tramite un checkbox?
mi spiego:
ho n valori in una tabella di un db mysql e li porto a video con una select, poi inserisco un checkbox che mi permette di selezionarne alcuni, infine quelli selezionati vanno ad una pagina che li incolonna in tabelle:
ecco il codice:
prelabels.php (preleva i dati per selezionarli)
PHP:
<?php
......
echo "<table border=1 bordercolor=black width=100% cellspacing=0 cellpadding=2>\n";
echo "<tr bgcolor=#66FF99>\n";
echo "<th align=right><font face=verdana size=-2><nobr><center>id</center></nobr></font></th>\n";
echo "<th align=center><font face=verdana size=-2><nobr><center>Cognome e Nome o Ragione Sociale</center></nobr></font></th>\n";
echo "<th align=left><font face=verdana size=-2><nobr><center>Titolo</center></nobr></font></th>\n";
echo "<th align=center><font face=verdana size=-2><nobr>Persona F/G</a></center></nobr></font></th>\n";
echo "<th align=center><font face=verdana size=-2><nobr><center>Figura</nobr></a></center></font></th>\n";
echo "<th align=right><font face=verdana size=-2><nobr><center>Tipologia</a></center></nobr></font></th>\n";
echo "<th align=right><font face=verdana size=-2><nobr><center>Ufficio di Competenza</a></center></nobr></font></th>\n";
echo "<th align=right><font face=verdana size=-2><nobr><center>Note</center></nobr></font></th>\n";
echo "<th align=right><font face=verdana size=-2><nobr><center>Selezione</center></nobr></font></th>\n";
echo"</tr>\n";
?>
<SCRIPT LANGUAGE="JavaScript">
function check(field)
{
for (i = 0; i < field.length; i++)
{
field[i].checked = true;
}
}
function decheck(field)
{
for (i = 0; i < field.length; i++)
{
field[i].checked = false;
}
}
</script>
<? 
echo "<form name=\"formmail\" method=\"post\" action=\"labels.php\">";
$i = 1;
	while ($row = mysql_fetch_array($result)) {
		echo "<tr align=top bgcolor=\"yellow\">\n";
echo "<td align=right><font face=verdana size=-2>$row[id]</font></td>\n";
echo "<td align=center><font face=verdana size=-2>$row[Cognome_e_Nome]</font></td>\n";
echo "<td align=center><font face=verdana size=-2>$row[Titolo]</font></td>\n";
echo "<td align=right><font face=verdana size=-2>$row[Persona_Fisica_Giuridica]</font></td>\n";
echo "<td align=center><font face=verdana size=-2>$row[Figura]</font></td>\n";	
echo "<td align=center><font face=verdana size=-2>$row[Tipologia]</font></td>\n";	
echo "<td align=center><font face=verdana size=-2>$row[Ufficio_Competenza]</font></td>\n";
echo "<td align=center><font face=verdana size=-2>$row[Note]</font></td>\n";
echo "<td align=left><input type=\"checkbox\" name=\"check_$i\"><input type=button value=\"A\" onClick=\"check(formmail)\"<input type=button value=\"N\" onClick=\"decheck(formmail)\"></td>\n";
echo "<input type=\"hidden\" name=\"Titolo_$i\" value=\"$row[Titolo]\">";
echo "<input type=\"hidden\" name=\"Nome_$i\" value=\"$row[Cognome_e_Nome]\">";
echo "<input type=\"hidden\" name=\"Indirizzo_$i\" value=\"$row[Indirizzo]\">";
echo "<input type=\"hidden\" name=\"Citta_$i\" value=\"$row[Citta]\">";
echo "<input type=\"hidden\" name=\"Provincia_$i\" value=\"$row[Provincia]\">";
echo "<input type=\"hidden\" name=\"CAP_$i\" value=\"$row[CAP]\">";
$i++;
	}
	echo "</table>";  
	echo "</font></td></tr>\n\n";
	echo "<p><input type=\"submit\" name=\"invia\" value=\"  INVIA  \"></p>";
    echo "</form>";
	@mysql_free_result ($result); 
?>

labels.php (crea le etichette per la stampa):

PHP:
<?
foreach (array_keys($_POST) as $key){ 
    //controllo che la chiave sia "check" e sia impostata ad on 
    if (eregi("^check_", $key) and $_POST[$key] == 'on'){ 
        //Seleziono tutti i valori degli elementi selezionati 
        $myVar = $_POST[ereg_replace("check", "Titolo", $key)]; 
        $myVar2 = $_POST[ereg_replace("check", "Nome", $key)]; 
        $myVar3 = $_POST[ereg_replace("check", "Indirizzo", $key)]; 
        $myVar4 = $_POST[ereg_replace("check", "Citta", $key)]; 
        $myVar5 = $_POST[ereg_replace("check", "Provincia", $key)]; 
        $myVar6 = $_POST[ereg_replace("check", "CAP", $key)]; 
        $etichetta="<b><font size=\"2\" face=\"Verdana\">$myVar</font></b><br />"."<b><font size=\"2\" face=\"Verdana\">$myVar2</font></b><br />"."<b><font size=\"2\" face=\"Verdana\">$myVar3</font></b><br />"." <b><font size=\"2\" face=\"Verdana\">$myVar6</font></b>"."  "."<b><font size=\"2\" face=\"Verdana\">$myVar4 (</font></b>"."<b><font size=\"2\" face=\"Verdana\">$myVar5)</font></b><br />";
        echo $etichetta;
    } 
} /*e ora come inserisco le varie etichette nelle tabelle ?:-) */
?>
Grazie del preziosissimo aiuto
 
Ciao Eliox e benritrovato..(non so se ti ricordi, ho fatto il tuo corso di php, ma da buon principiante faccio ancora fatica certe volte....A proposito, a quando un bel corso avanzato? Magari videocorso...:book: )
Quanto alle etichette, direi così:

etichette.jpg


Grazie mille...davvero di cuore.
Ciao da Massimo
 
Ciao Coccobil,
certo che mi ricordo di te! Per l'avanzato di PHP avrai presto notizie! Ma non ti posso dire di più sennò Luke mi scanna.:rolleyes:

per quanto rigurada l'incolonnamento puoi sfruttare un ciclo:
PHP:
$colonne = 3;

$query = "SELECT dato FROM dati ORDER BY id";
$result = mysql_query($query);

$num_rows = mysql_num_rows($result);
echo "<TABLE>\n";

for($i = 0; $i < $num_rows; $i++) {
    $row = mysql_fetch_array($result);
    if($i % $colonne == 0) {

        echo "<tr>\n";
    }
    echo "<td>" . $row['dato'] . "</td>\n";
    if(($i % $colonne) == ($colonne - 1) || ($i + 1) == $num_rows) {
        
        echo "</tr>\n";
    }
}
echo "</table>\n";

:byebye:
 
Bene bene....mi piace l'idea di approfondire..;)
Per le tabelle, sai qual'è il problema?che non prelevo direttamente i dati dal db ma prima ne faccio una selezione con un checkbox:
(ho inserito il codice nel post precedente e come vedi)

prelabels.php
PHP:
<?
echo "<form name=\"formmail\" method=\"post\" action=\"labels.php\">";
$i = 1;
    while ($row = mysql_fetch_array($result)) {
        echo "<tr align=top bgcolor=\"yellow\">\n";
echo "<td align=right><font face=verdana size=-2>$row[id]</font></td>\n";
echo "<td align=center><font face=verdana size=-2>$row[Cognome_e_Nome]</font></td>\n";
echo "<td align=center><font face=verdana size=-2>$row[Titolo]</font></td>\n";
echo "<td align=right><font face=verdana size=-2>$row[Persona_Fisica_Giuridica]</font></td>\n";
echo "<td align=center><font face=verdana size=-2>$row[Figura]</font></td>\n";    
echo "<td align=center><font face=verdana size=-2>$row[Tipologia]</font></td>\n";    
echo "<td align=center><font face=verdana size=-2>$row[Ufficio_Competenza]</font></td>\n";
echo "<td align=center><font face=verdana size=-2>$row[Note]</font></td>\n";
/*QUI SELEZIONO INDICIZZANDO----->*/ echo "<td align=left><input type=\"checkbox\" name=\"check_$i\">[/B]<input type=button value=\"A\" onClick=\"check(formmail)\"<input type=button value=\"N\" onClick=\"decheck(formmail)\"></td>\n";
echo "<input type=\"hidden\" name=\"Titolo_$i\" value=\"$row[Titolo]\">";
echo "<input type=\"hidden\" name=\"Nome_$i\" value=\"$row[Cognome_e_Nome]\">";
echo "<input type=\"hidden\" name=\"Indirizzo_$i\" value=\"$row[Indirizzo]\">";
echo "<input type=\"hidden\" name=\"Citta_$i\" value=\"$row[Citta]\">";
echo "<input type=\"hidden\" name=\"Provincia_$i\" value=\"$row[Provincia]\">";
echo "<input type=\"hidden\" name=\"CAP_$i\" value=\"$row[CAP]\">";
$i++;
    }
    echo "</table>";  
    echo "</font></td></tr>\n\n";
    echo "<p><input type=\"submit\" name=\"invia\" value=\"  INVIA  \"></p>";
    echo "</form>";
    @mysql_free_result ($result);
?>

che punta a labels.php che recupera i dati sulla base dei checkbox selezionati:

PHP:
<?
/*QUI RICHIAMO IL SELEZIONATO ------>*/foreach (array_keys($_POST) as $key){
    //controllo che la chiave sia "check" e sia impostata ad on
    if (eregi("^check_", $key) and $_POST[$key] == 'on'){
        //Seleziono tutti i valori degli elementi selezionati[/B]
        $myVar = $_POST[ereg_replace("check", "Titolo", $key)];
        $myVar2 = $_POST[ereg_replace("check", "Nome", $key)];
        $myVar3 = $_POST[ereg_replace("check", "Indirizzo", $key)];
        $myVar4 = $_POST[ereg_replace("check", "Citta", $key)];
        $myVar5 = $_POST[ereg_replace("check", "Provincia", $key)];
        $myVar6 = $_POST[ereg_replace("check", "CAP", $key)];
        $etichetta="<b><font size=\"2\" face=\"Verdana\">$myVar</font></b><br />"."<b><font size=\"2\" face=\"Verdana\">$myVar2</font></b><br />"."<b><font size=\"2\" face=\"Verdana\">$myVar3</font></b><br />"." <b><font size=\"2\" face=\"Verdana\">$myVar6</font></b>"."  "."<b><font size=\"2\" face=\"Verdana\">$myVar4 (</font></b>"."<b><font size=\"2\" face=\"Verdana\">$myVar5)</font></b><br />";
        echo $etichetta;
    }
} /*e ora come inserisco le varie etichette nelle tabelle ?:-) */
?>

quindi nelle tabelle andranno inserite solo gli elementi selezionati che ho trasformato in etichette, ma appunto non so come fare.
Comunque anche l'altro codice che hai postato fa comodo, ne faccio una libreria :)

Grazie infinite!
:byebye:
Max
 

Discussioni simili