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

    Query Avanzata Sql Con Variabili Predefinite

    salve a tutti, sono un junior webmaster per passione e ho un problema con una variabile predefinita in una query sql avanzata ( scusate se uso un linguaggio non tecnico o comunque errato ), provo a esporvi il problema :

    ho un form di ricerca in un database mysql, questo il codice :

    <form action="search.php" method="get" name="form" id="form">
    <input name="contratto" type="radio" value="vendita" />
    <input name="contratto" type="radio" value="affitto" />
    <select name="tipologia" id="tipologia">
    <option value="">Tutte</option>
    <option value="altro">Altro </option>
    <option value="appartamento">Appartamento </option>
    <option value="casa indipendente">Casa indipendente </option>
    <option value="rustico / casale">Rustico / Casale </option>
    <option value="terreno edificabile">Terreno edificabile </option>
    <option value="villa">Villa </option>
    <option value="villetta a schiera">Villetta a schiera </option>
    </select>
    <input name="Submit" type="submit" value="Cerca" />
    </form>

    La pagina che visualizzerà i risultati si chiama "search.php" e avrà un recordset con una query sql avanzata :

    SELECT *
    FROM tabella
    WHERE (contratto = 'colname' AND tipologia = 'palname')

    Il nome delle variabili sarà quindi :

    colname e palname

    Il valore runtime sarà :

    $_GET['contratto']
    $_GET['tipologia']

    Il valore predefinito, ovvero quello che deve restituire la query in caso di selezione vuota è il mio problema.

    Vorrei che ad una selezione nulla (cioè prendendo in esame il form nel campo tipologia selezionando "Tutte" che non ha valore) mi vengano restituiti tutti i record di quel campo un pò come SELECT *.

    Non riesco a capire qual'è la variabile predefinita che restituisce tali valori.

    Il form è perfettamente funzionante se viene soddisfatto almeno un campo di ricerca ma se viene selezionato "tutte" non restituisce un bel niente.
    Grazie in anticipo

  2. #2
    Devi utilizzare un costrutto come IF nella costruzione della query. Ad esempio, in pesudo codice:

    if ($_GET['tipologia'] == '') {
    $sql = 'SELECT * FROM tabella';
    } else {
    $sql = 'SELECT * FROM tabella WHERE tipologia = "' . escape($_GET['tipologia']) . '"';
    }

    Ovviamente, nel caso di piu' campi "predefiniti" la logia per costruire la query sara' leggermente diversa, ma la base e' la stessa.

  3. #3
    Grazie, riesco a capire quello che hai scritto il problema è che ancora non programmo in solo codice quindi mi aiuto con dreamweaver perciò creo un recordset e inserisco nella funzione avanzata la query :
    Esempio completo

    SELECT *
    FROM regioni
    WHERE (contratto = 'colname' AND regione = 'malname' AND provincia = 'salname' AND tipologia = 'palname')
    ORDER BY zona

    il programma mi restituisce nella pagina "search.php" il seguente codice:

    <?
    $currentPage = $_SERVER["PHP_SELF"];

    $maxRows_rsAnnunci = 10;
    $pageNum_rsAnnunci = 0;
    if (isset($_GET['pageNum_rsAnnunci'])) {
    $pageNum_rsAnnunci = $_GET['pageNum_rsAnnunci'];
    }
    $startRow_rsAnnunci = $pageNum_rsAnnunci * $maxRows_rsAnnunci;

    $palname_rsAnnunci = "-1";
    if (isset($_GET['tipologia'])) {
    $palname_rsAnnunci = (get_magic_quotes_gpc()) ? $_GET['tipologia'] : addslashes($_GET['tipologia']);
    }
    $salname_rsAnnunci = "-1";
    if (isset($_GET['provincia'])) {
    $salname_rsAnnunci = (get_magic_quotes_gpc()) ? $_GET['provincia'] : addslashes($_GET['provincia']);
    }
    $colname_rsAnnunci = "-1";
    if (isset($_GET['contratto'])) {
    $colname_rsAnnunci = (get_magic_quotes_gpc()) ? $_GET['contratto'] : addslashes($_GET['contratto']);
    }
    $malname_rsAnnunci = "-1";
    if (isset($_GET['regione'])) {
    $malname_rsAnnunci = (get_magic_quotes_gpc()) ? $_GET['regione'] : addslashes($_GET['regione']);
    }
    mysql_select_db($database_sau, $sau);
    $query_rsAnnunci = sprintf("SELECT * FROM regioni WHERE (contratto = '%s' AND regione = '%s' AND provincia = '%s' AND tipologia = '%s') ORDER BY zona", $colname_rsAnnunci,$malname_rsAnnunci,$salname_rsA nnunci,$palname_rsAnnunci);
    $query_limit_rsAnnunci = sprintf("%s LIMIT %d, %d", $query_rsAnnunci, $startRow_rsAnnunci, $maxRows_rsAnnunci);
    $rsAnnunci = mysql_query($query_limit_rsAnnunci, $sau) or die(mysql_error());
    $row_rsAnnunci = mysql_fetch_assoc($rsAnnunci);

    dove dovrei inserire il costrutto?
    grazie

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.