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

    Problema con clausola WHERE

    Buonasera,
    un piccolo problema sulla SELECT con la clausola WHERE.
    Un utente nella pagina form.html ha la possibilità di scegliere voci di due select:

    <select name="camere">...</select>
    <select name="zona">...</select>

    Almeno una la sceglie ma puo lasciare vuota l'altra.

    Io ottengo le sue variabili nella pagina select.php, ma se qui io uso:

    SELECT * FROM vendite WHERE camere = '$camere' AND zona = '$zona'
    ottengo i record in cui entrambe sono vere.
    Ma se una delle due l'utente non la sceglie ottengo errore poiche risulta vuota. Come aggiro il problema?

    Scusatemi...
    grazie!
    *** You shouldn't compare yourself to the best others can do but to the best you can do ***

  2. #2
    Controlla le due variabili se sono vuote, se lo sono allora dai loro un valore "predefinito".

    Es:
    codice:
    $var1 = $_POST['var1'];
    if (empty($var1)) {
        $var1 = 'ciccio';
    }

  3. #3
    Quote Originariamente inviata da fdisotto Visualizza il messaggio
    Controlla le due variabili se sono vuote, se lo sono allora dai loro un valore "predefinito".

    Es:
    codice:
    $var1 = $_POST['var1'];
    if (empty($var1)) {
        $var1 = 'ciccio';
    }
    Grz per la velocita di risposta. Ma non so se va bene, nel senso che, per esempio, la colonna "zone" e' un campo testuale. Quindi che valore posso dargli affinche posso estrarre tutti i record?
    *** You shouldn't compare yourself to the best others can do but to the best you can do ***

  4. #4
    Se non hai un valore predefinito allora puoi costruirti la query in base ai dati, faccio un esempio
    codice:
    $str = '';
    if (!empty($zona)) {
         $str.= " WHERE zona='$zone'";
    }
    if (!empty($camere)) {
        if (empty($str)) {
            $str.= " WHERE camere='$camere'";
        } else {
            $str.= " AND camere='$camere'";
        }
    }
    
    $query = "SELECT * FROM tabella $str";
    È bruttissimo, ma penso dovrebbe fare al caso tuo.

  5. #5
    Quote Originariamente inviata da fdisotto Visualizza il messaggio
    Se non hai un valore predefinito allora puoi costruirti la query in base ai dati, faccio un esempio
    codice:
    $str = '';
    if (!empty($zona)) {
         $str.= " WHERE zona='$zone'";
    }
    if (!empty($camere)) {
        if (empty($str)) {
            $str.= " WHERE camere='$camere'";
        } else {
            $str.= " AND camere='$camere'";
        }
    }
    
    $query = "SELECT * FROM tabella $str";
    È bruttissimo, ma penso dovrebbe fare al caso tuo.
    Allora, l'idea sarebbe ok ti ringrazio per l'indicazione...
    Il problema e' che sono 4 le scelte dell'utente, io ne avevo indicate due solo per comodita.
    TI allego la tabella mysql...
    I campi <select> che l'utente può scegliere sono camere, zone, tipologia, città
    Immagini allegate Immagini allegate
    Ultima modifica di chef; 14-07-2014 a 21:47 Motivo: Ho dimenticato l'allegato
    *** You shouldn't compare yourself to the best others can do but to the best you can do ***

  6. #6
    Puoi continuare a fare con gli if (molto brutta come cosa) come ti ho fatto vedere, tanto saranno tutte identiche le condizioni, nè una virgola di più nè una virgola di meno.

    Prova e fammi sapere, altrimenti sistemiamo diversamente.

  7. #7
    Quote Originariamente inviata da fdisotto Visualizza il messaggio
    Puoi continuare a fare con gli if (molto brutta come cosa) come ti ho fatto vedere, tanto saranno tutte identiche le condizioni, nè una virgola di più nè una virgola di meno.

    Prova e fammi sapere, altrimenti sistemiamo diversamente.
    Con 4 variabili ci sono 4*3*2 combinazioni... cioe' 24...

    Perche un utente può scegliere solo 'camere', solo 'tipologia', solo 'zone', solo 'citta', o due fra queste o tre fra queste o tutte e quattro... la vedo dura
    *** You shouldn't compare yourself to the best others can do but to the best you can do ***

  8. #8
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    L'array è il tuo amico.

    Codice PHP:
    <?php 

    $zona 
    "uii";
    $caio "00003";

    $arrClausole = array();
    if (!empty(
    $zona)) {
     
    $arrClausole[] = " zona = '$zona' ";
    }
    if (!empty(
    $camera)) {
     
    $arrClausole[] = " camera = '$camera' ";
    }
    if (!empty(
    $pippo)) {
     
    $arrClausole[] = " pippo = '$pippo' ";
    }
    if (!empty(
    $caio)) {
     
    $arrClausole[] = " caio = '$caio' ";
    }
     
    $clausola implode(' and '$arrClausole);
     print 
    $clausola;
     
    ?>
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  9. #9
    Quote Originariamente inviata da badaze Visualizza il messaggio
    L'array è il tuo amico.

    Codice PHP:
    <?php 

    $zona 
    "uii";
    $caio "00003";

    $arrClausole = array();
    if (!empty(
    $zona)) {
     
    $arrClausole[] = " zona = '$zona' ";
    }
    if (!empty(
    $camera)) {
     
    $arrClausole[] = " camera = '$camera' ";
    }
    if (!empty(
    $pippo)) {
     
    $arrClausole[] = " pippo = '$pippo' ";
    }
    if (!empty(
    $caio)) {
     
    $arrClausole[] = " caio = '$caio' ";
    }
     
    $clausola implode(' and '$arrClausole);
     print 
    $clausola;
     
    ?>
    Grazie a tutti faccio alcune prove...
    *** You shouldn't compare yourself to the best others can do but to the best you can do ***

  10. #10
    Perfetto funziona grazie mille !!

    *** You shouldn't compare yourself to the best others can do but to the best you can do ***

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.