Foros del Web » Programando para Internet » PHP »

Alguien que me tire un cable...

Estas en el tema de Alguien que me tire un cable... en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 24/09/2004, 18:59
Avatar de Agripado  
Fecha de Ingreso: mayo-2001
Ubicación: En mi casa
Mensajes: 441
Antigüedad: 16 años, 7 meses
Puntos: 1
Alguien que me tire un cable...

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!
__________________
El mundo es un mercado donde se compra honores, voluntad y conciencia
Samuel

Última edición por Agripado; 24/09/2004 a las 19:04
  #2 (permalink)  
Antiguo 25/09/2004, 02:03
Avatar de Agripado  
Fecha de Ingreso: mayo-2001
Ubicación: En mi casa
Mensajes: 441
Antigüedad: 16 años, 7 meses
Puntos: 1
encontré el error en el agregar.php era que estaba poniendo locahost en lugar de localhost, un error muy tonto!


El rollo es que si invierto el orden de
$sql = "INSERT INTO agenda (Nombre, Direccion, Telefono, DNI, Email)" .
"VALUES ('$Nombre', '$Dirección', '$Teléfono', '$Dni', '$Email')";


Que VALUES sean los valores que se recogen de los formularios

me llena la BD pero me la llena de campos en blanco solamente con el campo de DNI llenado con un cero


Saludos, espero respuesta a la pregunta sobre como evitar que salga al momento de que son mostrados los resultados de la consulta.

Saludetes
__________________
El mundo es un mercado donde se compra honores, voluntad y conciencia
Samuel

Última edición por Agripado; 25/09/2004 a las 02:10
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 05:06.