Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26

Discussione: errore foreach

  1. #1

    errore foreach

    include ("funzioni.php");
    test();


    $idregione = $_POST ['regione'];


    $prov = mysql_query ("select * from regioni where grp_id = '$idregione'") or die (mysql_error());
    while ($row = mysql_fetch_array ($prov))
    {

    $provincia = $row[provincia];





    foreach ($provincia AS $dettaglio) {

    echo $dettaglio;}



    }


    errore
    Warning: Invalid argument supplied for foreach() in c:\programmi\apache group\apache\htdocs\invent\elabora.php on line 22

    Warning: Invalid argument supplied for foreach() in c:\programmi\apache group\apache\htdocs\invent\elabora.php on line 22


  2. #2
    il primo argomento del foreach dev'essere un array, evidentemente $provincia non lo è. Anche perchè che io sappia non puoi memorizzare la struttura Array in un db a meno che tu non l'abbia serializzato, ma in questo caso devi unserializzarlo quando lo recuperi (vedi serialize e unserialize su php.net)










    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  3. #3
    $provincia...
    in echo mi stampa

    milanovaresecremonacomo

    praticamente devo "spezzare" i valori in $dettaglio

    basta unserialize la $var??



    $provincia = $row[provincia];

    $provincia= unserialize($provincia);

    foreach ($provincia AS $dettaglio) {

    echo $dettaglio;}


  4. #4
    se $provincia è così composto la vedo dura dividerli, perché non lo puoi fare secondo nessun parametro, se era almeno così: bergamo;brescia;como;lodi;milano potevi usare un explode e ; come separatore, ma così la vedo alquanto dura, se non impossibile...lo potresti fare con substr ma dovresti sapere sempre esattamente il numero di caratteri occupati da ogni singola provincia.

    Come li salvi nel db i valori? hai modo di modificarli?
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  5. #5
    guarda.. tutto sto ambaradam mi serve solo per testare l'ajax...
    i dati li ho inseriti "a mano" nel DB giusto solo per avere dei dati con cui "giocare"..
    comunque se mi dici come, posso metterci mano tranquillamente sul db

  6. #6
    cmq mi sembra strana la cosa...
    tieni presente che per ogni provincia corrisponde un record nel db...

    le provincie non sono inserite in un record solo...
    non basterebbe quindi scorrere il record ed attribbuirgli ad esso un -> $dettaglio ??

  7. #7
    dunque, visto che li inserisci tu a mano ti sconsiglio di usare la serializzazione, perchè dovresti inserire cose del tipo:
    codice:
    a:5:{i:0;s:7:"Bergamo";i:1;s:7:"Brescia";i:2;s:4:"Como";i:3;s:6:"Milano";i:4;s:4:"Lodi";}
    che è la forma "archiviabile" del valore. Poi dal lato codice ti basta fare $provincia=unserialize($row['provincia']); e hai il tuo bell'array.

    Invece puoi semplicemente dividere le province con un ; e poi nel codice:

    Codice PHP:
    $provincia=$row[provincia];

    $provincia=explode(",",$provincia);

    /**
    * non so se può servirti eliminare l'ultimo elemento dell'array,
    * nel caso il foreach generi un warning decommenta la riga sotto
    * array_pop($provincia);
    */

    foreach ($provincia AS $dettaglio) {
      echo 
    $dettaglio."
    \n"
    ;




    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  8. #8
    Originariamente inviato da ferrate
    cmq mi sembra strana la cosa...
    tieni presente che per ogni provincia corrisponde un record nel db...

    le provincie non sono inserite in un record solo...
    non basterebbe quindi scorrere il record ed attribbuirgli ad esso un -> $dettaglio ??
    scusa, ma prima mi hai detto che in $provincia ottieni milanovaresecremonacomo, quindi qual è la versione ufficiale? è così o per ognuna hai un record? :master:
    Talvolta anche una persona apparentemente inutile si rivela un abile samurai dalla forza di mille uomini, dimostrando di poter rinunciare alla vita e che il suo cuore si è completamente identificato con quello del suo padrone

  9. #9
    allora... come vedi faccio una select in base al grp_id...

    il db è strutturato così

    regione | grp_id | provincia
    lombardia | 1 | milano
    lombardia | 1 | varese
    veneto | 2 | verona

    perdonami se ho omesso involontariamente l'informazione
    ma ogni valore ha un record

  10. #10
    quando poi faccio echo
    ovviamente lui mi stampa tutto ciò che dentro i record trova in base al id

    devo poi soltanto
    associare ( e questo mi sembra lo faccia foreach )
    una chiave o valore al provincia...

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 © 2024 vBulletin Solutions, Inc. All rights reserved.