Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234

    Cercare valore tra un array

    Ciao a tutti,
    recupero da un input select un valore src_eve

    $src_eve = $_POST['src_eve'];

    all'onChange dell'input eseguo il Submit e cerco con una query all'interno della mia tabella news tra i campi relate se trovo il valore $src_eve selezionato dall'input..

    Codice PHP:
    if ($src_eve <> "") :
        
    $query "SELECT * FROM events";
        
    $res mysql_query($query);
        
    $row mysql_fetch_object($res);                       
        while (
    $row mysql_fetch_object($res)) :
            
    $queg "SELECT * FROM news where relate = \"$src_eve\" ORDER BY datan DESC";
            if  (
    $src_eve == $row->idev) :
                print 
    "

    Elenco News relative all'Evento: 
    $row->titev</p>";
            endif;
        endwhile;
    endif; 
    il problema è che nel campo relate ho un array di valori e se quello cercato non si trova al primo posto non lo trovo..

    come posso fare?
    Grazie

  2. #2
    Utente di HTML.it L'avatar di Grino
    Registrato dal
    Oct 2004
    Messaggi
    739
    Oh! Santo cielo! Ma a che secolo risale questa sintassi PHP? Non avevo mai incontrato un appassionato della forma alternativa per le strutture di controllo.

    Comunque cosa hai utilizzato nel DB per parlare di array? Il tipo Set?

    Siamo sempre troppo gelosi delle nostre grandi piccole opere! - Grino inedito.
    Lavori e Lavoretti

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    up
    si lo so che è dell'età della pietra..ma sto modificando del codice già bello che finito..

    Ho provato in questo modo ma al contrario funziona solo se cerco l'ultimo valore dell'array..


    Codice PHP:
    $queg "SELECT * FROM news where $src_eve IN (relate) ORDER BY datan DESC"
    Come posso fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    Nessuno riesce ad aiutarmi?

    Ho trovato l'equivalente in sql
    http://sqlfiddle.com/#!2/4c757/2

    come fare la query in php?

  5. #5
    Originariamente inviato da Protooler
    Nessuno riesce ad aiutarmi?

    Ho trovato l'equivalente in sql
    http://sqlfiddle.com/#!2/4c757/2

    come fare la query in php?
    Non noto alcun array nell'esempio da te postato. Cosa intendi per "nel campo relate ho un array di valori" ?!?!
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    ciao satifal
    grazie per l'intervento..

    nella tabella events ho un campo di nome relate
    dove al suo interno salvo degli id separati da ,

    es: 1020,1065,1088

    nella query di ricerca vorrei che la variabile $src_eve passata da un input select venga cercata all'interno del campo relate

    ho provato in più modi:

    $queg = "SELECT * FROM news where relate = \"$src_eve\" ORDER BY datan DESC";
    questo funziona solo nel caso in cui nel mio campo ho dei valori unici e non separati da ,

    $queg = "SELECT * FROM news where $src_eve IN (relate) ORDER BY datan DESC";
    in questo funziona solo se $src_eve si trova come primo valore dell'array
    se $src_eve fosse 1020 nel mio campo con questi valori 1020,1065,1088 lo trova perchè primo

    $queg = "SELECT * FROM news WHERE FIND_IN_SET('$src_eve', relate) ORDER BY datan DESC";
    anche qua se $src_eve fosse 1020 nel mio campo con questi valori 1020,1065,1088 lo trova perchè primo


  7. #7
    Il tuo approccio è sbagliato alla base. E' prassi assolutamente scorretta inserire in questo modo dei dati all'interno di un campo del DB. Inoltre quello che tu chiami array è una semplice stringa delimitata da virgole, è ovvio che non puoi fare una ricerca al suo interno.
    La prima cosa che mi viene in mente è quella di recuperare il campo relate mediante apposita query e successivamente, a codice, utilizzare la funzione explode() su tale campo:

    Codice PHP:
    // supponiamo che $relate contenga il valore estratto dal DB
    $relates explode(","$relate);
    if (
    in_array($src_eve$relates)) {
        
    // VALORE PRESENTE IN ARRAY
    } else {
        
    // VALORE NON PRESENTE IN ARRAY

    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    234
    ho capito..
    quindi facendo un passo indietro come posso associare due tabelle?

    nella tabella events il campo relate metteva in relazione gli id di un'altra tabella
    1020,1065,1088 ecc..

    Perchè è sbagliato inserirli in questo modo? Perchè poi non riesci a fare ricerche proprio come nel mio caso!?

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.