Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Campi obbligatori in una Select

    Vediamo se rieco a farmi aiutare.
    Ho una tabella MySql che contiene dati di immobili vorrei creare una Query in PHP che mi estragga i dati partendo da una Form HTML dove è possibile inserire alcuni o tutti i campi della tabella.... Ho provato con :

    SELECT * from immobili WHERE campo1 = '$campo1' AND campo2 = '$campo2'
    AND campo3 = '$campo3' .. e così via !

    Ma se non compilo il campo2 nel Form HTML la Query non mi restituisce alcun record
    Ho provato ad usare invece del = il LIKE con il carattere percentuale prima e dpo il nome della variabile, ma anche così se non inserisco correttamente tutti i campi del form non ottengo nulla.

    Scendendo nel dettaglio vorrei che l'utente possa rintracciare un immobile inserendo il Comune o il Comune e la Via o i dati catastali, insomma che non sia costretto ad inserire tutti i dati prima.

    Mi rendo conto che il problema non sta nella query che deve funzionare per forza ma nel passaggio delle variabili alla query.

    HELP

  2. #2
    Utente di HTML.it L'avatar di bode
    Registrato dal
    Feb 2007
    Messaggi
    304
    Premetto che sono un neofita, ma se provi a scrivere OR invece che AND nella query, vedi un po' se funziona!!

  3. #3
    Purtroppo non funziona perchè alcuni campi devono essere per forza compilati esempio il Comune ed il tipo di catasto se urbano o terreni, quindi non si riesce a combinare gli AND con gli OR

  4. #4
    Beh... penso che dovresti fare un controllo delle variabili passate dalla form con il controllo isset(), quindi usare degli IF per compilare al volo la parte finale della query.

    Per capirci:

    Codice PHP:
    $campo1 $_GET['campo1'];
    $campo2 $_GET['campo2'];
    $campo3 $_GET['campo3'];

    $where_SQL "";

    if (isset(
    $campo1)) {
    $where_SQL .= "campo1 = '$campo1' AND "
    }

    if (isset(
    $campo2)) {
    $where_SQL .= "campo2 = '$campo2' AND "
    }

    if (isset(
    $campo3)) {
    $where_SQL .= "campo3 = '$campo3'  AND "
    }

    if (isset(
    $campo4)) {
    $where_SQL .= "campo4 = '$campo4' AND "
    }

    // togli l'ultimo AND
    $where_SQL substr($where_SQL, -14);

    // aggiungi la stringa così composta
    // a quella della query SQL

    $sql "SELECT * from immobili WHERE $where_SQL";

    // debug
    echo $sql
    Non l'ho provato, ma dovrebbe andare... ad ogni modo, ti ho messo anche una ECHO per vedere se la query è giusta.

    In ultimo, la scelta della condizione AND o OR non deve essere condizionata dal fatto che la query funzioni o meno, ma da quello cui serve la query stessa.
    Se c'è l'AND significa che per avere un risultato devono essere rispettate TUTTE le condizioni della query.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5
    Oppure invece di togliere l'ultimo AND, puoi aggiungere uno 0

    così la query finisce così:

    .... AND 0

  6. #6
    Grazie Alcio74 la soluzione da te proposta dovrebbe proprio funzionare, per la verità anch'io stavo pensando di strutturare la query in maniera dinamica, ma proverò come hai swgnalato tu.
    Grazie ancora.

  7. #7
    La sua soddisfazione è il nostro miglior premio!
    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  8. #8
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da mtx_maurizio
    Oppure invece di togliere l'ultimo AND, puoi aggiungere uno 0
    Così non uscirà mai niente...

  9. #9
    Giusto, ho sempre fatto così con l'OR e funziona, però in effetti con l'AND no

  10. #10
    Originariamente inviato da luca200
    Così non uscirà mai niente...
    E allora illuminami come posso risolvere il problema ?
    Aggiungo a maggiore chiarimento che nella query due campi sono obbligatori, mentre gli altri facoltativi, se li compili ottieni un maggior dettaglio non compilandoli espandi la richiesta.

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.