Popolare una tabella con numero righe e colonne prefissate

  • Creatore Discussione Creatore Discussione Madnick
  • Data di inizio Data di inizio

Madnick

Nuovo Utente
8 Gen 2014
6
0
0
Buona domenica a tutti,
ho cercato e ricercato ma non ho trovato nessun post che ne parli e il dubbio che mi assale è se questa cosa si possa fare o meno.
Cerco di spiegarmi:

ho un database con all'interno una tabella contenente la lista di persone. La tabella è formata con i campi: nome, cognome, numero telefonico, provincia e altre informazioni.
Ho realizzato il codice per l'estrapolazione dei dati di una determinata provincia e la visualizzazione di detti dati in una tabella.
DI seguito riporto il codice

PHP:
echo "<table border='1' width='320'> 
<tr> 
<th align='center'>Impiegato</th>  
</tr>"; 

while($row = mysql_fetch_array($result)) 
{ 
echo "<tr>"; 
echo "<td  align='center'>". $row['nome'] ."<p>". $row['cognome'] ."</p><p>". $row['tel'] . "</td>"; 
echo "</tr>"; 

} 

echo "</table>"; 
echo  
mysql_close($con);

Mentre facevo le prove il db era vuoto (un record) e non ho pensato al problema, ora che il db è formato da un centinaio di record ho problemi di visualizzazione. Dovete scusarmi ma con il Php sono proprio alle prime armi.

Quello che vorrei è che si creasse una tabella con righe e colonne prefissate (che so 10 righe 5 colonne) e all'interno di ogni cella venga inserito il risultato del nome, cognome e telefono.

Esiste una soluzione?!
Attendo con ansia vostre risposte :)
Ciao
 
Prova cosi:
PHP:
<table>
	
	<th>Impiegato</th>
	
	<tr>
		<td>Riga</td>
		<td>Nome</td>
		<td>Cognome</td>
		<td>Telefono</td>
	</tr>
	
	<?php
	
	$riga = 0;
	$html = '';
	
	while( $obj = mysql_fetch_object($result) ){ ++$riga;
		
		$html .= '<tr>';
		
		$html .= '<td>'.$riga.'</td><td>'.$obj->nome.'</td><td>'.$obj->cognome.'</td><td>'.$obj->tel.'</td>';
		
		$html .= '</tr>';
		
	}
	
	echo $html;
	
	?>
	
</table>
Cmq ho usato object invece di array e molto meglio !
 
Ho modificato lo script se vuoi 1 tabella ogni 10 record:
PHP:
<table>
	
	<th>Impiegato</th>
	
	<tr>
		<td>Riga</td>
		<td>Nome</td>
		<td>Cognome</td>
		<td>Telefono</td>
	</tr>
	
	<?php
	
	$riga = 0;
	$html = '';
	$riga_end = 10;
	
	while( $obj = mysql_fetch_object($result) ){ ++$riga;
		
		if( $riga != $riga_end ){
			
			$html .= '<tr>';
			
			$html .= '<td>'.$riga.'</td><td>'.$obj->nome.'</td><td>'.$obj->cognome.'</td><td>'.$obj->tel.'</td>';
			
			$html .= '</tr>';
		
		}elseif( $riga == $riga_end ){
			
			$riga_end = $riga + 10;
			
			$html .= '</table><table>';
			
			$html .= '<th>Impiegato</th>';
			
			$html .= '<tr><td>Riga</td><td>Nome</td><td>Cognome</td><td>Telefono</td></tr>';
			
			$html .= '<tr>';
			
			$html .= '<td>'.$riga.'</td><td>'.$obj->nome.'</td><td>'.$obj->cognome.'</td><td>'.$obj->tel.'</td>';
			
			$html .= '</tr>';
			
		}
		
	}
	
	echo $html;
	
	?>
	
</table>
 
Ultima modifica:
Prova cosi:
PHP:
<table>
	
	<th>Impiegato</th>
	
	<tr>
		<td>Riga</td>
		<td>Nome</td>
		<td>Cognome</td>
		<td>Telefono</td>
	</tr>
	
	<?php
	
	$riga = 0;
	$html = '';
	
	while( $obj = mysql_fetch_object($result) ){ ++$riga;
		
		$html .= '<tr>';
		
		$html .= '<td>'.$riga.'</td><td>'.$obj->nome.'</td><td>'.$obj->cognome.'</td><td>'.$obj->tel.'</td>';
		
		$html .= '</tr>';
		
	}
	
	echo $html;
	
	?>
	
</table>
Cmq ho usato object invece di array e molto meglio !

Grazie per la risposta, ma immagino mi sia spiegato male. Da come ho capito dal codice che hai postato si realizza una tabella così:
-------------------------------------------
| Riga | Nome | Cognome | Telefono |
-------------------------------------------
| 1 | Pippo | Bianchi | 012345 |
------------------------------------------
| 2 | Mario | Rossi | 12345 |
------------------------------------------
ecc ecc

Non volevo questa visualizzazione.

Vorrei una tabella con colonne e righe che tramite codice specifico il numero (che so 4 colonne e 10 righe) e i dati estrapolati vengano visualizzati come segue:

-----------------------------------------
| Pippo | Mario | Giorgio | Rosa |
| Bianchi | Rossi | Verdi | Rossa |
| 12345 | 12345 | 09876 | 456464 |
-----------------------------------------
| Luca | Paolo | Giorgio | Rosa |
| Bianchi | Giallo | Blu | Bianca |
| 98767 | 12121 | 07689 | 124412 |
-----------------------------------------
ecc ecc

Cioè all'interno di un unica cella vengano inseriti tutti i dati identificati di quel determinato impiegato e la tabella non deve superare i 4 risultati per riga, cioè il quinto risultato deve andare nella cella che sta subito sotto alla prima.
E' fattibile?
Grazie ancora
 
Dovrebbe andar bene anche se non ho usato la tabella vedi un po
PHP:
<div style="width: 400px;">
	
	<h1 style="text-align: center;">Impiegato</h1>
		
	<?php
	
	$col = 0;
	$col_end = 4;
	$html = '';

	while( $obj = mysql_fetch_object($result) ){ ++$col;
				
		if( $col == 1 || $col == ( $col_end + 1 ) )
			$html .= '<div style="float: left; width: 400px;">';
		
		$html .= '<div style="width: 100px; float: left;">';
	
		$html .= '<p>'.$obj->nome.'</p>';
	
		$html .= '<p>'.$obj->cognome.'</p>';
	
		$html .= '<p>'.$obj->tel.'</p>';
		
		$html .= '</div>';

		if( $col == 1 || $col == ( $col_end + 1 ) )
			$html .= '</div>';
		
		if( $col == ( $col_end + 1 ) )
			$col_end = $col + 3;
		
	}
	
	echo $html;
	
	?>
		
</div>
 
Ultima modifica:
Ciao, guarda il ciclo di questa discussione, al posto dell'immagine inserirai i dati, $cols identifica il numero massimo di colonne
oppure puoi provare con i div e i css in questo modo
PHP:
<?php

$sql = new mysqli("localhost", "username", "password", "database");
$query = "SELECT * FROM tabella";
$result = $sql->query($query);
?>
<style type="text/css">
    .result {
        float: left;
        border: 1px dashed #555;
        padding:10px;
    }
    .both {
        clear:both;
    }
</style>
<?php

$colonne = 5;
$i = 0;
while ($row = $result->fetch_array()) {
    echo "<div class='result'>";
    echo $row[0] . "<br/>" . $row[1] . "<br/>" . $row[2];
    echo "</div>";
    $i++;
    if ($i % $colonne == 0) {
        echo "<div class='both'></div>";
    }
}
?>
 
Ciao, guarda il ciclo di questa discussione, al posto dell'immagine inserirai i dati, $cols identifica il numero massimo di colonne
oppure puoi provare con i div e i css in questo modo
PHP:
<?php

$sql = new mysqli("localhost", "username", "password", "database");
$query = "SELECT * FROM tabella";
$result = $sql->query($query);
?>
<style type="text/css">
    .result {
        float: left;
        border: 1px dashed #555;
        padding:10px;
    }
    .both {
        clear:both;
    }
</style>
<?php

$colonne = 5;
$i = 0;
while ($row = $result->fetch_array()) {
    echo "<div class='result'>";
    echo $row[0] . "<br/>" . $row[1] . "<br/>" . $row[2];
    echo "</div>";
    $i++;
    if ($i % $colonne == 0) {
        echo "<div class='both'></div>";
    }
}
?>

Grazie mille per l'aiuto sei stato utilissimo, ora faccio qualche modifica ai codici che mi hai consigliato ma di base è proprio quello che volevo!

Ciao!
 

Discussioni simili