Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    ricerca con -- like '%xxx%-- valori passati da php a mysql

    ciao a tutti come posso fare a risolvere questo problema?

    ho un campo di una tabella che si chiama keywords contenente ad esempio:

    +---------------------------+
    | keywords |
    +---------------------------+
    | punto jtd 1400 fiat usato |
    +---------------------------+

    ed ho scritto questa query:

    "select * from automobili where keywords like '%$_POST stringa_ricerca]%'"
    ed inserendo come stringa di ricerca:
    punto
    o
    jtd
    o
    1400
    o
    ...

    ma se inserisco:
    punto 1400

    non mi trova nulla

    come posso risolvere?

  2. #2
    IO USo una cosa di sto tipo e funziona :
    Codice PHP:
    <?
            
    IF($_POST[cerca]!=""){
    if(
    strlen($_POST[cerca])<4){ECHO"<font color=red>PAROLA TROPPO CORTA MINIMO 4 CARATTERI</font><TITLE>Errore</title>";
     echo 
    "
     <title>Cerca la ricetta</title>

             <form name=form1 method=post action=>

            

     [b]Cerca:[/b]

              <input name=cerca type=text id=cerca size=20>
              <input type=submit name=Submit value=Invia class=button>

              <label>
              <input name=operator type=radio value=AND checked>
              Parola o frase esatta (<font size=1mm style=Verdana>[b]consigliato</font>[/b])</label>
              

              <label>
              <input type=radio name=operator value=OR>
              Entrambe le parole</label>
              

            </p>
          </form>"
    ;

    }

    ELSE{
    $minchar=3//numero minimo di caratteri
    if($_POST[operator]=="AND"$like="1";
    else if(
    $_POST[operator]=="OR"$like="0";
    else {
    $_POST[operator]="OR";
    $like="0";
    }
    //$_POST[cerca]="parole da cercare";
    $array_cerca=explode(' ',$_POST[cerca]);
    foreach(
    $array_cerca as $t){
    if(
    strlen($t)>=$minchar$like.=$_POST[operator] TUOCAMPO LIKE '%$t%'";
    }
    $userquery $_POST['cerca'];
    include 
    "config.php";
    $db mysql_connect("$server""$username""$password");
    $query ="SELECT *  FROM tabella WHERE ".$like."order by name asc";

    $exec_res mysql_query($query) Or DIE (mysql_error());
    poi da qui inizi il while e via!!!!

  3. #3
    non capisco l'uso di $_POST['operator']

  4. #4
    serve per fare una ricerca booleana

    esempio:

    con OR cerco tutte le frasi contenenti o una parola o un'altra
    con AND cerco tutte le frasi contenenti entrambe le parole

    come in un if fai:

    if(condizione1 || condizione2) basta che una delle 2 è soddisfatta si esegue il then

    if(condizione1 && condizione2) solo se entrambe le condizioni sono soddisfatte si esegue il then



  5. #5
    ok ma t lo metti prima...


    cioè ti verrebbe tipo:

    SELECT * FROM tabella WHERE OR username LIKE '%bb%' OR username LIKE'%aa%'


    no?

  6. #6
    ti funzion a ???

  7. #7
    ora nn ho provato, sto uscendo pazzo con un'altra query un po' più complessa...anzi se ci dai un'occhiata! (è l'unico thread aperto da me)


    in realtà sono esattamente al passo precedente la ricerca usando LIKE...


    cmq io pensavo di farlo così il codice:

    Codice PHP:
    $array_tmp explode(' '$_POST['query']);
    //supponiamo che sia già di default con OR
    foreach($array_tmp as $value){
    $array_like[] = 'testo LIKE \'%'.$value.'%\'';
    }

    /
    e poi li uniamo con implode
    $str_like 
    implode (' OR ',$array_like); 

  8. #8
    ho modificato quel codice cosi:

    codice:
    $array_cerca=explode(' ',$_POST[stringa_ricerca]); 
    		if(count($array_cerca)==1)
    			$query="select * from automobili where keywords like '%$_POST[stringa_ricerca]%'";
    		elseif(count($array_cerca)>1) {
    			$contatore=1;
    			foreach($array_cerca as $t) {
    				$query="select * from automobili where ";
    				if($contatore==count($array_cerca))
    					$like="keywords like '%$t%'";
    				else
    					$like="keywords like '%$t%' AND "; 
    			$query = $query.$like;
    			$contatore++;
    			} 
    		}
    
    		$res = mysql_query($query) or showerror();
    e funziona
    tnx a tutti!

    PS il mio codice usa l'AND come ricerca ma si potrebbe facilmente modificare per fare OR o aggiungere un link tipo google
    (alcuni risultati sono stasti omessi cliccare qui per visualizzarli tutti...)

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.