Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/07/2013, 09:49
franjgg
 
Fecha de Ingreso: marzo-2007
Mensajes: 751
Antigüedad: 17 años, 2 meses
Puntos: 4
Busquedas modificado cada palabra al plural

Hola amigos que tal,

Vereis, tengo una funcion que pasa al plurar las palabras la cosa es que necesito que si alguien busca por ejemplo "ropa infantil niño"

1º Haga una busqueda con "ropa infantil niño"
2º haga una busqueda con "ropas infantil niño"
3º haga una busqueda con "ropas infantiles niño"
4º haga una busqueda con "ropas infantiles niños"

La funcion que pasa al plurar es esta ademas de quitar las preposiciones:

Código PHP:
$palabras =  utf8_decode($s);

    
$cad $palabras;
    
$cad=explode(' ',$cad);



$i=0;
$c=0;


while (
$i count ($cad) ) {



$req "Select descripcion FROM nopalabras";

$x=0;


$query mysql_query($req);

$control '0';

while(
$row mysql_fetch_array($query)){



    if(
strtolower($row['descripcion']) == strtolower($cad[$i])){

        
$control '1';     

    }

 
$e =' '.strtolower($row['descripcion']).' ';
 
$ss str_ireplace($e" ",$ss); 
}


 





$cad[$i] = strtolower($cad[$i]);

echo 
$singular[$i] = strtolower($cad[$i]);

if(
$control != '1' && $x <= '0'){

 
    if(
substr($cad[$i], -1) == strtolower('a') OR substr($cad[$i], -1) == 'e' OR substr($cad[$i], -1) == strtolower('o')){

    
$cad[$i]= $cad[$i].'s'

    }elseif(
substr($cad[$i], -1) == strtolower('i') OR substr($cad[$i], -1) == strtolower('u')){

    
$cad[$i]= $cad[$i].'es';
   
    }elseif(
substr($cad[$i], -1) == strtolower('z')){

    
$cad[$i] = $cad[$i] = substr($cad[$i], 0, -1).'ces';

    }elseif(
substr($cad[$i], -1) == strtolower('y')){

        if(
$cad[$i] == 'jersey'){

            
$cad[$i] = 'jerseis';

        }else{

            
$cad[$i] = $cad[$i].'es';
        }

    }elseif(
substr($cad[$i], -1) == strtolower('s') OR substr($cad[$i], -1) == strtolower('x')){


        
$cad[$i] = $cad[$i];


    }else{

        
$cad[$i] = $cad[$i].'es';

    }

    
$cad[$i] = utf8_decode($cad[$i]);

        
$consulta_fila "select e.id, e.descuento, md.logo, m.imagen, md.nombre as nombre_general, md.web, md.email_cliente as email_misdatos, ed.id as id_direccion, ed.nombre as nombre_direccion, ed.direccion, ed.telefono, ed.id_municipios, ed.id_provincias, ed.cp, ed.email as email_direccion from empresas e left join micrositio m on e.id = m.id_empresas left join misdatos md on e.id_mis_datos = md.id left join empresas_direcciones ed on (ed.id_empresas = e.id and ed.id_provincias =14) where e.id in ((select distinct(e1.id) from empresas e1, empresas_listas_articulos ela, empresas_direcciones ed, empresas_listas el, listas l where ela.id_empresas = e1.id and ed.id_empresas = e1.id and el.id = ela.id_empresas_listas and md.id_categorias <> 14 and el.id_listas = l.id and l.activo = 1 and el.activo = 1  and ed.id_provincias =14 and (ela.descripcion like ' ".$singular[$i]." %' or ela.descripcion like ' ".$cad[$i]." %')union select distinct(eln.id_empresas) from empresas_listas_nombres eln, misdatos md where eln.id_empresas = e.id and e.id_mis_datos = md.id and md.id_categorias <> 14  and ((eln.descripcion like '% ".$singular[$i]." %' or eln.descripcion  like '% ".$singular[$i]." %')  or (eln.descripcion like '% ".$singular[$i]." %' or eln.descripcion like '% ".$cad[$i]." %')) and eln.id_provincias =14 and eln.activo=1))"
    
$c++;
    
$x++;
}   
$i++;

La cosa es que tal como esta, lo que hace es:

2º haga una busqueda con "ropas"
3º haga una busqueda con "infantiles"
4º haga una busqueda con "niños"

A ver si alguien sabe como podria hacer esto

Un saludo amigos!!