Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727

    cambiare metodo di selezione da listmenu a checkbox...

    ciao, ho delle righe di PHP che mi estraggono dei valori da un DB mysql, secondo vari criteri, un criterio è questo:

    if ($_POST["search_cat"] and $_POST["search_cat"])
    $where .= " AND cat LIKE '%".mysql_escape_string($_POST["search_cat"])."%' ";

    search_cat è un listmenu, una tendina da cui scelgo UN valore da cercare.
    La mia esigenza ora è invece di scegliere PIU' valori contemporaneamente quindi pensavo di impaginare i valori del listmenu in tante checkbox e poi ho buttato giù così il php:

    $arr_cat = array();
    foreach ($_POST as $key => $value)
    {
    if (substr($key, 0, 5) == "cat_" and $value)
    $arr_cat[] = $value;
    }
    $where_cat = $arr_cat?"AND cat LIKE ('".implode("','", $arr_cat)."') ":"";

    e poi chiudevo il tutto così

    $query = "
    SELECT *
    FROM tabella
    WHERE 1
    $where (che è un altro criterio di selezione che non ho messo qui xchè funziona)
    $where_cat
    ORDER BY id

    ma non funzia, mi estrae i valori dal DB ma come se la selezione CAT non esistesse, prende tutti i valori senza verificare le checkbox della CAT selezionate da me
    Dove sbaglio?

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    in questi casi è sempre bene far stampare a video la query... metti un bel print $query; exit; dopo il settaggio della variabile e vedi subito che cosa viene fuori... forse manca solo un AND in testa a $where_cat...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    bella idea, viene:

    SELECT email FROM tabella WHERE 1 AND prov IN ('AL','BI','AT','CN','NO','TO','VB','VC') ORDER BY id

    vedi, mi prende correttamente la 2a where (quella PROV) ma la 1a WHERE manco la considera

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    allora $arr_cat è vuoto... ho notato un errore: metti substr($key, 0, 5) == "cat_" ma dovrebbe essere substr($key, 0, 4) == "cat_" ... prova un po'...

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2000
    Messaggi
    727
    arghhh andiamo meglio ma mi è uscito questo

    SELECT email FROM tabella WHERE 1 AND cat LIKE ('agricoltura','direzione','paghe','sport','social e') AND prov IN ('AL','BI','AT','CN','NO','TO','VB','VC') ORDER BY id
    KO: SELECT email FROM tabella WHERE 1 AND cat LIKE ('agricoltura','direzione','paghe','sport','social e') AND prov IN ('AL','BI','AT','CN','NO','TO','VB','VC') ORDER BY id
    You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near ''direzione','paghe','sport','sociale') AND prov IN ('AL','BI'

    e non so più che fare
    perchè mi scrive KO????
    è tutto giusto

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    metti l'SQL così generato direttamente su MySQL (per es. in phpmyadmin) e correggi finchè non individui l'errore di sintassi... in effetti mi pare che la sintassi per LIKE non sia esatta... prova a controllare quello per prima cosa.

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.