Query in una tabella

Ciao Gianni. Riprendo una tua risposta ad un mio post per farti una domanda

Per quanto riguarda la tabella (HTML) io avrei fatto diversamente. Avrei realizzato prima la pagina HTML in un file separato. Poi, nei punti in cui voglio far comparire dei dati provenienti dalla SELECT, avrei messo degli:

<?php echo $row['campo_tabella']?>

ed invine, nello script che effettua la query, avrei messo una include per richiamare il file con l'HTML.

Allora io ho creato il file  tabella.htm del quale ti allego il codice

<html>

<head>
<meta http-equiv="Content-Language" content="it">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>MARCA</title>
</head>

<body>

<table border="1" width="100%" id="table1">
   <tr>
      <td>MARCA</td>
      <td>MODELLO</td>
      <td>PREZZO</td>
      <td>ANNO</td>
      <td>KW</td>
      <td>COLORE</td>
      <td>KM</td>
      <td>OPTIONALS</td>
   </tr>
   <tr>
      <td>&lt;?php echo $row[marca] ?&gt;</td>
      <td>&lt;?php echo $row[modello] ?&gt;</td>
      <td>&lt;?php echo $row[prezzo] ?&gt;</td>
      <td>&lt;?php echo $row[anno] ?&gt;</td>
      <td>&lt;?php echo $row[kw] ?&gt;</td>
      <td>&lt;?php echo $row[colore] ?&gt;</td>
      <td>&lt;?php echo $row[km] ?&gt;</td>
      <td>&lt;?php echo $row[optional] ?&gt;</td>
   </tr>
</table>

</body>

</html>

Fatta la tabella ho modificato il php così

<?
include("config.inc.php");
include("connect.inc.php");
include("tabella.htm");
$query   =   "SELECT   id, marca, modello, prezzo, anno, kw, colore, km, optional   FROM   usato   ORDER   BY   id ";
$result   =   mysql_query($query,   $db);
while   ($row   =   mysql_fetch_array($result))
{include("tabella.htm");   }
mysql_close($db);
?>

Pero' ovviamente mi riporta sempre le intestazioni di colonna e nelle colonne della tabella mi appare <?php echo $row[marca] ?>

Per favore puoi aiutarmi a modificare il codice?

inviato 10 anni fa
blackeyes
X 0 X

ho provato anche cosi ma viene uno schifo :-[ :-[ :-\

<?
include("config.inc.php");
include("connect.inc.php");
$query   =   "SELECT   id, marca, modello, prezzo, anno, kw, colore, km, optional   FROM   usato   ORDER   BY   id ";
$result   =   mysql_query($query,   $db);
?>
<table border=1 width=100% id=tabella>
   <tr>
      <td>MARCA</td>
      <td>MODELLO</td>
      <td>PREZZO</td>
      <td>ANNO</td>
      <td>KW</td>
      <td>COLORE</td>
      <td>KM</td>
      <td>OPTIONALS</td>
   </tr>
   
   </table>

<?
while   ($row   =   mysql_fetch_array($result))
{   
   $riga.="<td><a   href=\"view.php?id=$row[id]\">$row[marca]</a></td>";
   $riga.="<td> $row[modello] </td> "; 
   $riga.="<td> $row[prezzo] </td>";
   $riga.="<td> $row[anno]  </td>";
   $riga.="<td> $row[kw] </td>";
   $riga.="<td> $row[colore] </td>";
   $riga.="<td> $row[km] </td>";
   $riga.="<td> $row[optional] </td>";
   $riga.="<br>";
   }
   echo $riga;
mysql_close($db);
?>
risposto 10 anni fa
blackeyes
X 0 X

L'ordine delle istruzioni deve essere il seguente:

1) caricamento dello script di configurazione e connessione

2) esecuzione della query

3) fetch dei risultati. I risultati vanno TUTTI salvati in variabili o array. Non deve esserci nessun echo! Anche le OPTIONS della select vanno tutte memorizzate in una variabile.

4) inclusione del file contenente l'HTML e le varie echo che mostreranno i dati memorizzati durante la fetch.

Ok?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

in teoria si adesso debbo vedere cosa esce fuori nella pratica ???

risposto 10 anni fa
blackeyes
X 0 X
fetch dei risultati. I risultati vanno TUTTI salvati in variabili o array. Non deve esserci nessun echo! Anche le OPTIONS della select vanno tutte memorizzate in una variabile.

Come faccio a salvare i risultati di una fetch in variabili o array con php ?

risposto 10 anni fa
blackeyes
X 0 X
fetch dei risultati. I risultati vanno TUTTI salvati in variabili o array. Non deve esserci nessun echo! Anche le OPTIONS della select vanno tutte memorizzate in una variabile.

Come faccio a salvare i risultati di una fetch in variabili o array con php ?

cosi'?

$nome = htmlspecialchars($row['marca']);

$nome2 = htmlspecialchars($row['modello']);

etc...

risposto 10 anni fa
blackeyes
X 0 X

le ho provate tutte ma non va' :'(

index.php

<?
include("config.inc.php");
include("connect.inc.php");
$query   =   "SELECT   id, marca, modello, prezzo, anno, kw, colore, km, optional   FROM   usato   ORDER   BY   id ";
$result   =   mysql_query($query,   $db);
while   ($row   =   mysql_fetch_array($result))
{
   
//così dovrei passare i dati alle variabili??????????????

        $nome1 = htmlentities($row['marca']);
   $nome2 = htmlentities($row['modello']);
   $nome3 = htmlentities($row['prezzo']);
   $nome4 = htmlentities($row['anno']);
   $nome5 = htmlentities($row['kw']);
   $nome6 = htmlentities($row['colore']);
   $nome7 = htmlentities($row['km']);
   $nome8 = htmlentities($row['optional']);

}
include("tabella.htm");

mysql_close($db);
?>

tabella.htm

<html>

<head>
<meta http-equiv="Content-Language" content="it">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>MARCA</title>
</head>

<body>

<table border="1" width="100%" id="table1">
   <tr>
      <td>MARCA</td>
      <td>MODELLO</td>
      <td>PREZZO</td>
      <td>ANNO</td>
      <td>KW</td>
      <td>COLORE</td>
      <td>KM</td>
      <td>OPTIONALS</td>
   </tr>
   <tr>
      <td>&lt;?php echo $row[$nome1] ?&gt;</td>
      <td>&lt;?php echo [$nome2]?&gt;</td>
      <td>&lt;?php echo $row[nome3] ?&gt;</td>
      <td>&lt;?php echo [nome4] ?&gt;</td>
      <td>&lt;?php echo $nome5 ?&gt;</td>
      <td>&lt;?php echo nome6; ?&gt;</td>
      <td>&lt;?php echo $row[$nome7] ?&gt;</td>
      <td>&lt;?php echo $row[nome8] ?&gt;</td>
   </tr>
</table>

</body>

</html>

nei campi della tabella ho provato tutto :-[ :-[ :-[ :-[ :-[

risposto 10 anni fa
blackeyes
X 0 X

Per memorizzare i risultati della fetch in array basta fare così:

Se si tratta di una sola riga:

$record = mysql_fetch_assoc($result);

Se sono più righe:

$dati = array();

while($tmp = mysql_fetch_assoc($result))

{

   $dati[] = $tmp;

}

Se vuoi modificare i dati durante l'operazione di fetch:

$dati = array();

while($tmp = mysql_fetch_assoc($result))

{

   $tmp['nome'] = htmlentities($tmp['nome']);

   $dati[] = $tmp;

}

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

se ho capito bene lo script dovrebbe essere modificato cosi';

<?

include("config.inc.php");

include("connect.inc.php");

$query   =   "SELECT   id, marca, modello, prezzo, anno, kw, colore, km, optional   FROM   usato   ORDER   BY   id ";

$result   =   mysql_query($query,   $db);

$dati = array();

while($tmp = mysql_fetch_assoc($result))

{

   $tmp['marca'] = htmlentities($tmp['marca]);

$tmp['modello'] = htmlentities($tmp['modello]);

//etc. etc...   

$dati[] = $tmp;

}

include("tabella.htm");

mysql_close($db);

?>

giusto??????

risposto 10 anni fa
blackeyes
X 0 X

si  O0

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

grazie per l'infinita pazienza!!!!!!!!!!!!!

risposto 10 anni fa
blackeyes
X 0 X

allora ho modificato l'index.php cosi:

<?
include("config.inc.php");
include("connect.inc.php");
$query   =   "SELECT   id, marca, modello, prezzo, anno, kw, colore, km, optional   FROM   usato   ORDER   BY   id ";
$result   =   mysql_query($query,   $db);
$dati = array();
while($tmp = mysql_fetch_assoc($result))
{
   $tmp['marca'] = htmlentities($tmp['marca']);
   $tmp['modello'] = htmlentities($tmp['modello']);
   $tmp['prezzo'] = htmlentities($tmp['prezzo']);
   $tmp['anno'] = htmlentities($tmp['anno']);
   $tmp['kw'] = htmlentities($tmp['kw']);
   $tmp['colore'] = htmlentities($tmp['colore']);
   $tmp['km'] = htmlentities($tmp['km']);
   $tmp['optional'] = htmlentities($tmp['optional']);
$dati[] = $tmp;
}
include("tabella.htm");

mysql_close($db);
?>

la tabella.htm cosi:

<html>

<head>
<meta http-equiv="Content-Language" content="it">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>MARCA</title>
</head>

<body>

<table border="1" width="100%" id="table1">
   <tr>
      <td>MARCA</td>
      <td>MODELLO</td>
      <td>PREZZO</td>
      <td>ANNO</td>
      <td>KW</td>
      <td>COLORE</td>
      <td>KM</td>
      <td>OPTIONALS</td>
   </tr>
   <tr>
      <td>&lt;?php echo $dati['marca'] ?&gt;</td>
      <td>&lt;?php echo $tmp['modello'] ?&gt;</td>
      <td>&lt;?php echo $dati['prezzo'] ?&gt;</td>
      <td>&lt;?php echo $dati['anno'] ?&gt;</td>
      <td>&lt;?php echo $dati['kw'] ?&gt;</td>
      <td>&lt;?php echo $dati['colore'] ?&gt;</td>
      <td>&lt;?php echo $dati['km'] ?&gt;</td>
      <td>&lt;?php echo $dati['optional'] ?&gt;</td>
   </tr>
</table>

</body>

</html>

e non va' richiamando l'index vedo l'intestazione delle colonne e subito sotto

<?php echo $dati['marca'] ?> per la prima colonna e cosi' via per tutte le altre....

nella seconda ho sostituito $dati con <?php echo $tmp['modello'] ?> ma il risultato non cambia :-[

risposto 10 anni fa
blackeyes
X 0 X

ma i caratteri &lt; li hai messi tu o sono un errore?

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

avevo creato la tabella con frontpage li ha aggiunti lui, comunque rettificando il file cosi

</head>

<body>

<table border="1" width="100%" id="table1">
   <tr>
      <td>MARCA</td>
      <td>MODELLO</td>
      <td>PREZZO</td>
      <td>ANNO</td>
      <td>KW</td>
      <td>COLORE</td>
      <td>KM</td>
      <td>OPTIONALS</td>
   </tr>
   <tr>
      <td><?php echo $dati['marca']?></td>
      <td><?php echo $tmp['modello']?></td>
      <td><?php echo $dati['prezzo']?></td>
      <td><?php echo $dati['anno']?></td>
      <td><?php echo $dati['kw']?></td>
      <td><?php echo $dati['colore']?></td>
      <td><?php echo $dati['km']?></td>
      <td><?php echo $dati['optional']?></td>
   </tr>
</table>

</body>

</html>

non va vedo solo le intestazioni delle colonne...

$dati e $tmp sono la stessa cosa no? comunque nella seconda colonna ho usato tmp per prova ma il risultato è lo stesso stà diventando una questione di principio ;) debbo capire che cosa sbaglo ;)

risposto 10 anni fa
blackeyes
modificato 10 anni fa
X 0 X

per ora ho risolto cosi' <html>

<head> <title>IL NOSTRO USATO</title> </head>

<body>

<table border="1" width="50%" id="table1">     <tr>         <td>MARCA</td>         <td>MODELLO</td>         <td>PREZZO</td>         <td>ANNO</td>         <td>KW</td>         <td>COLORE</td>         <td>KM</td>         <td>OPTIONALS</td>     </tr>     <? include("config.inc.php"); include("connect.inc.php"); $query   =   "SELECT   id, marca, modello, prezzo, anno, kw, colore, km, optional   FROM   usato   ORDER   BY   id "; $result   =   mysql_query($query,   $db); $dati = array(); while($row = mysql_fetch_assoc($result)) {   print '<tr>                 <td>'.htmlentities($row['marca']).'</td>                 <td>'.htmlentities($row['modello']).'</td>                 <td>'.htmlentities($row['prezzo']).'</td>                 <td>'.htmlentities($row['anno']).'</td>                 <td>'.htmlentities($row['kw']).'</td>                 <td>'.htmlentities($row['colore']).'</td>                 <td>'.htmlentities($row['km']).'</td>                 <td>'.htmlentities($row['optional']).'</td>            </tr>'; }

mysql_close($db); ?> </table> </body>

</html>

Ma vorrei provare anche nell'altro modo

risposto 10 anni fa
blackeyes
X 0 X

ok, in quel modo funziona ma la fetch della query e la creazione della pagina avvengono contemporaneamente, impedendoti di gestire le 2 operazioni in momenti (e file) separati.

Per ottenere questo risultato devi fare 2 cose:

1) memorizzare in un array tutti i dati estratti dalla query. Questa operazione la fai con il ciclo while che effettua la fetch dei risultati.

2) creare la tabella html, inserendo i dati dell'array precedentemente creato. E' ovvio che per creare le varie righe della tabella devi fare un nuovo ciclo in modo da iterare sui dati dell'array.

Studiati i due passaggi singolarmente. E' inutile che provi a realizzare tutto il sistema se i singoli passaggi non ti sono chiari.

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

<?

include("config.inc.php");

include("connect.inc.php");

$query   =   "SELECT   id, marca, modello, prezzo, anno, kw, colore, km, optional   FROM   usato   ORDER   BY   id ";

$result   =   mysql_query($query,   $db);

cosi' creo l'array con il ciclo while che effettua la fetch dei risultati.giusto???

$dati = array();

while($tmp = mysql_fetch_assoc($result))

{

   $tmp['marca'] = htmlentities($tmp['marca']);

   $tmp['modello'] = htmlentities($tmp['modello']);

   $tmp['prezzo'] = htmlentities($tmp['prezzo']);

   $tmp['anno'] = htmlentities($tmp['anno']);

   $tmp['kw'] = htmlentities($tmp['kw']);

   $tmp['colore'] = htmlentities($tmp['colore']);

   $tmp['km'] = htmlentities($tmp['km']);

   $tmp['optional'] = htmlentities($tmp['optional']);

$dati[] = $tmp;

}

include("tabella.htm");

mysql_close($db);

?>

per la tabella come faccio a  fare un nuovo ciclo in modo da iterare sui dati dell'array?

risposto 10 anni fa
blackeyes
modificato 10 anni fa
X 0 X
per la tabella come faccio a  fare un nuovo ciclo in modo da iterare sui dati dell'array?

se non lo sai fare allora forse stai facendo un passo più lungo della gamba...

iterare sugli elementi di un array dovrebbe essere una cosa ormai acquisita per chi si cimenta nel realizzare script che si interfacciano con un db. Comunque guarda qui:

http://www.phpnews.it/corsi/corso-php-base/cicli-e-iterazioni-for-foreach/

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

forse hai ragione cmq grazie per il link

risposto 10 anni fa
blackeyes
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda