• User Newbie

    Ricezione dati da form

    Ciao 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?
    sto provando in questa maniera ma mi trova solo il primo record e cioè $contratto e poi niente più:

    $categoria = isset($_GET['categoria']) ? $_GET['categoria'] : '';

    $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";

    Sto impazzendo...

    Grazie in anticipo per l'aiuto...


  • User Newbie

    Nessun suggerimento?


  • Consiglio Direttivo

    Ciao Poison81 e benvenuto nel Forum GT 😉

    Prova a modificarlo così:

    
    $sql = "select * from immobili where 1=1";
    if(isset($_GET['categoria'])){
       $sql .= " AND categoria = '".mysqli_real_escape_string($_GET['categoria'])."'";
    }
    if(isset($_GET['tipologia'])){
       $sql .= " AND tipologia = '".mysqli_real_escape_string($_GET['tipologia'])."'";
    }
    $sql .= " ORDER BY prezzo asc";
    

    😉


  • User Newbie

    Ciao e grazie per avermi risposto...
    Ho provato il tuo metodo così:
    [PHP]$contratto = isset($_GET['contratto']) ? $_GET['contratto'] : '';
    $categoria = isset($_GET['categoria']) ? $_GET['categoria'] : '';

    $tipolgia = isset($_GET['tipolgia']) ? $_GET['tipolgia'] : '';
    $zona = isset($_GET['zona']) ? $_GET['zona'] : '';
    

    $min = isset($_GET['min']) ? $_GET['min'] : '';
    $max = isset($_GET['max']) ? $_GET['max'] : '';

    $sql = "select * from immobili where contratto='$contratto'";
    

    if(isset($_GET['categoria'])){
    $sql .= " AND categoria = '".mysqli_real_escape_string($_GET['categoria'])."'";
    }
    if(isset($_GET['tipologia'])){
    $sql .= " AND tipologia = '".mysqli_real_escape_string($_GET['tipologia'])."'";
    }
    $sql .= " ORDER BY prezzo asc";

    $rs = @mysql_query("$sql",$link) or die("Errore query database: " . mysql_error());
    

    $nr = mysql_num_rows($rs);

    while ($riga = mysql_fetch_array($rs)) {        
    

    [/PHP]

    Ma non mi trova nulla lo stesso...
    Dove sbaglio?


  • Consiglio Direttivo

    Fai un echo di $sql e vediamo cosa esce fuori.


  • User Newbie

    Questa è la query:
    select * from immobili where contratto='Affitto' AND categoria = '' AND tipologia = '' ORDER BY prezzo asc


  • Consiglio Direttivo

    Non stai ricevendo i dati di categoria e tipologia

    l'url della pagina è dominio.ext/pagina.php?contratto=affitto&categoria=qualcosa&tipologia=qualcosaltro ????

    Così sembrerebbe che non stai ricevendo i valori o, se li ricevi anche se nulli, modifica gli if così:
    [php]if(isset($_GET['categoria']) && $_GET['categoria']!='')[/php]


  • User Newbie

    Allora l'url sembra giusto perchè è questo:
    pianetacasafoggia.altervista.org/ricercaimm.php?contratto=Vendita&categoria=Commerciale&tipologia=Tutte&zona=&min=0&max=0&Submit2=Cerca
    però la query è sempre questa:
    select * from immobili where contratto='Vendita' AND categoria = '' AND tipologia = '' ORDER BY prezzo asc
    anche con gli if modificati come mi hai detto prima...


  • Consiglio Direttivo

    Fatti un echo dei vari $_GET e togli un attimo mysqli_real_escape_string
    :mmm: