• User Attivo

    è una coincidenza o cosi può funzionare?
    che ne pensate?:?

    [php]
    <?
    $postnominativo= $_POST['nominativo'];
    $posttutore=$_POST['tutore'];
    $nominativo = explode(" ",$postnominativo);
    $tutore = explode(" ",$posttutore);
    $nnominativo = count($nominativo);
    $ntutore = count($tutore);
    $totale = $nnominativo+$ntutore;
    $sesso = $_POST['sesso'];
    $eta= $_POST['eta'];

    $connection = mysql_connect(".............",".............",".................");
    $db = mysql_select_db(".........", $connection);
    $query = "SELECT * FROM ..............WHERE ";
    for ($i=0; $i<$totale; $i++) {
    if ($i > 0) {
    $query .= " AND ";
    }
    $query .= "(nominativo LIKE '%" . $nominativo* . "%') AND (tutore LIKE '%" . $tutore* . "%') AND (sesso LIKE'%".$sesso . "%') AND (eta LIKE'%".$eta . "%')";
    }
    $query .= " ORDER BY id DESC";
    $result = mysql_query($query);
    while( $row=mysql_fetch_assoc($result)){

    ...

    }
    mysql_close($connection);
    ?>
    [/php]


  • User Attivo

    resta sempre il problema dell'età

    scrivo 2 e mi escono quelli con 2 anni, 12 anni, ecc


  • Consiglio Direttivo

    @LauPhp said:

    resta sempre il problema dell'età

    scrivo 2 e mi escono quelli con 2 anni, 12 anni, ecc

    sostituisci:
    [PHP]....AND (eta LIKE'%".$eta . "%')"; [/PHP]

    con:
    [PHP]....AND eta='$eta'"; [/PHP]

    vedi , dovrebbe andare 😉


  • User Attivo

    no non va

    se scrivo l età funziona, ma se invece faccio una ricerca solo per nominativo o tutore a esempio (in caso non conosc l età della persona) non mi restituisce niente


  • Consiglio Direttivo

    Allora ti basta impostare un if per dire allo script di considerare la ricerca sul campo eta solo se gli passi un valore 😉


  • User Attivo

    stessa cosa se scrivo questo
    [php]

    $query = "SELECT * FROM ..............WHERE ";
    for ($i=0; $i<$totale; $i++) {
    if ($i > 0) {
    $query .= " AND ";
    }
    if(isset($eta)){
    $query .= "(nominativo LIKE '%" . $nominativo* . "%') AND (tutore LIKE '%" . $tutore* . "%') AND (sesso LIKE'%".$sesso . "%') AND eta= '$eta'";
    } else {
    $query .= "(nominativo LIKE '%" . $nominativo* . "%') AND (tutore LIKE '%" . $tutore* . "%') AND (sesso LIKE'%".$sesso . "%')";
    }
    $query .= " ORDER BY id DESC";
    $result = mysql_query($query);
    [/php]


  • Consiglio Direttivo

    Perchè non provi ad annidare tutti i campi, così la verifica la fa solo su quello che ricerchi?

    [php]if (isset($nominativo)){
    $query .="nominativo LIKE '%$nominativo%'";}
    if (isset($tutore)){
    $query .=" tutore LIKE '%$tutore%'";}

    // etc etc[/php]
    Prova un po così 😉

    .";


  • User Attivo

    😢😢😢 cosi non mi funziona più niente


  • Bannato User Attivo

    @Samyorn

    isset($nominativo) è sempre vera a meno che non si inizializzi a NULL e di default la variabile in oggetto.
    Provai, tempo fa, così per curiosità con ciclo while e quella condizione... Povero web server!!!

    @LauPhp

    Hai provato questo metodo?

    La variabile nominativo trasformala in un Array dove ogni indice conterrà tutte le possibili combinazioni fra nome (eventualmente 2^ 3 ^ 4 ^ 5^ 6^ (....povero bimbo se ha 5 nomi... :P) e cognome).
    Utilizza un po' di risorse (specialmente se i nomi sono diversi...) però è assicurato un risultato certo.

    Altrimenti potresti usare questo:

    INSTR(nominativo, explode(" ", $nominativo))

    quest'ultima restituisce tutte le righe che nella colonna nominativo (primo argomento di INSTR) hanno $nominativo

    Non sono sicuro al 100% che funzioni...mi è venuta ora così...


  • User Attivo

    rieccomi, scusate se rispondo cosi tardi ma sto incasinatissima.
    scusa l'ignoranza portaile84, ma non ho capito bene che intendi dire 🙂


  • User Attivo

    così sembra funzionare, mi date un parere sulla sua efficienza?

    [php]<?
    $postnominativo= $_POST['nominativo'];
    $posttutore=$_POST['tutore'];
    $nominativo = explode(" ",$postnominativo);
    $tutore = explode(" ",$posttutore);
    $nnominativo = count($nominativo);
    $ntutore = count($tutore);
    $totale = $nnominativo+$ntutore;
    $sesso = $_POST['sesso'];
    $eta= $_POST['eta'];

    $connection = mysql_connect(".............",".............",".................");
    $db = mysql_select_db(".........", $connection);
    $query = "SELECT * FROM ..............WHERE ";
    for ($i=0; $i<$totale; $i++) {
    if ($i > 0) {
    $query .= " AND ";
    }
    if ($eta != NULL){
    $query .= "(nominativo LIKE '%" . $nominativo* . "%') AND (tutore LIKE '%" . $tutore* . "%') AND (sesso LIKE'%".$sesso . "%') AND eta ='$eta'";
    }
    else {
    $query .= "(nominativo LIKE '%" . $nominativo* . "%') AND (tutore LIKE '%" . $tutore* . "%') AND (sesso LIKE'%".$sesso . "%')";
    }
    }
    $query .= " ORDER BY id DESC";
    $result = mysql_query($query);
    while( $row=mysql_fetch_assoc($result)){

    echo $row['nominativo']."<br>";
    echo $row['tutore']."<br>";
    echo $row['eta']."<br>";
    echo $row['sesso']."<br>";
    }
    mysql_close($connection);
    ?>[/php]