Problemas con un buscador

Hola, soy novato en esto del php, y me gustaría que me ayudaras, estoy intentando crear un buscador, y tengo unos cuantos problemillas.Te paso a explicar:
El buscador tiene tres select: el primero selecciona la tabla donde hay que buscar, y esto en principio va bien, el segundo y el tercer select, (que son sección y provincia), son lo que hay que buscar en los campos, de tal forma que busque los datos seleccionados en sección y provincia, respectivamente, y los enseñe en pantalla.
En principio la búsqueda la hace bien, es decir, salen los datos en pantalla, pero los resultados los enseña en pantalla, todos seguidos, entonces, quería que salieran los datos presentados en una página y con mejor presencia, en una tabla o algo así.
También quisiera saber como mostrar los resultados en otra página o frame.
Y otro problema que tengo es que muestra todos los campos, y me interesa que muestre solo algunos de estos campos.
Este es el php:
<?
$tabla= $_POST['quebusca'] ;
$seccion = $_POST['seccion'];
$provincia = $_POST['provincia'];
$host_db = "localhost"; // Aquí pones el servidor mysql
$usuario_db = "root"; // Aquí el nombre de usuario de la base de datos
$pass_db = "mi contraseña"; // La contraseña de la base de datos
$base_db = "mi base de datos"; // El Nombre de la base de datos, que previamente habiamos definido
$conexion = mysql_connect($host_db, $usuario_db, $pass_db);
mysql_select_db($base_db,$conexion);
$select= "SELECT * from $tabla WHERE seccion LIKE '%$seccion%' and provincia LIKE '%$provincia%' ORDER BY id DESC";
$result = mysql_query($select,$conexion) or die(mysql_error());
$found = false; // Si el query ha devuelto algo pondrá a true esta variable
while ($row = mysql_fetch_array($result)) {
$found = true;
foreach ($row as $resultado=>$busqueda){
// Tenemos que mostrar todos los campos de las filas donde se haya
// encontrado la búsqueda.
if(is_int($resultado)) {
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>".$busqueda."</b>" ;
}
echo "
<p>";"</p>
" ;}
if(!$found)
{echo "No se encontraron resultados para la búsqueda introducida";}
mysql_close($conexion);
?>
Creo que te lo he puesto un poco difícil, ¿pero me podías ayudar?, muchas gracias.

4 Respuestas

Respuesta
1
Esto que me comentas lo hace el Dreamweaver casi automáticamente, te paso un ejemplo y lo aplicas al tuyo. Para que vaya a otra página, simplemente en el ACTION de tu FORM donde seleccionas los 3 desplegables, dile que el destino es la página xxxx.php, donde ubicarás tu código de mostrar los datos:
<table width="100%" border="0">
<tr >
<td>Fecha Alta</td>
<td>Persona</td>
<td>ESTADO</td>
<td>Móvil</td>
<td> Factura</td>
<td> </td>
</tr>
<?php do { ?>
<tr >
<td></td>
<td><?php echo $row['strPersonaPedido']; ?></td>
<td><?php echo $row['intEstado']); ?></td>
<td><?php echo $row['strMovil']; ?></td>
<td><?php echo $row['intFactura']; ?></td>
<td></td>
</tr>
<?php } while ($row = mysql_fetch_assoc($ListaDatos)); ?>
</table>
Aplçicalo a tu ejemplo, esto genera una tabla dinámica presentando los datos que tu le pongas.
Respuesta
1
Ufff... pues mira, lo de los campos, se soluciona diciéndole en la cla+usila de SQL los campos que quieres que te regrese, por ejemplo:
$select= "SELECT nombre, apellido, direccion from $tabla WHERE seccion LIKE '%$seccion%' and provincia LIKE '%$provincia%' ORDER BY id DESC";
En cuanto a lo de la paginación... ufff pues es un rollo... je je, primero, en tu consulta debes de poner límites, que se ponen:
SELECT nombre, apellido, direccion from $tabla WHERE seccion LIKE '%$seccion%' and provincia LIKE '%$provincia%' ORDER BY id DESC LIMIT 0,30
Y eso te manda los resultados del 0 al 30, entonces, la cosa sería generar un link que te mandara el límite superior anterior, para saber hasta donde mostrar los datos, y sustituirlo por los límites que tienes al principio.
Si no quieres hacer otro archivo con todo esto, puedes redireccionar a la misma página y mandar por la URL el valor del próximo límite en la paginación, por ejemplo
<a href="pagina.php?lim=<?php $limite=$_GET['lim']+=30; echo $limite;?>">siguiente</a>
y agarrar ese límite en la clausula de SQL:
mysql_query("SELECT nombre, apellido, direccion from $tabla WHERE seccion LIKE '%$seccion%' and provincia LIKE '%$provincia%' ORDER BY id DESC LIMIT ".$_GET['lim']-30.",".$_GET['lim']);
Espero no haberte reburujado más... si no, busca un tutorial de "paginación en PHP"
Respuesta
1
A ver..
1. No saques los dats de la página a menos que sea necesario imaginate un google con otra página para ver resultados...
2.
Si es solo un campo...
<table>
el for inicia aqui..
<tr>
<td>
echo "<b>".$busqueda."</b>" ;
</td>
</tr>
el for lo cierras aqui...
</table>
Respuesta
1
Pero los resultados los enseña en pantalla, todos seguidos, entonces, quería que salieran los datos presentados en una página y con mejor presencia, en una tabla o algo así.
Eso va a ser cosa de maquetación y html, tendrás que saber cómo lo quieres mostrar para poder mostrarlo.
También quisiera saber como mostrar los resultados en otra página o frame.
Los iframe están desfasados y al menos yo (soy programadora web) no los uso en absoluto. Si quieres mostrarlos en otra página, lo que debes hacer es que al enviar el formulario por primera vez, lo mandes a un popup y ahí mostrar los datos.
Y otro problema que tengo es que muestra todos los campos, y me interesa que muestre solo algunos de estos campos.
No lo entiendo. ¿Qué quieres que te muestre y qué te está mostrando?
Hola gulphora, perdona pero creo que no me he explicado bien, lo que quiero es que los resultados que me salen, que salgan mejor presentados con color de fondo, que pueda presentarlos en una tabla, y repartirlos de una forma presentable, ya que como te digo los resultados me salen todos seguidos unos a continuación de otros, en negro sobre fondo blanco.
Por otro lado cuando hago la búsqueda me salen todos los campos que hay en la tabla de la base de datos, y algunos no me interesa que salgan en pantalla, es decir si hago una consulta sobre un cliente me sale:nombre, contraseña, dirección, teléfono, etc. y no me interesa que se vea por ejemplo la contraseña. Esto creo que se podría solucionar de la siguiente forma:
$select= "SELECT (solo los campos que me interesan) from $tabla WHERE seccion LIKE '%$seccion%' and provincia LIKE '%$provincia%' ORDER BY id DESC";
El problema es que si lo pongo así, me da un error ya que con $tabla selecciono la tabla a consultar, y cada tabla contiene campos distintos.
No sé si te he aclarado un poco el tema, muchas gracias por tu ayuda.
$select= "SELECT campo1, campo2, campo3, campo4 from $tabla WHERE seccion LIKE '%$seccion%' and provincia LIKE '%$provincia%' ORDER BY id DESC";
Si quieres sacar los campos nombre, apellidos y dirección ( o los que tengas) deberías poner: "select nombre, apellidos, dirección from $tabla WHERE..."
Con respecto a la colocación de los campos, si no tienes ningún conocimiento de html, mejor echa un vistazo a un manual, ya que te dejará las cosas mucho más claras que si yo te digo directamente lo que tienes que poner.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas