Visualizzazione dei risultati da 1 a 6 su 6

Discussione: Form di ricerca

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    166

    Form di ricerca

    Buongiorno a tutti...
    Sto cambiando le pagine di un vecchio sito realizzato in ASP con pagine in PHP.
    Sto avendo un p� di problemi solo con una cosa: il modulo di ricerca.
    Mi spiego meglio...in ASP ho realizzato questo tipo di variabili:

    categoria=request("categoria")
    if categoria <> "" then varQuerycategoria = " AND categoria = '"&categoria&"' "
    tipologia=Request("tipologia")
    if tipologia <> "" then varQuerytipologia = " AND tipologia = '"&tipologia&"' "
    e cos� via...

    Con questo tipo di query:

    sql="select * from immobili "
    sql= sql & " where contratto='"&ven&"' "
    sql= sql & " "&varQuerycategoria&" "
    sql= sql & " "&varQuerytipologia&" "
    sql= sql & " "&varQueryzona&" "
    sql= sql & " "&varQuerymin&" "&varQuerymax&" "&varQueryMinMax&" "
    sql= sql & " order by prezzo asc "

    Come trasformo il tutto in PHP?

    Grazie in anticipo per l'aiuto...

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Puoi fare una cosa del genere:
    Codice PHP:
    $categoria = isset($_POST['categoria']) ? $_POST['categoria'] : ''// oppure $_GET['categoria'] se la passi via get

    $sql "select * from immobili where 1=1";
    if(
    $categoria){
       
    $sql .= " AND categoria = '".mysqli_real_escape_string($categoria)."'";
    }
    if(
    $tipologia){
       
    $sql .= " AND tipologia = '".mysqli_real_escape_string($tipologia)."'";
    }
    $sql .= " ORDER BY prezzo asc"
    Però dipende anche da cosa usi per interfacciarti al database. Se usi PDO è i named paramenters puoi fare qualcosa di diverso

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    166
    Ciao...grazie per la celere risposta...
    se ho capito bene in tuo suggerimento dovrebbe essere così:

    $contratto = $_GET['contratto'];
    $categoria = isset($_GET['categoria']) ? $_GET['categoria'] : '';
    $tipologia = isset($_GET['tipologia']) ? $_GET['tipologia'] : '';
    $zona = isset($_GET['zona']) ? $_GET['zona'] : '';
    $min = isset($_GET['min']) ? $_GET['min'] : '';
    $max = isset($_GET['max']) ? $_GET['max'] : '';
    $all_rows = mysql_num_rows(mysql_query("select * from immobili where 1=1)"));
    if($categoria){
    $sql .= " AND categoria = '".mysqli_real_escape_string($categoria)."'";
    }
    if($tipologia){
    $sql .= " AND tipologia = '".mysqli_real_escape_string($tipologia)."'";
    }
    if($zona){
    $sql .= " AND zona = '".mysqli_real_escape_string($zona)."'";
    }
    if($min>0&&$max>0){

    $varQueryMinMax=" AND ( prezzo between ".$min." AND ".$max." ) ";

    } else {

    if($min!="0"){
    $varQuerymin=" AND prezzo >= ".$min." ";

    }
    if($max!="0"){
    $varQuerymax=" AND prezzo <= ".$max." ";

    }


    }

    $all_pages = ceil($all_rows / $x_pag);
    $first = ($pag - 1) * $x_pag;
    $rs = mysql_query("select * from immobili where 1=1 order by prezzo asc LIMIT $first, $x_pag");
    if($categoria){
    $sql .= " AND categoria = '".mysqli_real_escape_string($categoria)."'";
    }
    if($tipologia){
    $sql .= " AND tipologia = '".mysqli_real_escape_string($tipologia)."'";
    }
    if($zona){
    $sql .= " AND zona = '".mysqli_real_escape_string($zona)."'";
    }
    if($min>0&&$max>0){

    $varQueryMinMax=" AND ( prezzo between ".$min." AND ".$max." ) ";

    } else {

    if($min!="0"){
    $varQuerymin=" AND prezzo >= ".$min." ";

    }
    if($max!="0"){
    $varQuerymax=" AND prezzo <= ".$max." ";

    }


    }
    $nr = mysql_num_rows($rs);
    if ($nr != 0){
    for($x = 0; $x < $nr; $x++){
    $riga = mysql_fetch_assoc($rs);

    Nel codice è compresa anche la paginazione.
    C'è qualcosa da correggere?

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Nel tuo codice non capisco dove poi vai ad usare $sql.
    Poi, ti consiglio di lasciar stare le funzioni mysql_* che sono deprecate e sono state eliminate dalla ver 7 di php. Passa a mysqli (la versione procedurale è simile alle mysql_*)

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    166
    Ciao...ho provato il tuo suggerimento in questo modo:
    Codice PHP:
    $contratto = isset($_GET['contratto']) ? $_GET['contratto'] : '';
         
    $categoria = isset($_GET['categoria']) ? $_GET['categoria'] : '';
        
    $tipologia = isset($_GET['tipologia']) ? $_GET['tipologia'] : '';
        
    $sql "select * from immobili where 1=1";
    if(
    $categoria){
       
    $sql .= " AND categoria = '".mysqli_real_escape_string($categoria)."'";
    }
    if(
    $tipologia){
       
    $sql .= " AND tipologia = '".mysqli_real_escape_string($tipologia)."'";
    }
    $sql .= " ORDER BY prezzo asc";
    $rs = @mysql_query("$sql",$link) or die("Errore query database: " mysql_error());
        
    $nr mysql_num_rows($rs);
    echo 
    $sql;

        while (
    $riga mysql_fetch_array($rs)) { 
    però non mi trova alcun risultato...come mai?
    sto impazzendo...


    help me!
    Ultima modifica di poison81; 20-06-2017 a 20:45

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    166
    Nessun suggerimento?

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 © 2024 vBulletin Solutions, Inc. All rights reserved.