PHP - Filtro en una tabla

 
Vista:
sin imagen de perfil

Filtro en una tabla

Publicado por mendizalea (47 intervenciones) el 08/05/2013 19:49:23
Buenas tardes,

Tengo 2 tablas en la base de datos. En una de ellas estarían los participantes y en la otra tabla todas las categorias.

Al realizar la consulta en la tabla me muestra todos los registros y lo que quiero es que mediante una combo-box tengan la opcion de elegir una categoria concreta para poder realizar el filtro. El combo-box tengo creado, lo que no se como tendria que realizar para que al seleccionar una de las opciones aparezcan solo los registros de la categoria seleccionada.

Es sencillo de hacer? como podria realizarlo?

Muchas gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Filtro en una tabla

Publicado por Jon (5 intervenciones) el 09/05/2013 09:26:35
Hola mendizalea,

En base a tu pregunta, imagino que las tablas ya estarán relacionadas y que sólo te falta hacer la consulta adecuada.

De ser así, es algo bastante simple.
El combobox en el que seleccionas la categoría, debe enviar por ejemplo mediante POST en un formulario, la variable que deseas que coincida y en con ella hacer la consulta.

Espero explicarme mejor con este ejemplo.

Desde esta página seleccionamos la categoría:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html>
<head>
 
</head>
<body>
<form id="form1" action="consulto.php" method="post">
<SELECT NAME="cate" SIZE=1 onChange="">
<OPTION VALUE="nombreCategoria1">categoría 1</OPTION>
<OPTION VALUE="nombreCategoria2">categoría 2</OPTION>
</SELECT>
 
<input type="submit" value="Buscar"/>
</form>
 
 
</body>
 
</html>


Y en esta lo tratamos y mostramos el resultado.
consulto.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
#Conectamos con MySQL (en este caso es para un localhost)
$conexion = mysql_connect("localhost","root","")
or die ("Fallo en el establecimiento de la conexión");
 
#Seleccionamos la base de datos a utilizar
mysql_select_db("pruebas")
or die("Error en la selección de la base de datos");
 
#Guardamos la variable enviada por POST#
$cat=$_POST['cate'];
 
$result = mysql_query ("select * from productos where categoria = '$cat'" )
or die("Error en la consulta SQL");
?>
 
<table>
 
<?php
#Mostramos los resultados obtenidos dentro de una tabla
while( $row = mysql_fetch_array ( $result )) {
   echo "<tr>";
   echo "<td>".$row["id"]."</td>";
   echo "<td>".$row["nombre"]."</td>";
   echo "<tr>";
}
?>
</table>
<?php
#Cerramos la conexión con la base de datos
mysql_close($conexion);
?>
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Filtro en una tabla

Publicado por mendizalea (47 intervenciones) el 09/05/2013 18:27:11
Muchas gracias por su respuesta. Puede que no me haya explicado del todo bien. Lo que me comentas esta bien pero no me vale para lo que quiero realizar. Lo que quiero realizar es eso, pero todo en la misma hoja. Para que nos entendamos yo tengo la siguinte tabla:

COMBO-BOX
PARTICIPANTE-----------CATEGORIA
participante 1--------------cat1
participante 2--------------cat2
participante 3--------------cat3
participante 4--------------cat2
participante 5--------------cat2
participante 6--------------cat3
participante 7--------------cat1
participante 8--------------cat2

Lo que quiero es que arriba de la tabla salga un combo-box y en el momento que el usuario seleccione cat2 la tabla de actualice y en este caso tendria que salir lo siguiente:

COMBO-BOX
PARTICIPANTE-----------CATEGORIA
participante 2--------------cat2
participante 4--------------cat2
participante 5--------------cat2
participante 8--------------cat2

No se si se entiendo lo que quiero decir.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtro en una tabla

Publicado por Jon (5 intervenciones) el 10/05/2013 09:05:38
Ahora si lo entiendo.
En base a eso, se me ocurren un par de posibles soluciones. Te propongo la que se vale únicamente del php, espero que te sirva:

Usando sólo esta página, se llama a si misma enviando la variable del formulario. Además he implementado algunas lineas para que el combobox deje seleccionada la opción que se ha elegido.

consulto.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
<html>
<?php
error_reporting(E_ALL & ~E_NOTICE);
#Conectamos con MySQL (en este caso es para un localhost)
$conexion = mysql_connect("localhost","root","")
or die ("Fallo en el establecimiento de la conexión");
 
#Seleccionamos la base de datos a utilizar
mysql_select_db("pruebas")
or die("Error en la selección de la base de datos");
?>
</head>
<body>
<form id="form1" action="consulto.php" method="post">
<SELECT NAME="cate" SIZE=1 onChange="">
<OPTION <?php if(!isset($_POST['cate']) || strcmp($_POST['cate'], 'Todos')==0){echo "selected "; } ?> VALUE="Todos">Todas las categorías</OPTION>
<OPTION <?php if(strcmp($_POST['cate'], 'nombreCategoria1')==0){ echo "selected "; } ?>VALUE="nombreCategoria1">categoría 1</OPTION>
<OPTION <?php if(strcmp($_POST['cate'], 'nombreCategoria2')==0){ echo "selected "; } ?>VALUE="nombreCategoria2">categoría 2</OPTION>
</SELECT>
<input type="submit" value="Buscar"/>
</form>
<?php
#Guardamos la variable enviada por POST#
if(!isset($_POST['cate'])|| strcmp($_POST['cate'], 'todas')==0 ){//Si aún no se ha usado el combo box o se ha seleccionado , muestra todos los resultados
$result = mysql_query ("select * from productos")
or die("Error en la consulta SQL");
}
else{  //Si se ha seleccionado alguna de las demás categorías, hace el filtro.
$cat=$_POST['cate'];
$result = mysql_query ("select * from productos where categoria = '$cat'" )
or die("Error en la consulta SQL");
}
?>
 
<table>
 
<?php
#Mostramos los resultados obtenidos dentro de una tabla
while( $row = mysql_fetch_array ( $result )) {
   echo "<tr>";
   echo "<td>".$row["id"]."</td>";
   echo "<td>".$row["nombre"]."</td>";
   echo "<tr>";
}
?>
</table>
</body>
 
</html>
<?php
#Cerramos la conexión con la base de datos
mysql_close($conexion);
?>


Un saludo y para cualquier cosa, no dudes en preguntar!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Filtro de fecha en una tabla

Publicado por Fernando (2 intervenciones) el 14/11/2013 21:22:24
que tal, mira eh visto tu filtro en la tabla y funciona de maravilla

pero por ejemplo:

si necesito una consulta por fechas

no se si me puedas ayudar, espero tu pronta respuesta, asi como lo hiciste en el 2do ejemplo.
Que te aparesca todo en una misma pagina, te lo agradeceria mucho.

salu2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar