Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 27

Discussione: select from...where?

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24

    select from...where?

    Buona sera a tutti, mi scuso in anticipo se vi scomodo per qualcosa di scontato, ma sono una neofita e non so davvero più dove sbattere la testa , comincio a sospettare che sia impossibile realizzare la mia idea...

    Ho creato un piccolo database e, tramite un form di ricerca su tre variabili ($prezzi, $stile, $zona), vorrei selezionare e restituire i risultati interessanti. Il codice che sono riuscita a tirare fuori per la select è questo:

    $sql_all = "SELECT nome, indirizzo, tel FROM abbigliamento WHERE zona = '" . $zona . "' and stile = '" . $stile . "' and prezzi = '" . $prezzi ."'";

    $ris_all = mysql_query($sql_all) or die ("

    RICERCA FALLITA!
    RIPROVA
    </P>");

    echo "

    Ecco i negozi che rispondono ai requisiti che cercavi:
    ";
    while ($riga_neg = mysql_fetch_array($ris_all))
    {
    echo "

    " . $riga_neg["nome"] . "</p>";

    echo "

    " . $riga_neg["indirizzo"] . " </p>";

    echo "

    Tel:" . $riga_neg["tel"] . "</p>";
    }
    mysql_close();

    ?>

    Il discorso funziona bene, ma nasce un dilemma:master:: se volessi dare la possibilità di ignorare una delle variabili ed effettuare ad esempio una ricerca solo per zona e prezzi (si parla di negozi..), lasciando bianco uno dei tre campi (menù a tendina), come si fa? con il mio codice ovviamente non si ottiene nessun risultato perchè non tutte le clausole where della query sono soddisfatte...
    Qualcuno ha voglia di aiutarmi? grazie...

  2. #2
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    $sql_all = "SELECT nome, indirizzo, tel FROM abbigliamento WHERE 1=1";
    if( $zona ) $sql_all .= " AND zona = '" . $zona . "'";
    if( $stile ) $sql_all .= " AND stile = '" . $stile . "'";
    if( $prezzi ) $sql_all .= " AND prezzi = '" . $prezzi . "'";

  3. #3
    costruisci la query a pezzetti:
    mmmm m'è partito il msg (sto cavolo di firefox...)
    dA .. foto di viaggio
    L'esperienza è il tipo di insegnante più difficile.
    Prima ti fa l'esame, e poi ti spiega la lezione.

  4. #4
    Fai qualcosa del tipo:
    codice:
    $whereClause = " WHERE 1=1"
    
    if($_POST['zona']) $whereClause .= " AND zona='" . $_POST['zona'] . "'";
    
    if($_POST['stile']) $whereClause .= " AND stile='" . $_POST['stile'] . "'";
    
    if($_POST['prezzi']) $whereClause .= " AND prezzi='" . $_POST['prezzi'] . "'";

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    Ragazzi perdonatemi ma sono sempre al punto di partenza... ho provato la soluzione di Chris ma più che altro sto friggendo per capire cosa significhi e non ho risolto il problema...

  6. #6
    Originariamente inviato da AinW
    Ragazzi perdonatemi ma sono sempre al punto di partenza... ho provato la soluzione di Chris ma più che altro sto friggendo per capire cosa significhi e non ho risolto il problema...
    Significa:
    "WHERE 1=1" => condizione che è sempre verificata, quindi in sostanza non fa nulla.

    if ($zona) $sql .= " AND zona='" . $zona . "'" => se la variabile $zona ha un valore la inserisce nella clausola WHERE, altrimenti NO.

    La stessa cosa accade per le altre 2 variabili.

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    Grazie mille kylnas1, sei chiarissimo...questa è un'illuminazione che non si era ancora accesa scrivere if($variabile) è come dire "se la $variabile è vera"? adesso provo a mettere in prratica, ma in questi casi isset non serve a niente? mi sembrava interessante, ma se non me lo avete nominato...

    Intanto, se qualcuno ha proprio tempo da perdere e passa di qui, mi è successa un'altra cosa: ho impostato, in una tabella phpMyAdmin, una chiave int autoincrement, ma se cancello un record e poi ne inserisco un altro il valore della chiave non tiene conto della precedente cancellazione e praticamente salta un numero :master:

    grazie...

  8. #8
    Utente di HTML.it L'avatar di chris
    Registrato dal
    Sep 1999
    Messaggi
    1,568
    leggiti una guida base da http://freephp.html.it/

    è giusto che salti il numero e non c'è alcun problema strutturale in questo.

  9. #9
    Utente di HTML.it L'avatar di luca200
    Registrato dal
    Apr 2002
    Messaggi
    4,120
    Originariamente inviato da chris
    leggiti una guida base
    tipo questa

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    24
    Ok ragazzi, ditemi pure che sto rompendo le palle e avete cose più interessanti di cui occuparvi, ma se chiedo a voi è perchè le varie guide non mi hanno aiutato, non vi scomodo se non per cose che non riesco a risolvere in altro modo.
    Capisco che non ci sono errori strutturali in questo comportamento, ma non so se sia giusto lasciarlo fare così e cmq non ho trovato nessun tool che faccia riferimento a questo aspetto. Pensavo di gestirlo assegnando una funzione al campo ID ma non ho trovato niente ne in italiano ne in inglese che mi spiaghi i significati di queste funzioni. Se qualcuno sa aiutarmi in due parole grazie, altrimenti prima o poi risolverò da sola... scusate il disturbo...

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.