Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509

    [php]query:usare OR senza influenzare tutto

    scusate ma sinceramente non sapevo cosa scrivere sul titolo
    ho questo codice
    Codice PHP:
    $query ="SELECT  cataloghi.cat_id,cataloghi.pos,cataloghi.titolo,operator.nome,stagione.stag,cataloghi.region,cataloghi.scad "
                 
    ."FROM `cataloghi` LEFT JOIN (operator,stagione) ON (cataloghi.operat=operator.op_id AND cataloghi.stag=stagione.stag_id) "
                 
    ."WHERE  ";
    if (!empty(
    $stagione)){
                        
    $stagione =$stagione."%";
                        
    $query .=" stagione.stag LIKE '$stagione' ";
                        
    $st="1";}
    if (!empty(
    $operatore)){
                        
    $operatore=$operatore."%";
                        if (
    $st=="1"){$query.=" AND ";}
                        
    $query .="  operator.nome LIKE '$operatore'  ";
                        
    $op="1";
                        }
    if (!empty(
    $regione)){
                        
    $regione="%".$regione."%";
                        
    $requery ="SELECT paes_region.id FROM paes_region WHERE nome like '$regione' ";
                        
    $id_region=safe_query($requery);
                        
    $requery ="SELECT count(id) FROM paes_region WHERE nome like '$regione' ";
                        
    $conta=mysql_fetch_array(safe_query($requery));
                        
    $conta=$conta[0];
                        if (
    $st=="1"||$op=="1"){$query.=" AND ";}
                        
    $n="0";
                        while (
    $regio=mysql_fetch_array($id_region))
                                {
                            echo 
    $regio[0];
                                
    $query.=" cataloghi.region LIKE '% $regio[0] %' ";
                                if (
    $n<($conta-1)){
                                    echo
    "n=".$n." conta =".($conta-1)."
    "
    ;
                                    
    $query.=" OR ";
                                    
    $n=$n+1;
                                    }
                                }
                                

    stampando $query il risultato impostando i 3 parametri è:


    SELECT cataloghi.cat_id,cataloghi.pos,cataloghi.titolo,op erator.nome,stagione.stag,
    cataloghi.region,cataloghi.scad
    FROM `cataloghi`
    LEFT JOIN (operator,stagione) ON (cataloghi.operat=operator.op_id AND cataloghi.stag=stagione.stag_id)
    WHERE stagione.stag LIKE 'est%'
    AND operator.nome LIKE 'pippo%'
    AND cataloghi.region LIKE '% 151 %'
    OR cataloghi.region LIKE '% 7 %'

    il problema è che il valore che setto a cataloghi.region potrebbero essere anche tanti e riassumendo la query dovrebbe essere

    select * from cataloghi where stagione like XX AND operatore like XX AND regione LIKe(xx OR yy OR zz OR .......)

    ora invece mi viene intesa dal sistema come

    select * from cataloghi where (stagione like XX AND operatore like XX AND regione LIKE xx) OR yy OR zz OR ...... in questo modo se ci sono tanti campi per region mi vien ecompletamente ignorato il valore di stagione o di operatore

    sapete se c'è un modo per risolvere questo inghippo?

    grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2005
    Messaggi
    509
    ok risolto...bastava mettere due parentesi

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.