Problema con passaggio variabile da form

ferr

Nuovo Utente
17 Nov 2014
10
0
0
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
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:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
così a naso nel form usi il method="get" poi recuperi con $_POST
o metho="post" o recuperi con $_GET
poi
nel form vedo un campo hidden chiamato name="row" e, a parte quanto sopra cerchi di recuperarlo con $_POST['result'], se devi recuperarne il valore devi usare $_POST['row']
poi, sempre nel hidden, cerci di stampare il valore di $result ore se tale veriabile è quella che proviene da
PHP:
$result = mysql_query($query, $con);
$result è una variabile boeliana che a valore RESORCE se la query va a buon fine, FALSE se non riesce
 

ferr

Nuovo Utente
17 Nov 2014
10
0
0
si scusatemi, sono stati errori di battitura.... ma la mia domanda è:
è possibile passare la variabile $result in modo tale che poi nella creazione del csv effettui la funzione mysql_num_rows($result) ? Nel mio codice credo ci sia qualche errore di logica, perchè dove creo il file csv, $result è vuoto anche se stampato mi visualizza "Resource".
Oppure come passare il risultato della query che sta in $row ?
 

ferr

Nuovo Utente
17 Nov 2014
10
0
0
mi chiedo inoltre... $result è una variabile globale essendo creata all'inizio del codice php giusto? e se globale dovrebbe esistere in tutta la pagina php...perchè allora all'interno dell " if(isset($_POST['esporta_csv'])) {} " non esiste più?