Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275

    motore di ricerca con più campi

    salve a tutti
    ho una pagina in cui ci sono diversi campi di scelta per cercare del personale
    questi campi sono lingua, specializzazione, età, stato... ne saranno in totale una decina
    per ora ho messo solo specializzazione e lingua
    i campi sono menu a discesa popolati con i dati del database e fin qui tutto ok
    ora, come dicevo ho campo1: specializzazione e campo2: lingua
    se li seleziono entrambi allora la query dà un risultato
    se invece seleziono o solo lingua o solo specializzazione, allora non ho alcun risultato
    la query è

    $getnomi = "select * from caratteristichepersonale,personale,conoscenza_ling ue where caratteristichepersonale.RCIDPersonale=personale.I DPersonale and personale.IDPersonale=conoscenza_lingue.id_persona le and Specializzazione='$qualifica' AND conoscenza_lingue.lingua='$lingua' ORDER BY CognomePersonale";

    come posso fare?
    grazie!

  2. #2
    Devi rendere la query dinamica in base ai parametri che hai a disposizione. Una cosa del tipo:

    Codice PHP:
    $getnomi "select * from caratteristichepersonale,personale,conoscenza_lingue where caratteristichepersonale.RCIDPersonale=personale.IDPersonale and personale.IDPersonale=conoscenza_lingue.id_personale";

    if (isset(
    $qualifica)) {
        
    $getnomi .= " and Specializzazione='$qualifica'";
    }

    if (isset(
    $lingua)) {
        
    $getnomi .= " and conoscenza_lingue.lingua='$lingua'";
    }

    $getnomi .= " ORDER BY CognomePersonale"
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    grazie satifal!
    ho modificato lo script così

    $getnomi = "select * from caratteristichepersonale,personale,conoscenza_ling ue where caratteristichepersonale.RCIDPersonale=personale.I DPersonale and personale.IDPersonale=conoscenza_lingue.id_persona le";

    if ($qualifica!="") {
    $getnomi .= " and Specializzazione='$qualifica'";
    }

    if ($lingua!="") {
    $getnomi .= " and conoscenza_lingue.lingua='$lingua'";
    }

    $getnomi .= " ORDER BY IDPersonale";

    perchè se selezionavo solo un campo (per esempio sceglievo solo la lingua senza la qualifica) non avevo alcun risultato
    ora ho tutti i risultati però alcuni sono doppi

    935
    1543
    2438
    2438
    2438
    2438
    2438
    2438
    2438
    2438
    2438
    2438
    2439
    2439

    da cosa può dipendere?
    grazie ancora

  4. #4
    Hai provato ad eseguire la query a manina da un client? Vedi cosa ti restituisce.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    ciao satifal,
    ho provato la query su phpmyadmin e ho sempre una sfilza di risultati
    e ho capito perchè
    il motivo è che ogni persona può avere più di una qualifica
    per esempio, questo id 2438 ha diverse qualifiche, di conseguenza, quando faccio la query, giustamente mi viene fuori il suo id ripetuto tante volte quante sono le sue qualifiche
    come faccio a fare in modo che il risultato sia "solo uno" per ogni id?
    grazie ancora!

  6. #6
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Nella tabella quindi la persona ti compare più volte?

  7. #7
    Ciao...se non ho capito male...prova a mettere un distinct dopo select.
    Codice PHP:
    $getnomi "SELECT DISTINCT .....(etc)"

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2001
    Messaggi
    275
    ho risolto con GROUP BY invece di ORDER BY
    grazie mille!

  9. #9
    Originariamente inviato da mystica
    ho risolto con GROUP BY invece di ORDER BY
    grazie mille!
    Bene. L'ORDER BY puoi comunque lasciarlo se hai bisogno di ordinare il resultset.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.