Newsgroup: it.comp.www.php
Titolo: ok panico: array ginepraio

salve a tutti,
l'oggetto spiega gia' che mi trovo in un punto morto con gli array :/
ho un comune array del tipo:
<?php
  $schema_tab1 = array("id", "nome", "descrizione");
?>
poi ho una tabella mysql "tab1" la quale struttura deve essere stampate a
video, "filtrata" in base alla query sql che ottengo in modo simile:
<?php
  $campi = implode("," $schema_tab1);
  $sql = "SELECT " .$campi. " FROM tab1";
?>
l'array e' difatti lo schema dei campi della tabella "tab1". fin qui tutto
ok. adesso stampo a video i campi dentro le <td>.
<?php
  $nc = count($schema_tab1); // conto i campi
  for ($i=0; $i<$nc; $i++) {
    $tds .= "<td>" .$schema_tab1[$i]. "</td>\n";
  }
?>
e ok anche qua.
adesso devo stampare i valori per tutti i record restituiti dalla query
sql, pero' vorrei farlo costruendo un array *e poi* usare i valori
dell'array _a_database_gia'_chiuso_
sto provando cosi':
<?php
  $num = mysql_num_rows($res);
  for ($r=0; $r<$num; $r++) {
    $array_valori[] = mysql_fetch_assoc($res); //non so se va bene
  }
?>
e con print_r ottengo:
[0] => Array
  (
    [id] => 1
    [nome] => peperone
    [descrizione] => buono anche crudo
  )
[1] => Array
  (
    [id] => 2
    [nome] => miele
    [descrizione] => mi stucca subito :-/
  )
ecc..
il problema e' che non so come utilizzare $array_valori per stampare a
video qualcosa del genere:
<tr>
  <td>1</td>
  <td>peperone</td>
  <td>descrizione</td>
</tr>
<tr>
  <td>2</td>
  <td>miele</td>
  <td>mi stucca subito :-/</td>
</tr>
come caspiterina esco da sto ginepraio? :-(

echo "<tr>";
foreach ($array_valori as $riga) {
echo "<td>".$riga['id'] ."</td>";
echo "<td>".$riga['nome'] ."</td>";
echo "<td>".$riga['descrizione'] ."</td>";
}
echo "</tr>";

 salve a tutti,
<?php
if (mysql_num_rows($res) > 0) {
	while ($fields = mysql_fetch_assoc($res)) {
		echo '<tr>
		<td>' . $fields['id'] . '</td>
		<td>' . $fields['nome'] . '</td>
		<td>' . $fields['descrizione'] . '</td>
		</tr>';
	}
}
?>
A.
-- 
On web: 
http://antoniobonanno.debris.it/
On Etz: 
http://plasson.etz.it/



:-)
eh, magari potessi fare cosi' :-)
in realta' io NON so in partenza i nomi dei campi, perche' ogni tabella ha
il suo schema mysql E schema_array.
comunque impostando la query sql "filtrata" con i nomi dei campi
dell'array, SE l'ordine degli array e' UGUALE a quello dei campi della
tabella, ho appena capito (sono ben poco pratico di php) posso ricavare i
valori usando mysql_fetch_row anziche' mysql_fetch_assoc e :
// $i indice di riga
// $c indice di campo
$valore = $array_valori[$i][$c];
o almeno, a me sta funzionando.
tnx! :-)

umh..... una domanda...
se avessi due array del genere:
$arr1 = array("id","nome","descrizione","foto");
$arr2 = array("descrizione","altezza","id","cognome");
e volessi fare in modo che $arr2 si "adegui" ad $arr1 facendo in modo che:
a) i valori di $arr2 che _NON_ sono dentro $arr1 siano tolti
b) i valori di $arr2 siano ordinati secondo lo stesso criterio di $arr1
per (b) ho qualche perplessita', perche' l'ordine di $arr1 non e' "un
ordine" ma solo una sequenza!
e' possibile quindi far "ereditare" l'ordine di $arr1 ad $arr2?

 valori usando mysql_fetch_row anziche' mysql_fetch_assoc e :
prova con
http://it.php.net/manual/it/function.mysql-fetch-array.php
[quoto]
mysql_fetch_array() è una versione estesa di mysql_fetch_row(). Oltre a 
memorizzare i dati del risultato in array con indice numerico, questa li 
memorizza anche con indici associativi usando i nomi dei campi come chiavi.
[/quoto]
ciao
Mauro