Salve a tutti!
Ho un problema col passaggio di una variabile di una query da form.
In pratica ho nella stessa pagina
- la query con relativa soluzione stampata
- il form (il bottone) che mi deve permettere l’esportazione di tale tabella tramite csv
- lo script richiamato alla digitazione del bottone del form
Il passaggio della variabile $result non funziona; ho effettuato la stampa di $result e viene stampato “Resource”, quindi logicamente non funziona nemmeno la creazione del csv.
Come posso effettuare in modo corretto questo passaggio, sempre se è possibile?
In alternativa ho anche provato a passare l’array contente i valori del risultato della query (quindi $row) ma nemmeno in questo caso funziona.
Qualcuno che mi può dare un consiglio?
Grazie mille.
Ho un problema col passaggio di una variabile di una query da form.
In pratica ho nella stessa pagina
- la query con relativa soluzione stampata
- il form (il bottone) che mi deve permettere l’esportazione di tale tabella tramite csv
- lo script richiamato alla digitazione del bottone del form
PHP:
// query
$query = "SELECT id, nome FROM table;";
$result = mysql_query($query, $con);
while($row = mysql_fetch_array($result))
{
echo "<br>".$row[0]." ".$row[1];
}
HTML:
<!-- Form di estrazione del csv -->
<form action="" method="get">
<input type="hidden" name="row" value=<?php echo $result; ?> >
<button type="submit" id="pulsante" name="esporta_csv" value="invia">Esporta CSV</button>
</form>
PHP:
// Nel momento della digitazione del bottone ‘esporta csv’ viene eseguito questo script
if(isset($_POST['esporta_csv']))
{
$row = $_POST['result']; // recupero la variabile hidden
if(mysql_num_rows($result)>0)
{
$csv = "";
$row = mysql_fetch_assoc($result);
$delim = "";
//recupero i nomi dei campi che occuperanno la prima riga del csv
foreach($row as $k => $v)
{
$csv .= $delim.'"'.str_replace('"', '""', $k).'"';
$delim= ";";
}
$csv .= "\n";
//recupero i valori dei campi
while($row = mysql_fetch_assoc($result))
{
$delim = "";
foreach($row as $v)
{
$csv .= $delim.'"'.str_replace('"', '""', $v).'"';
$delim = ";";
}
$csv .= "\n";
}
header("Content-type: text/csv");
header("Content-Disposition: attachment; filename=".date("d-m-Y").".csv");
echo $csv;
}
else
{
echo "<br>Nessun record presente";
}
}
Il passaggio della variabile $result non funziona; ho effettuato la stampa di $result e viene stampato “Resource”, quindi logicamente non funziona nemmeno la creazione del csv.
Come posso effettuare in modo corretto questo passaggio, sempre se è possibile?
In alternativa ho anche provato a passare l’array contente i valori del risultato della query (quindi $row) ma nemmeno in questo caso funziona.
Qualcuno che mi può dare un consiglio?
Grazie mille.
Ultima modifica di un moderatore: