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

Discussione in 'PHP' iniziata da amhal, 11 Settembre 2013.

  1. amhal

    amhal Utente Attivo

    Registrato:
    17 Febbraio 2011
    Messaggi:
    86
    Mi Piace Ricevuti:
    1
    Punteggio:
    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
     
  2. borgo italia

    borgo italia Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    4 Febbraio 2008
    Messaggi:
    16.028
    Mi Piace Ricevuti:
    146
    Punteggio:
    63
    Sesso:
    Maschio
    Località:
    PR
    Home Page:
    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
    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
     
  3. amhal

    amhal Utente Attivo

    Registrato:
    17 Febbraio 2011
    Messaggi:
    86
    Mi Piace Ricevuti:
    1
    Punteggio:
    8
    grazie tante per la soluzione.. seguirò il consiglio per mysqli :fonzie:
     
Sto caricando...

Condividi questa Pagina