• User Attivo

    come sapere i parziali dopo una ricerca?

    questa è la query di ricerca:

    [PHP]
    <?
    $dal_giorno=$aa1."-".$mm1."-".$gg1;
    $al_giorno=$aa2."-".$mm2."-".$gg2;
    if ($stato_ordine){
    $search_stato_ordine="AND stato_ordine like "".$stato_ordine.""";
    }
    if ($stato_merce){
    $search_stato_merce="AND stato_merce like "".$stato_merce.""";
    }
    if ($reclamo_si_no){
    $search_reclamo_si_no="AND reclamo_si_no like "".$reclamo_si_no.""";
    }
    if ($dal_giorno!="--" && $al_giorno!="--"){
    $search_data_ins_prot_ordini="AND data_ins_prot_ordini >= "".$dal_giorno."" AND data_ins_prot_ordini <= "".$al_giorno.""";
    }

    $query="SELECT * FROM protocollo_ordini WHERE (id_protocolli_ordini>0 ".$search_stato_ordine.$search_stato_merce.$search_reclamo_si_no.$search_data_ins_prot_ordini.$search_note_ordine.$search_merce_mancante.") AND note_ordine like '%$chiave%' AND merce_mancante like '%$chiaveb%' ";
    $ris_query=mysql_query($query, $conn);
    

    $nr_risultato = mysql_num_rows($ris_query);
    ?>
    [/PHP]

    e questo è la query che mi dovrebbe dare i risultati parziali della ricerca, il problema è che come risultati mi da sempre 0:

    [PHP]
    <?php
    $result = mysql_query("SELECT stato_ordine FROM protocollo_ordini WHERE id_protocolli_ordini>0 ".$search_stato_ordine." = 'In lavorazione'");
    $parz_nr_in_lavorazione = mysql_num_rows($result);
    $result = mysql_query("SELECT stato_ordine FROM protocollo_ordini WHERE id_protocolli_ordini>0 ".$search_stato_ordine." = 'In attesa'");
    $parz_nr_in_attesa = mysql_num_rows($result);
    $result = mysql_query("SELECT stato_ordine FROM protocollo_ordini WHERE id_protocolli_ordini>0 ".$search_stato_ordine." = 'Completato'");
    $parz_nr_completato = mysql_num_rows($result);
    $parz_totale1 = $parz_nr_in_lavorazione+$parz_nr_in_attesa+$parz_nr_completato;
    ?>

    in attesa<?=$parz_nr_in_attesa?><br>
    in lavorazione<?=$parz_nr_in_lavorazione?><br>
    completato<?=$parz_nr_completato?><br>
    [/PHP]


  • User Attivo

    Ciao prinzart,
    guardando al volo i tuoi script mi sembra che la query contiene una cosa del tipo campo like = 'pippo': se così fosse il simbolo di uguaglianza è un errore (dovresti mettere in tal caso campo like 'pippo').
    Per sicurezza prova a farti stampare a monitor le query, così se hanno un errore lo vedi subito.

    Inoltre fatti stampare l'errore in caso di insuccesso delle query:

    mysql_query("SELECT...") or die mysql_errno() . ": " . mysql_error() . "\n";

    Facci sapere se e come risolvi!
    :ciauz:


  • User Attivo

    ho messo like invece di = e ora invece di darmi 0 nei parziali mi da il totale di tutti i record del DB :arrabbiato:

    [PHP]
    <?php
    $result = mysql_query("SELECT * FROM protocollo_ordini WHERE id_protocolli_ordini>0 ".$search_stato_ordine." like 'In lavorazione'");
    $parz_nr_in_lavorazione = mysql_num_rows($result);
    $result = mysql_query("SELECT * FROM protocollo_ordini WHERE id_protocolli_ordini>0 ".$search_stato_ordine." like 'In attesa'");
    $parz_nr_in_attesa = mysql_num_rows($result);
    $result = mysql_query("SELECT * FROM protocollo_ordini WHERE id_protocolli_ordini>0 ".$search_stato_ordine." like 'Completato'");
    $parz_nr_completato = mysql_num_rows($result);
    $parz_totale1 = $parz_nr_in_lavorazione+$parz_nr_in_attesa+$parz_nr_completato;
    ?>

    in attesa<?=$parz_nr_in_attesa?><br>
    in lavorazione<?=$parz_nr_in_lavorazione?><br>
    completato<?=$parz_nr_completato?><br>
    [/PHP]


  • User Attivo

    Ti sei fatto stampare la query a monitor?


  • User Attivo

    mi stampa:

    SELECT * FROM protocollo_ordini WHERE (id_protocolli_ordini>0 AND data_ins_prot_ordini >= "2007-12-15" AND data_ins_prot_ordini <= "2007-12-18") AND note_ordine like '%%' AND merce_mancante like '%%'


  • User Attivo

    Non so cosa contiene il db, ma le clausole
    note_ordine like '%%' AND merce_mancante like '%%'
    mi sembrano superflue (anche se non sono loro la causa dei tuoi problemi :D).

    Sei sicuro che esistano record al di fuori dell'intervallo di date selezionato?

    Inotre la query che hai stampato non è nessuna delle tre precedentemente postate, ma è la prima che, se ho ben capito, non ti dava alcun errore... :bho:


  • User Attivo

    ora ho fatto così:

    [php]
    <?php
    $query1="SELECT * FROM protocollo_ordini WHERE (id_protocolli_ordini>0 ".$search_stato_ordine." like 'In lavorazione')";
    $result1=mysql_query($query1, $conn);
    $parz_nr_in_lavorazione = mysql_num_rows($result1);
    $result2 = mysql_query("SELECT * FROM protocollo_ordini WHERE id_protocolli_ordini>0 ".$search_stato_ordine." like 'In attesa'");
    $parz_nr_in_attesa = mysql_num_rows($result2);
    $result3 = mysql_query("SELECT * FROM protocollo_ordini WHERE id_protocolli_ordini>0 ".$search_stato_ordine." like 'Completato'");
    $parz_nr_completato = mysql_num_rows($result3);
    $parz_totale1 = $parz_nr_in_lavorazione+$parz_nr_in_attesa+$parz_nr_completato;

    echo "$query1";
    ?>
    [/php]e mi stampa questo:

    SELECT * FROM protocollo_ordini WHERE (id_protocolli_ordini>0 like 'In lavorazione')

    quindi mi prende il totale dei record "in lavorazione" ma per prendere solo quelli del risultato della ricerca come si fa?


  • User Attivo

    @prinzart said:

    e mi stampa questo:

    SELECT * FROM protocollo_ordini WHERE (id_protocolli_ordini>0 like 'In lavorazione')

    ...mi sembrava questo il tuo fine... comunque la query è ancora sbagliata correggila in:
    *** SELECT * FROM protocollo_ordini WHERE id_protocolli_ordini>0 AND stato_merce='In lavorazione'***
    Cioè nella tua query manca il campo su cui applichi il like, che a questo punto mi pare non più necessario, pertanto togliamo il like e mettiamo l'uguale (=).

    @prinzart said:

    quindi mi prende il totale dei record "in lavorazione" ma per prendere solo quelli del risultato della ricerca come si fa?
    ... a questo punto non mi è più chiaro il tuo obiettivo...:bho:


  • User Attivo

    Tolgierei inoltre
    ***id_protocolli_ordini>0
    a meno che non abbia particolari esigenze, tipo id negativi o nulli per svariati motivi. Se gli id sono sempre positivi puoi quindi ulteriormente accorciare la query in:
    *** SELECT * FROM protocollo_ordini WHERE stato_merce='In lavorazione'


  • User Attivo

    :fumato:CI SONO RIUSCITOOOOO!!!!!!:fumato:

    ecco la pozione magica:

    [PHP]
    <?php
    $result = mysql_query("SELECT * FROM protocollo_ordini WHERE (id_protocolli_ordini>0 ".$search_stato_ordine.$search_data_ins_prot_ordini.") AND stato_ordine like 'In lavorazione' ");
    $parz_nr_in_lavorazione = mysql_num_rows($result);
    $result = mysql_query("SELECT * FROM protocollo_ordini WHERE (id_protocolli_ordini>0 ".$search_stato_ordine.$search_data_ins_prot_ordini.") AND stato_ordine like 'In attesa' ");
    $parz_nr_in_attesa = mysql_num_rows($result);
    $result = mysql_query("SELECT * FROM protocollo_ordini WHERE (id_protocolli_ordini>0 ".$search_stato_ordine.$search_data_ins_prot_ordini.") AND stato_ordine like 'Completato' ");
    $parz_nr_completato = mysql_num_rows($result);
    $parz_totale1 = $parz_nr_in_lavorazione+$parz_nr_in_attesa+$parz_nr_completato;
    ?>

    in attesa<?=$parz_nr_in_attesa?><br>
    in lavorazione<?=$parz_nr_in_lavorazione?><br>
    completato<?=$parz_nr_completato?><br>
    [/PHP]