Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [PHP] Impostare un array come filtro di una query.

    Ciao a tutti,

    ho questo codice:

    Codice PHP:
    $seleziona mysql_query("SELECT * FROM tabella WHERE tipo_movimento = 'scarico'");
    $riga_select mysql_fetch_array($seleziona);
    $array_esploso explode(",",$riga_select['numero']);
    print_r($array_esploso); 
    che mi stampa correttamente la variabile $array_esploso restituendomi una serie di numeri:

    es: 1 133 258 etc

    vorrei usare questa variabile come un filtro di una query in questo modo ma non ci riesco:

    Codice PHP:
    $seleziona_carichi mysql_query("SELECT * FROM tabella WHERE riferimento = '$array_esploso'");//riga 13
    while($riga_select_carico mysql_fetch_array($seleziona_carichi))
    {echo 
    "<p>NUMERO = ".$riga_select_carico['numero']." PROGRESSIVO = ".$riga_select_carico['progressivo']."</p>";} 
    mi potete aiutare? perchè non funziona?

    mi restituisce questo errore:

    Notice: Array to string conversion in C:\xampp\htdocs\sito\pagine\new3.php on line 13

    che cosa sbaglio?

    Grazie per l'aiuto.

  2. #2
    Perchè quello che tu chiami array esploso in realtà è un array!

    P.S.
    I campi dei DB contenenti più valori separati da un delimitatore non si possono proprio vedere! E' per questo che poi avete tutti questi problemi. Iniziate con lo strutturare un DB correttamente.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Perchè quello che tu chiami array esploso in realtà è un array!

    P.S.
    I campi dei DB contenenti più valori separati da un delimitatore non si possono proprio vedere! E' per questo che poi avete tutti questi problemi. Iniziate con lo strutturare un DB correttamente.
    ti spiego:
    il campo numero della prima query contiene esclusivamente un numero, progressivo, univoco, quindi 1 2 3 4 5 6 .....

    il record della riga 5 per esempio ha il campo numero = 5 e un altro campo numero2 = 1,3,4

    con la seconda query voglio stampare a video una cosa del genere:
    riga -> numero = 5
    riga --> numero = 1
    riga --> numero = 3
    riga --> numero = 4

    è per questo che ho esploso l'array.

    non so se mi sono spiegato

  4. #4
    Quote Originariamente inviata da satifal Visualizza il messaggio
    Perchè quello che tu chiami array esploso in realtà è un array!

    P.S.
    I campi dei DB contenenti più valori separati da un delimitatore non si possono proprio vedere! E' per questo che poi avete tutti questi problemi. Iniziate con lo strutturare un DB correttamente.
    ciao satifal,

    riprendo questa discussione perchè non ho risolto ma ho solo accantonato il problema.

    il campo riferimento che contiene i valori separati da un delimitatore è un campo di testo che mi deve necessariamente contenere quei dati, scritti in quel modo. è un promemoria in pratica.

    i dati che ci sono dentro però (es. 1, 8, 9) sono l'id di un record.

    ti faccio un esempio:

    tabella movimenti
    id --- campo -------- quantita --- riferimento
    1 materiale1 100
    2 materiale2 200
    4 materiale1 100
    5 materiale1 150 ------ 1,4
    6 materiale2 80 2

    il record 5 è uno scarico del materiale1 e i riferimenti a cui ho sottratto i valori sono appunto i record 1 e 4.
    idem per il record 5.

    io ho bisogno di una queri che mi restituisca i record in questo modo:

    id --- campo --------- quantita
    5 materiale1 150
    1 materiale1 100
    4 materiale1 100

    e cioè fammi vedere solo gli scarichi con gli id contenuti nell'array riferimento del record 5.

    spero di essermi spiegato.

  5. #5
    ho risolto, appena ho tempo vi posto come ho fatto, in modo da correggermi se ho usato un metodo sbagliato!!!!

  6. #6
    Quoto in gran parte quello che dice satifal circa i campi dei DB contenenti più valori separati da un delimitatore.
    In questi casi (se proprio è necessario) si dovrebbe tuttalpiù convertire l'array in stringa con serialize() così da poter riaver l'array dopo il SELECT con unserialize().

    Volendo chiudere un occhio sulla suddetta questione credo che la tua esigenza sia formulare una query con la clausola WHERE IN e quell'array con crei con explode() lo devi ri-convertire in una stringa con implode() separando gli id con la virgola.

    Per intenderci:
    Codice PHP:
    $sql "SELECT *  FROM table WHERE id IN (" implode(",",$array) . ")"
    Ultima modifica di oly1982; 17-05-2014 a 15:24

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.