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

    Ricerca con campo statico + dinamico

    Ciao a tutti,

    ho una form di ricerca su un DB di autovetture e tra i vari campi di ricerca ho la marca della macchina (vedi http://www.nicemotion.it/public/automercato/ - cerca la tua auto)

    Per i campi prezzo, anno e carburante che contengono pochi valori, mi son creato una tabella valori statica e per cercare qualsiasi valore ho messo un range molto largo, tipo (per il prezzo):

    <select name="frm_prezzo" class="FormList" id="frm_prezzo">
    <option value="BETWEEN 0 AND 1000000">indifferente</option>
    <option value="BETWEEN 1 AND 5000">meno di 5.000 &euro;</option> ..etc

    Il campo marca, al contrario, viene preso dinamicamente da una tabella del DB e vorrei aggiungere un opzione statica con valore nullo per poter scegliere qualunque marcha tipo cosi:
    "
    <select name="frm_marca" class="FormList" id="frm_marca">
    <option value="">Qualunque</option>
    <?php
    do {
    ?>
    <option value="<?php echo $row_query_marca['id_marca']?>"><?php echo $row_query_marca['Marca_list']?></option> ...etc
    "
    la domanda è:

    come costruisco la query nella pagina dettaglio in modo che quando l'utente sceglie qualunque me le mostri tutte?

    Ora la query nella pagina dettaglio è costruita così e richiede un valore per il campo marca:
    "
    $varMarca_Recordset1 = "1";
    if (isset($_POST["frm_marca"])) {
    $varMarca_Recordset1 = (get_magic_quotes_gpc()) ? $_POST["frm_marca"] : addslashes($_POST["frm_marca"]);
    }
    $varPrezzo_Recordset1 = "1";
    if (isset($_POST["frm_prezzo"])) {
    $varPrezzo_Recordset1 = (get_magic_quotes_gpc()) ? $_POST["frm_prezzo"] : addslashes($_POST["frm_prezzo"]);
    }
    $varAnno_Recordset1 = "1";
    if (isset($_POST["frm_anno"])) {
    $varAnno_Recordset1 = (get_magic_quotes_gpc()) ? $_POST["frm_anno"] : addslashes($_POST["frm_anno"]);
    }
    $varGas_Recordset1 = "1";
    if (isset($_POST["frm_alimentazione"])) {
    $varGas_Recordset1 = (get_magic_quotes_gpc()) ? $_POST["frm_alimentazione"] : addslashes($_POST["frm_alimentazione"]);
    }
    mysql_select_db($database_conn_dbauto, $conn_dbauto);
    $query_Recordset1 = sprintf("SELECT * FROM alimentazione, macchine, marche, tipoauto WHERE macchine.Marca_ = %s AND macchine.Alimentazione_ %s AND macchine.Prezzo %s AND macchine.Anno %s AND marche.id_marca = macchine.Marca_
    "

    Immagino si debba mettere una condizione ma nn so come....

    Spero di esser stao chiaro

    Grazie

    Ciao

  2. #2
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Non basta se fai una cosa diquesto tipo? controlli il dato che ti da la marca e se risulta == "" o cmq nullo nella query metti: where marca != "" //diverso da nullo

  3. #3
    Ciao Marco,

    si, credo snch'io c voglia una condizione ma dove bisogna scriverla?

    scritto così non si puo:

    mysql_select_db($database_conn_dbauto, $conn_dbauto);
    $query_Recordset1 = sprintf("SELECT * FROM alimentazione, macchine, marche, tipoauto
    WHERE
    if(macchine.Marca_ == 0){
    macchine.Marca BETWEEN 1 AND 1000
    }ELSE{
    macchine.Marca_ = %sAND macchine
    }
    AND macchine.Alimentazione_ %s AND ETC..

    va forse messa qui in mezzo?

    $varMarca_Recordset1 = "1";
    if (isset($_POST["frm_marca"])) {
    $varMarca_Recordset1 = (get_magic_quotes_gpc()) ? $_POST["frm_marca"] : addslashes($_POST["frm_marca"]);
    }

    Ma come??


    Nik

  4. #4

  5. #5
    Utente di HTML.it L'avatar di marco80
    Registrato dal
    May 2005
    Messaggi
    1,357
    Qual'e' il dato che arriva alla pagina e che contiene la marca? puoi lasciare la tua query che seleziona in base alla marca e se il dato nn c'e' fai una seconda select:
    Codice PHP:
    //se la marca e' stata selezionata
    if($variabile_marca != ""){
    select from .....//tua query
    }else{
    select from tabella where marca != ''


  6. #6
    ciao,

    if($variabile_marca != ""

    /*esegue la query standard e mi estrae solo la marca selezionata*/

    else

    /* deve estrarre tutte le marche il cui ID va ora da 1 a 25

    costruirò due query e nella seconda estraggo tutte le marche.

    Ho però un altro problema:
    come la hai scritta tu la capisco ma dreamweaver mi scrive la query così:

    $query_Recordset1 = sprintf("SELECT * FROM alimentazione, macchine, marche, tipoauto
    WHERE

    la condizione la devo scrivere dopo lo sprintf ?

    tipo
    $query_Recordset1 = sprintf(
    if($variabile_marca != ""){
    "SELECT * FROM alimentazione, macchine, marche, tipoauto
    WHERE etc

    Grazie

    Nik

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.