• Consiglio Direttivo

    Ciao LauPhp

    credo tu possa togliere il LIKE per il campo sesso ed età ed utilizzare lo stesso metodo che usi per il nominativo anche per il tutore....

    Dicci se risolvi 😉


  • User Attivo

    è come gia stavo provando a fare, ma non va:gtsad:


  • 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]