Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Array nel database

  1. #1
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136

    Array nel database

    Ciao,
    io inserisco nel db un array con serialize:
    Codice PHP:
    $array = Array ("item" => array ('01''02''03''04''05'),"qty" => array ("uno","due","uno","uno","tre"));

    $serialize_array serialize($array);

            
    $query1 "INSERT INTO prova SET id_lista = '$serialize_array'";
            
    $qry_result1 mysql_query($query1) or die(mysql_error()); 
    Poi voglio estrarlo:

    Codice PHP:
    $query "SELECT * FROM prova WHERE id = 1 ORDER by id ASC";
    $qry_result mysql_query($query) or die(mysql_error());

    while (
    $row mysql_fetch_row($qry_result))
    {
        
    $unserialized_array unserialize($row['id_lista']);

    //////////////////////////////////////////////////////////////
    che devo mettere quiper estrapolare i dati dall'array?
    pensavo qualcosa tipo:
        foreach ($unserialized_array as $subarray){
            echo $subarray['
    item'];
            echo $subarray['
    qty'];
        }
    ma mi da errore ( Invalid argument supplied for foreach() )
    //////////////////////////////////////////////////////////////

    Che devo mettere per per estrapolare i dati dall'array?


    Grazie e ciao

  2. #2
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    occhio hai un array dentro un array, devi quindi applicare foreach 2 volte, ma prova a stamparti l'array per vedere cosa ci hai dentro:

    Codice PHP:
    echo "<pre>"print_r($unserialized_array); echo "</pre>"

  3. #3
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    Ciao!
    echo "<pre>"; print_r($unserialized_array); echo "</pre>";
    l'ho inserito al posto di:
    foreach ($unserialized_array as $subarray){
    echo $subarray['item'];
    echo $subarray['qty'];
    }
    non da errore ma non stampa niente.

    In realtà volevo inserire nel db un array multidimensionale con le voci "item" e "qty"...

  4. #4
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    per la cronaca:
    nel campo del db "id_lista c'è questo
    a:2:{s:4:"item";a:5:{i:0;s:2:"01";i:1;s:2:"02";i:2 ;s:2:"03";i:3;s:2:"04";i:4;s:2:"05";}s:3:"qty";a:5 :{i:0;s:3:"uno";i:1;s:3:"due";i:2;s:3:"uno";i:3;s: 3:"uno";i:4;s:3:"tre";}}

  5. #5
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    bene allora significa che l'array che hai estratto dal DB è vuoto. Nel campo del DB ho appena visto che i dati sono depositati in modo corretto, controlla la query della select, rispettivamente controlla il contenuto di $row:
    Codice PHP:
    echo "<pre>"print_r($row); echo "</pre>"

  6. #6
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    Avevi ragione
    ho cambiato
    mysql_fetch_row($qry_result)
    in
    mysql_fetch_assoc($qry_result)
    e ora stampa:
    Codice PHP:
    Array
    (
        [
    item] => Array
            (
                [
    0] => 01
                
    [1] => 02
                
    [2] => 03
                
    [3] => 04
                
    [4] => 05
            
    )

        [
    qty] => Array
            (
                [
    0] => uno
                
    [1] => due
                
    [2] => uno
                
    [3] => uno
                
    [4] => tre
            
    )


    ora che faccio?

  7. #7
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    Così funziona:
    foreach ($unserialized_array as $subarray){
    echo "item: ".$subarray[0]."
    ";
    }

    grazie Jeppox!

    Se voglio snocciolarli tutti?
    tipo:
    01
    02
    03
    ecc...

  8. #8
    Utente di HTML.it L'avatar di jeppox
    Registrato dal
    Mar 2007
    Messaggi
    436
    se li vuoi snocciolare tutti, come dici tu, devi ora applicare un doppio foreach:

    Codice PHP:
    foreach($row as $subarray)
    {
        foreach(
    $subarray as $key => $value)
        {
            echo 
    $key." => ".$value."
    "
    ;
        }

    in $value ci trovi il valore che infine vuoi avere per ogni chiave.

  9. #9
    Utente di HTML.it L'avatar di fostex
    Registrato dal
    Mar 2000
    Messaggi
    136
    perfetto!

    Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.