Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Ricerca con like

  1. #1

    Ricerca con like

    Ciao a tutti ho creato una ricerca su n tabelle e ho un piccolo problema con il campo che viene passato per eseguire la ricerca.

    Se viene passato una singola parola viene trovato il risultato nel caso venisse scritto
    "ciao demo" mi viene indicato risultati pari a zero.
    Per evitare questo problema o messo la stringa in un array separandoli dopo ogni spazio
    mettendo la seguente condizione per eseguire la ricerca

    codice PHP:
    Codice PHP:
    $condizione ="(Field173 LIKE '%$query[$i]%') OR (Field169 LIKE '%$query[$i]%') OR (Field75 LIKE '%$query[$i]%') OR (Field170 LIKE '%$query[$i]%') OR (Field74 LIKE '%$query[$i]%') OR (Field182 LIKE '%$query[$i]%') "
    Ovviamente viene utilizzato un ciclo per leggere $query[$i] e dopo l'ultima parentesi dovrei inserire un OR per far ricominciare la condizione e nel caso fosse l'ultimo elemento l'or sparisce..

    Come posso impostare questo ultimo controllo?

    Grazie a tutti spero di essere stato abbastanza chiaro..

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    non c'è bisogna che "sparisca"... aggiungi in coda a tutto la condizione (1=0) e in pratica la condizione generale terminerebbe con OR (1=0), dato che 1 è sempre diverso da 0, questa sub-condizione è sempre false e quindi è come se "non ci fosse" per te

  3. #3
    Purtroppo non basta la condizione indicata in quanto devo inserire un OR prima del Field173 essendo un ciclo viene ripetuta per n volte.

    E in questo momento viene indicato un errore, la prima condizione viene ripetuta ma non ha operatori prima e questo crea il problema.

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    forse intendi che non ha operandi? ma se è cos' puoi aggiungere un (1=0) anche all'inizio, non vedo il problema. Cmq sarebbe meglio una cosa come:

    Codice PHP:
    $or '';
    foreach (
    $elenco as $cond) {
      
    $or .= "($cond) OR ";
    };
    $or substr($or0, -4); // elimino l'ultimo " OR " 

  5. #5
    Si intendevo operandi...
    Ora la mia condizione è la seguente
    Codice PHP:
    (1=0) OR (Field173 LIKE '%$query[$i]%') OR (Field169 LIKE '%$query[$i]%') OR 
    (
    Field75 LIKE '%$query[$i]%') OR (Field170 LIKE '%$query[$i]%'
    OR (
    Field74 LIKE '%$query[$i]%') OR (Field182 LIKE '%$query[$i]%') OR (1=0
    E all'inizio della seconda parola ho questo problema
    codice:
    OR (1=0) (1=0) OR
    Ti mostro tutto il codice per farti capire bene
    Codice PHP:
    $query explode(" " $query); // $query è la stringa che ricevo
    $count count($query);
    $or ' ';
    for(
    $i=0;$i<$count;$i++){    
                    
        foreach (
    $query as $cond) { 
          
    $or .= "($cond) OR "
        }
        
    $or substr($or0, ($count-1)); // elimino l'ultimo " OR "

    $condizione .= " (1=0) OR (Field173 LIKE '%$query[$i]%') OR (Field169 LIKE '%$query[$i]%') OR (Field75 LIKE '%$query[$i]%') OR (Field170 LIKE '%$query[$i]%') OR (Field74 LIKE '%$query[$i]%') OR (Field182 LIKE '%$query[$i]%') OR (1=0)";
                echo 
    "Condizione ".$condizione."
    "
    ;
                
    $sqlQuery "SELECT * FROM xxx WHERE $condizione ORDER BY Field169 ASC "
    $rsQuery mysql_query($sqlQuery) or die(mysql_error());
    $nr mysql_num_rows($rsQuery);
            } 

  6. #6
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    $or = substr($or, 0, ($count-1)): questo è sbagliato dovrsti togliere i 4 caratteri composti dall'ultimo " OR ", quindi vi vuole "4", non c'entra la variabile $count... siccome poi tu prosegui con altre condizioni, ELIMINA QUESTA RIGA E BASTA.

  7. #7
    Eh ma in questo momento non utilizzo la variabile or nella condizione anche perchè l'output della variabile or è
    "(ciao) OR (demo) OR" e non saprei come usarla

    Intanto ti ringrazio per la gentilezza

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.