Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/08/2010, 18:04
Dav36id
 
Fecha de Ingreso: enero-2010
Mensajes: 20
Antigüedad: 14 años, 4 meses
Puntos: 0
Una pequeña cuestión de este script de php (búsqueda en una MySQL)

Hola comunidad de forosdelweb, les cuento:
Me he bajado el siguiente script de www.webtaller.com de un buscador en php de una bd MySQL. Me funciona, pero no quiero que te dé a elegir entre todas las categorias de mi base de datos antes de apretar el botón "buscar", quiero que haga una búsqueda general. Además desearia que solo muestre dos campos, "city" y "description", que están en mi tabla.

El script:


Código PHP:
<?
// 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,$&#8230;

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";

}

}
?>
De momento sale algo así:

[IMG][URL=http://img541.imageshack.us/i/fosdelew.jpg/][/IMG]

Muchas gracias!

Última edición por Dav36id; 13/08/2010 a las 18:09 Razón: La imagen no se visualiza bien