estrarre il ciclo while in una sessione e spedire l'array in un db

amhal

Utente Attivo
17 Feb 2011
86
1
8
Ciao a tutti ho questo problema, creo una array che contiene i dati estratti in una pagina A con un ciclo while, spedisco l'array in una pagina B e cerco di inserire i dati in un db

posto il codice di quello che faccio.

questa è la pagina A che estrae i dati che devo mandare alla pagina B
PHP:
$query = "select * from carrello where id= '$var_id' ";
$result = mysql_query($query,$db) or die (mysql_error($db));

while($row = mysql_fetch_assoc($result)){
extract($row);	

$_SESSION['carrello'][] = array( 
								 
               'nome'=> $nome, 
	 'data' => $data, 
	 'ora' => $ora,
	 'cod'=> $cod );

}
questo è il codice della pagina B
PHP:
<?php
session_start();
@require('libreria/db_config.inc');	

$dati = $_SESSION['carrello'];

foreach($dati as $valori=>$key){
	
	
	foreach($key as $val=>$ke){
	$query = "insert ignore into tab($val) values ('$ke')";
	mysql_query($query,$db) or die(mysql_error($db));
	}
	
}
se faccio ciò inserisce i dati ma anche tanti campi vuoti, praticamente per ogni record pieno spedito ne inserisce uno vuoto per quante variabili $_SESSION['carrello'][] contiene..
dove sbaglio??
grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
146
63
PR
www.borgo-italia.it
ciao
se non ho capito male quello che vuoi fare
guarda qui come ho simulato
PHP:
<?php
session_start();
$_SESSION['carrello'][0] = array(                                
		'nome'=> 'pinco', 
		'data' => '06/09/2013', 
		'ora' => '15:30',
		'cod'=> '1111');
$_SESSION['carrello'][1] = array(                                
		'nome'=> 'pallo', 
		'data' => '09/06/2000', 
		'ora' => '24:15',
		'cod'=> '2222');
$_SESSION['carrello'][2] = array(                                
		'nome'=> 'sempronio', 
		'data' => '06/09/3000', 
		'ora' => '13:13',
		'cod'=> '3333');
foreach($_SESSION['carrello'] as $ch => $va){
	$v=array();
	foreach($va as $campo => $valore){
		$v[]="'".$valore."'";
	}
	$values=implode(",",$v);
	
	$query="INSERT INTO tab(nome,data,ora,cod) VALUES($values)";
	echo "$query<br />";
}
?>
e questo è l'output
INSERT INTO tab(nome,data,ora,cod) VALUES('pinco','06/09/2013','15:30','1111')
INSERT INTO tab(nome,data,ora,cod) VALUES('pallo','09/06/2000','24:15','2222')
INSERT INTO tab(nome,data,ora,cod) VALUES('sempronio','06/09/3000','13:13','3333')
poi, secondo me, modifica anche la parte della SELECT
PHP:
<?php
//....
$query = "select * from carrello where id= '$var_id' ";
$result = mysql_query($query,$db) or die (mysql_error($db));
while($row = mysql_fetch_assoc($result)){  
	$_SESSION['carrello'][] = array(                                
		'nome'=> $row['nome'], 
		'data' => $row['data'], 
		'ora' => $row['ora'],
		'cod'=> $row['cod'] );
}
//....
?>
e un consiglio: abbandona le istruzioni mysql sono deprecate e tra un po' non più funzionanti, passa a mysqli o alla classe PDO
 

amhal

Utente Attivo
17 Feb 2011
86
1
8
grazie tante per la soluzione.. seguirò il consiglio per mysqli :fonzie: