Foros del Web » Programando para Internet » PHP »

Haciendo un buscador para la empresa

Estas en el tema de Haciendo un buscador para la empresa en el foro de PHP en Foros del Web. Buenas estoy haciendo un buscador en PHP para la empresa donde hago prácticas, el script que he hecho es el siguiente: Código PHP: /* Esto es el formulario que se envía al mismo archivo con el conenido a buscar*/           ...
  #1 (permalink)  
Antiguo 03/03/2009, 06:57
 
Fecha de Ingreso: diciembre-2002
Mensajes: 49
Antigüedad: 21 años, 4 meses
Puntos: 0
Haciendo un buscador para la empresa

Buenas estoy haciendo un buscador en PHP para la empresa donde hago prácticas, el script que he hecho es el siguiente:

Código PHP:
/* Esto es el formulario que se envía al mismo archivo con el conenido a buscar*/
         
echo '<FORM METHOD=POST ACTION="busca.php?action=encontrar">
          Buscar: <INPUT TYPE="text" NAME="busqueda">
          </FORM>'
;

  
    if(
$action == "encontrar") {
/*esto pilla el contenido, y lo mete en un array con todas las palabras a buscar*/
        
$busqueda explode(" ",$busqueda);
        
$palabra;
        
$j 0;
        for(
$i 0;$i count($busqueda);$i++) {
            if(
$busqueda[$i] != "") {
                
$palabra[$j] = $busqueda[$i];
                
$j++;
            }
        }
        
        
$conn mysql_connect("localhost","root","");
        
mysql_select_db("tabla",$conn);
        
/*Esto es un select, que cuantas más palabras hay en el array más concatena*/
        
$link "SELECT articulos.id,nombre,id_articulo,descripcion1 FROM articulos,art_texto WHERE articulos.id = id_articulo AND (";
        for(
$i 0;$i count($palabra);$i++) {
            if(
$i == 0$link .= "nombre LIKE '%$palabra[$i]%' OR descripcion1 LIKE '%$palabra[$i]%'";
            else 
$link .= "AND nombre LIKE '%$palabra[$i]%' OR descripcion1 LIKE '%$palabra[$i]%'";
        }
        
$link .= ")";
        
$result mysql_query($link);

/* y aquí lo muestra*/        
        
while($row mysql_fetch_array($result)) {
            echo 
$row['id_articulo']." : ".$row['nombre']."<br />";
        }
        
mysql_close($conn);
    } 
El problema es que si busco ACER ASP me muestra una cosa, y si busco ASP ACER me muestra otras, cuando debería mostrar lo mismo. Alguna idea?
  #2 (permalink)  
Antiguo 03/03/2009, 07:07
 
Fecha de Ingreso: enero-2008
Mensajes: 52
Antigüedad: 16 años, 3 meses
Puntos: 2
Respuesta: Haciendo un buscador para la empresa

Tendrias que poner parentesis en las querys del bucle

Código PHP:
if($i == 0$link .= "(nombre LIKE '%$palabra[$i]%' OR descripcion1 LIKE '%$palabra[$i]%')";
else 
$link .= "AND (nombre LIKE '%$palabra[$i]%' OR descripcion1 LIKE '%$palabra[$i]%')"
Combinar AND y OR sin parentesis trae estas cosas, el AND tiene mas prioridad que el OR es como la multiplicacion y la suma

a * b + c * d + e
no es lo mismo que
a * (b + c) * (d + e)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:24.