Foros del Web » Programando para Internet » PHP »

Buscar multiples palabras en base de datos

Estas en el tema de Buscar multiples palabras en base de datos en el foro de PHP en Foros del Web. Navegando he encontrado un codigo de un buscador que esta muy bien para lo que necesito. El unico defecto que tiene es que cuando introduzco ...
  #1 (permalink)  
Antiguo 04/12/2007, 12:28
 
Fecha de Ingreso: febrero-2006
Mensajes: 103
Antigüedad: 18 años, 9 meses
Puntos: 1
Buscar multiples palabras en base de datos

Navegando he encontrado un codigo de un buscador que esta muy bien para lo que necesito. El unico defecto que tiene es que cuando introduzco una palabra encuentra resultados, en cambio si introduzco dos palabras no encuentra nada. Solo tengo un registro en la base de datos y se que ambas palabras se encuentran en el mismo, pero la idea es que pueda buscar en un registro todas las palabras que el usuario introduzca.

Llevo varias semanas trabado en esta parte y no puedo continuar hasta encontrar una solucion, si alguien me puede indicar que debo cambiar en el siguiente codigo para que encuentre todas las palabras que el usuario introduzca le estare enormemente agradecido.

Cita:
<?
// Buscador para tablas MySQL escrito en PHP. Por Alex para www.webtaller.com
// Creado el 13-10-2003


////////////////////////////
// Configuración
///////////////////////////

//modifica estas variables según tu servidor de MySQL

$bd_servidor = "localhost";

$bd_usuario = "pepito";

$bd_contrasenya = "grillo";

$bd_bdname = "mybd";

$bd_tabla = "unatabla"; // Tabla donde se harán las búsquedas

// Conexión y selección de la base de datos

$link = mysql_connect($bd_servidor,$bd_usuario,$bd_contras enya);

mysql_select_db($bd_bdname,$link);

////////////////////////////
// Formulario
///////////////////////////

?>

<center>
<p><h2>Introduce las palabras para la búsqueda</h2></p>
<p><form name="buscador" method="post" action="buscador_generico.php"><br>
Buscar en:
<select name="campo">
<?php

//Con este query obtendremos los campos por los cuales el usuario puede buscar

$result = mysql_query("SHOW FIELDS FROM `$bd_tabla`",$link);

while($row = mysql_fetch_row($result)) {

// en $row[0] tenemos el nombre del campo
// de esta manera no necesitamos conocer el nombre de los campos
// por lo que cualquier tabla nos valdrá

?>
<option value="<?php echo $row[0]; ?>"><?php echo $row[0]; ?></option>
<?php

}

?>
</select>
Palabra(s): <input type="text" name="palabra"><br>
<input type="submit" value="Enviar" name="enviar">
</form></p>
</center>

<?

////////////////////////////
// Proceso del Formulario
///////////////////////////

if(isset($_POST['enviar'])) {

// Solo se ejecuta si se ha enviado el formulario

$query = "SELECT * from $bd_tabla WHERE `{$_POST['campo']}` LIKE '%{$_POST['palabra']}%'";

$result = mysql_query($query,$link);



$found = false; // Si el query ha devuelto algo pondrá a true esta variable

while ($row = mysql_fetch_array($result)) {

$found = true;

echo "<p>";

foreach($row as $nombre_campo => $valor_campo) {

// Tenemos que mostrar todos los campos de las filas donde se haya
// encontrado la búsqueda.


if(is_int($nombre_campo)) {

continue; //Cuando hacemos mysql_fetch_array, php genera un array
// con todos los valores guardados dos veces, uno con
// índice numérico y otro con índice el nombre del campo.
// Solo nos interesa el del nombre del campo.

}

echo "<b>".$nombre_campo."</b> : ".$valor_campo."<br>";
}

echo "</p>";

}

if(!$found) {

echo "No se encontró la palabra introducida";

}

}
?>
  #2 (permalink)  
Antiguo 04/12/2007, 12:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Buscar multiples palabras en base de datos

El problema con el script que pones es que no tiene la capacidad para palabras multiples, para hacer eso necesitas enviar un Query del tipo MATCH .. AGAINST.

Te recomiendo que leas el manual de MySQL para que sepas como hacer las busquedas.

Saludos.
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.
Tema Cerrado

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 17:44.