Foros del Web » Programando para Internet » PHP »

Buscador php

Estas en el tema de Buscador php en el foro de PHP en Foros del Web. Hola! Quiero hacer un buscador en la web, que busque en una tabla de la base de datos. Quiero que el buscador de tres opciones ...
  #1 (permalink)  
Antiguo 14/02/2005, 05:13
 
Fecha de Ingreso: junio-2004
Mensajes: 88
Antigüedad: 13 años, 5 meses
Puntos: 0
Buscador php

Hola!
Quiero hacer un buscador en la web, que busque en una tabla de la base de datos. Quiero que el buscador de tres opciones de busqueda: autor, titulo y descripcion. He encontrado este codigo:
<?php

$bd_servidor = "localhost";
$bd_usuario = " usuario";
$bd_contrasenya = "contrasena";
$bd_bdname = "nombre basedatos";
$bd_tabla = "tabla"; // 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);
?>
<center>

<p><h2>Introduce las palabras para la búsqueda</h2></p>
<p><form name="buscador" method="post" action="M4AApriv.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";

}

}
?>

Lo que pasa es que asi, en el formulario de busqueda me saca todos los campos de la tabla para buscar. Y no se si podria arreglarlo haciendo una tabla nueva con solo esos 3 campos, porque luego cuando me muestre cada resultado, quiero que se muestre mas informacion de otros campos de la tabla de los que no entran en la busqueda.
gracias
  #2 (permalink)  
Antiguo 14/02/2005, 09:15
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
La consulta:

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

Es la que obtiene el nombre de tus campos de tus tablas .. NO la uses si no deseas hacer eso.

Genera tu <select> desde HTML simple con el nombre de tus campos para que puedas usar el mismo resto de tu código.

Código PHP:
<select name="campo">
<
option value="campo_titulo_nombre">Titulo</option>
<
option value="campo_nombre_nombre">Nombre</option>
<
option value="etc_campo_nombre">etc</option>
</
select
Un saludo,
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 00:13.