Hola luego de dias de intentar hacer un buscador para uan base de datos conseguí esto:
<?
//modifica estas variables según tu servidor de MySQL
$bd_servidor = "localhost";
$bd_usuario = "root";
$bd_contraseña = "xxxxxxx";
$bd_bdname = "personal";
$bd_tabla = "agenda"; // 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 eña);
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="index.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 "<font face='verdana' size='1' color='#000000'><b>".$nombre_campo."</b>: ".$valor_campo."<br></font>";
}
echo "</p>";
}
if(!$found) {
echo "No se encontró la palabra introducida";
}
}
?>
Bien me permite buscar por campos en la tabla agenda de mi base de datos llamada personal, que tiene los campos:
ID (este lo pone por defecto),
Nombre
Dirección
Teléfono
DNI
Email
El código de volcado a la BD es este
CREATE TABLE `agenda` (
`id` int(11) NOT NULL auto_increment,
`Nombre` char(50) default NULL,
`Dirección` char(100) default NULL,
`Teléfono` char(100) default NULL,
`Dni` decimal(10,0) NOT NULL default '0',
`Email` char(100) default NULL,
KEY `id` (`id`)
) TYPE=MyISAM;
que bonito, se me quitó un poco el dolor de cabeza, bien ahora estuve viendo que en la página de búsqueda me muestra el campo id en el desplegable que sale, yo solo quiero que se muestren todos los demás campos excepto ID
Ya luego el hacer que los resultados salgan formateados en una tabla con colores y monos volando... no es cosa del otro mundo.
Espero me den una manito con eso de que no quiero que salga el campo ID,
Por cierto puse el código para que lo tomen a ver si les sirve.
Ahora
Para agregar registros a mi BD idee esto
Página con campos a agregar:
<html>
<body>
<form method="post" action="agregar.php">
Nombre : <input type="Text" name="Nombre"><br>
Dirección : <input type="Text" name="Direccion"><br>
Teléfono : <input type="Text" name="Telefono"><br>
DNI : <input type="Text" name="DNI"><br>
Email : <input type="Text" name="Email"><br>
<input type="Submit" name="enviar" value="Agregar">
</form>
</body>
</html>
El script que procesa ese formulario
<html>
<body>
<?php
// Procesar formulario
$link = mysql_connect("locahost", "root", "xxxxxxx");
mysql_select_db("personal", $link);
$sql = "INSERT INTO agenda (Nombre, Dirección, Teléfono, Dni, Email) " . " VALUES ('$Nombre', '$Direccion', '$Telefono', '$DNI', '$Email') ";
$result = mysql_query($sql);
echo "El producto ha sido agregado\n";
?>
</body>
</html>
Existe algún error ahí?
Mi agradecimiento por anticipado!