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

    Ricerca per fascia d'età

    Codice PHP:
    //Verifica i dati della form
    $Ente trim($_POST['Ente']);
    $Tipo trim($_POST['Tipo']);
    //Converte i caratteri speciali
    $Ente htmlspecialchars($Ente);
    $NomeStr trim($_POST['Nome']);
    $Sesso trim($_POST['Sesso']);
    if (
    $Sesso=="M") {
    $M2 "t1.M = '1' AND ";
    } elseif (
    $Sesso=="F") {
    $F2 "t1.F = '1' AND ";
    }
    $Eta trim($_POST['Eta']);
    if (
    $Eta=="tutte") {
    $Eta2 "(t1.Eta = '$Eta' OR t1.Eta != '$Eta') AND";
    } elseif (
    $Eta=="Da 18 anni in poi" OR $Eta 18) {
    $Eta2 "(t1.Eta = 'Da 18 anni in poi' OR t1.Eta = 'tutte' OR t1.Eta LIKE '%21%' OR t1.Eta LIKE '%19%' OR t1.Eta LIKE '%20%' OR t1.Eta LIKE '%22%' OR t1.Eta LIKE '%23%') AND";
    }
    $Provincia trim($_POST['Provincia']);
    if (
    $Provincia!="Tutte") {
    $Provincia2 "AND t2.Provincia = '$Provincia'";
    }
    $Handicap trim($_POST['Handicap']);
    $Handicap2 "t1.Handicap = '$Handicap' AND";
    $Comportamento trim($_POST['Comportamento']);
    $Comportamento2 "t1.Comportamento = '$Comportamento'";
    $Intervento trim($_POST['Intervento']);
    if (
    $Intervento!="Tutte") {
    $Intervento2 "AND t1.Area = '$Intervento'";
    }
    $Madre trim($_POST['Madre']);
    $Maltrattata trim($_POST['Maltrattata']);
    if (
    $Madre=="1" AND $Maltrattata=="1") {
    $Donne "AND (t2.Tipo = '5' OR t2.Tipo = '9')";
    } elseif (
    $Madre=="1" AND $Maltrattata=="0") {
    $Donne "AND t2.Tipo = '5'";
    } elseif (
    $Madre=="0" AND $Maltrattata=="1") {
    $Donne "AND t2.Tipo = '9'";
    } elseif (
    $Madre=="0" AND $Maltrattata=="0") {
    $Donne "";
    }

    if (
    $NomeStr!="") {
    $where "t2.Nome LIKE '%$NomeStr%'";
    } else {
    $where "$M2 $F2 $Eta2 $Handicap2 $Comportamento2 $Intervento2 $Provincia2 $Donne";
    }

    //Strutture
    $query "SELECT t2.ID as IDStruttRic, t2.Nome as NomeStruttRic, t2.Url as UrlStruttRic, t2.Tipo as TipoStruttRic, t1.Eta as EtaStrutt FROM strutture as t2 JOIN dati_strutt as t1 ON t2.ID = t1.Struttura WHERE $where ORDER BY t2.Nome";
    $result mysql_query($query$db);
    $Dati_Trovati mysql_num_rows($result);

    $query4 "SELECT * FROM provincie WHERE ID = '$Provincia'";
    $result4 mysql_query($query4$db);
    $row4 mysql_fetch_array($result4);
    $EnteProvincia $row4["Provincia"];

    if (
    $Provincia=="Tutte") {
    $Provincia3 "Tutte";
    } else {
    $Provincia3 $EnteProvincia;
    }
    if (
    $Madre=="1") {
    $Madre3 "Si";
    } else {
    $Madre3 "No";
    }
    if (
    $Maltrattata=="1") {
    $Maltrattata3 "Si";
    } else {
    $Maltrattata3 "No";
    }
    if (
    $Handicap=="1") {
    $Handicap3 "Si";
    } else {
    $Handicap3 "No";
    }
    if (
    $Comportamento=="1") {
    $Comportamento3 "Si";
    } else {
    $Comportamento3 "No";
    }

    $query3 "INSERT INTO ricerche2 (Sesso,Eta,Provincia,Handicap,Area,Nome,Risultati,Comportamento,Madre,Maltrattata,Ente,Tipo,Data) VALUES ('$Sesso', '$Eta', '$Provincia3', '$Handicap3', '$Intervento', '$NomeStr', '$Dati_Trovati', '$Comportamento3', '$Madre3', '$Maltrattata3', '$Ente', '$Tipo', Now())";
    $result3 mysql_query($query3$db);

    if (
    $Dati_Trovati==OR $Sesso=="" OR $Eta=="" OR $Handicap=="" OR $Intervento=="" OR $Provincia=="") {
    echo 
    "<center>
    [b]Non ci sono risultati[/b]



    <a href=\"javascript:history.back()\">Indietro</a>
    </center>"
    ;
    } else {
    while(
    $row mysql_fetch_array($result)) {
    $IDStruttRic $row["IDStruttRic"];
    $NomeStruttRic $row["NomeStruttRic"];
    $UrlStruttRic $row["UrlStruttRic"];
    $TipoStruttRic $row["TipoStruttRic"];
    $EtaStrutt $row["EtaStrutt"];
    $EtaStrutt2 strstr($EtaStrutt'19');
    $EtaStrutt3 strstr($EtaStrutt'20');
    $EtaStrutt4 strstr($EtaStrutt'21');
    $EtaStrutt5 strstr($EtaStrutt'22');
    $EtaStrutt6 strstr($EtaStrutt'23');

    if ((
    $EtaStrutt!="tutte" AND $EtaStrutt!="Da 18 anni in poi" AND $EtaStrutt2==true AND $EtaStrutt3==true AND $EtaStrutt4==true AND $EtaStrutt5==true AND $EtaStrutt6==true) OR ($Sesso=="M" AND ($TipoStruttRic=="5" OR $TipoStruttRic=="9"))) {
    $Eta3 explode(" - "$EtaStrutt);
    $min $Eta3[0];
    $max $Eta3[1];
    }

    if (((
    is_numeric($Eta) AND $Eta $min OR $Eta $max) AND ($Eta!="tutte" AND $Eta!="Da 18 anni in poi" AND $EtaStrutt2==true AND $EtaStrutt3==true AND $EtaStrutt4==true AND $EtaStrutt5==true AND $EtaStrutt6==true) AND $NomeStr=="") OR ($Sesso=="M" AND ($TipoStruttRic=="5" OR $TipoStruttRic=="9"))) {

    } elseif ((
    is_numeric($Eta) AND $Eta >= $min AND $Eta <= $max AND $NomeStr=="") OR (($Eta=="tutte" OR $Eta=="Da 18 anni in poi" OR $EtaStrutt2==false OR $EtaStrutt3==false OR $EtaStrutt4==false OR $EtaStrutt5==false OR $EtaStrutt6==false) AND $NomeStr=="") OR $NomeStr!="") {

    //Se l'url è indicato aggiunge il link altrimenti si linka alla pagina interna
    if ($UrlStrutt!="") {
    echo 
    "[*]<a href=\"$UrlStruttRic\" target=\"_blank\">$NomeStruttRic</a>[*]
    "
    ;
    } else {
    echo 
    "[*]<a href=\"pag.php?Pag=struttura&Struttura=$IDStruttRic\">$NomeStruttRic</a>
    "
    ;
    }
    }
    }


    Lo so che la ricerca è un pò, molto, macchinosa, ma purtroppo le codizioni quelle devono essere. Il problema mi nasce se metto l'età da 0 a 5, per es. 2, mi da' anche le strutture da 6 anni in su, per es. 6 - 11, quindi non rispetta $min e $max. Se qualcuno ci capisce può aiutarmi? Thanks

  2. #2

  3. #3
    Forse sarebbe meglio fornire più informazioni...

    :master:
    Realizzazione Software, Siti Web ed E-commerce. Consulenza Software ed esperti open source ...
    Scopri i nostri servizi...

  4. #4
    E' un pò lunga la cosa, ma come dicevo funziona tutto, tranne se l'età è minori di 6.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    E' verametne un rompicapo quel codice ... l'errore non e' facilmente comprensibile anche perche' non e' ben chiaro cosa c'e' nei parametri passati e come e' fatta la base dati.

    considero 4 5 linee di codice perche' di piu mi viene mal di testa
    Codice PHP:
    $Eta trim($_POST['Eta']);
    if (
    $Eta=="tutte") {
    $Eta2 "(t1.Eta = '$Eta' OR t1.Eta != '$Eta') AND";
    } elseif (
    $Eta=="Da 18 anni in poi" OR $Eta 18) {
    $Eta2 "(t1.Eta = 'Da 18 anni in poi' OR t1.Eta = 'tutte' OR t1.Eta LIKE '%21%' OR t1.Eta LIKE '%19%' OR t1.Eta LIKE '%20%' OR t1.Eta LIKE '%22%' OR t1.Eta LIKE '%23%') AND";

    ad esempio questa ... $eta e' un numero o una stringa ? sembra che possa essere entrambi a seconda di che ? non sarebbe il caso di farlo diventare sempre e comunque un numero ti semplificherebbe di molto la gestione e la leggibilita'

    poi se $eta e' == a tutte
    fai questo
    Codice PHP:
    $Eta2 "(t1.Eta = '$Eta' OR t1.Eta != '$Eta') AND"
    ma e' un controllo inutile (e' sempre vero) perche' l'hai fatto ? per errore o per metterci comunque
    una stringa valorizzata ma al quel punto non sarebbe uguale metterla vuota ?

    secondo me hai reso complicatissima una cosa di per se complessa
    Sicuramente si puo scrivere meglio ...


    Andrea

  6. #6
    Codice PHP:
    $Eta3 explode(" - "$EtaStrutt);
    $min $Eta3[0];
    $max $Eta3[1];
    //e poi $Eta < $min OR $Eta > $max 
    Questo si può fare direttamente nella query?

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    398
    forse volevi scrivere cosi

    t1.Eta < $min OR t1.Eta > $max

    se e' questo che intendevi si certamente si puo fare

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.