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

    selezione per piu criteri da singola colonna

    scusate il titolo, cerco di spiegare il mio problema:

    ho una colonna dove inserisco degli id numerici divisi da virgola. ogni id è una categoria.

    vorrei chidere come potrei costruire una query, per andare a selezionare gli articoli che corrispondono a una singola categoria:

    non credo che una normale SELECT ...... WHERE cat = .... sia sufficiente giusto?

    chi mi illumina ??

    grazie 1000.

  2. #2
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    110
    Allora. Prima fai una query come quella che hai scritto ma senza la limitazione della colonna tab, per la quale non puoi filtrare direttamente da query.

    Codice PHP:
    $sql "SELECT ......... FROM ......... ORDER BY .......... LIMIT 30" // ti consiglio di mettere un limite onde evitare di andare a recuperare l'intera tabella ad ogni query, al massimo puoi mettere su qualche script di paginazione

    $result mysql_query($sql);

    while (
    $row mysql_fetch_array($result))
    {
    $cat $row['cat'];
    $cat explode(','$cat);

    if (
    $cat[2]) //se $cat[2] è diverso da 0 vuol dire che l'articolo appartiene a quella categoria, ovviamente se hai impostato l'appartenenza ad ogni categoria con un 0 o un 1
    {
    //visualizza titolo o altra roba
    echo $row['titolo'];
    }


    Do per scontato che tu conosca la funzione explode, ovviamente.

  3. #3
    ok, capito.

    provo e ti dico. grazie.

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2009
    Messaggi
    110
    Se hai impostato le categorie in tale maniera:

    2,4,5,1

    Ovvero:

    1 = show televisivo
    2 = generale
    4 = blabla
    5 = spazzatura


    Allora puoi gestire la cosa direttamente da query con un semplice LIKE.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Fai attenzione che con like rischi di ottenere record non desiderati.

    Ad esempio un like "%1%" ti restituirebbe 1,12,21,11 e così via.

    Usa find_in_set()

    select * from tabella where find_in_set(1,nome_campo)

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.