Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/09/2010, 18:45
jotaperez
 
Fecha de Ingreso: noviembre-2007
Mensajes: 69
Antigüedad: 16 años, 11 meses
Puntos: 0
Es posible esto?

Amigos son muy nuevo en esto y todavia no le pesco la vuelta. Encontre un script de un buscador en php y mysql en la web que me funciono bien. El tema es que originalmente el script posee un formulario donde selecciona en forma dinamica en el primer select los campos de la tabla; en el segundo campo se coloca la palabra clave y al buscar arroja todos los datos que coincidieran.

Quiero adaptarlo para un uso particular. Lo que hice es configurar el primer select para que me llame todos los valores de la primer columna y también borré el campo donde se colocaba la palabra clave reemplazandolo por otro select que me llame todos los datos contenidos en la segunda columna de la tabla.

De esta manera si selecciono un valor del primer select (correspondiente a todos los valores cargados en la primer columna) y un valor del segundo select (correspondiente a todos los valores cargados en la segunda columna)me tendría que taer todos los resultados que coincidan con esta combinación, o sea todos los otros valores de las demas columnas (9 en total).

El tema es que estoy haciendo mal las cosa ya que no me funciona. Me tira el error que no hay un campo con el nombre seleccionado. Pensando un poco me doy cuenta que el script me toma el nombre del valor del campo como nombre del campo y por eso me tira error.

Les paso el código que modifique:

Código PHP:
<?

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

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

$bd_servidor "localhost";

$bd_usuario "root";

$bd_contrasenya "";

$bd_bdname "";

$bd_tabla "ACCESORIOS"// 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_contrasenya);

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("SELECT DISTINCT PRODUCTO 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>
<select name="firma">
<?php

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

$result mysql_query("SELECT DISTINCT FIRMA 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>

<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['firma']}%'"

$result mysql_query($query,$link);

 
echo 
mysql_error(); 


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

}

}
?>
Les agradeceré mucho su ayuda.