MySQL - Boton Buscar PHP+MYSQL

 
Vista:
sin imagen de perfil

Boton Buscar PHP+MYSQL

Publicado por agg_7 (2 intervenciones) el 09/07/2016 01:11:45
Buenas, tengo hecho un proyecto de base de datos con php. Lo único que me faltaría es una pequeña cosa en el buscar. La base de datos se compone de 3 tablas (usuario, mes y um). Usuario como clave primaria tengo IdUsuario, para mes IdMes y en um es la concatenacíon de las dos tablas anteriores y como claves tengo IdUsuario y IdMes. Sé como en el botón buscar mostrar las personas por su nombre y demás. Pero no sé como hacer para poder buscar por el Mes. La aplicacón es para tener unos usuarios, que paguen cuotas mensuales y registrar los usuarios y los meses que han pagado.
Código:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
	//index.php
 
	//BUSCAR
	// se ha hecho click en el botón Buscar enviando el formulario
	 if (isset($_POST['buscar']) && $_POST['buscar'] == 'Buscar')
	 {
		 // recoger los datos del formulario y validar
		 $texto = trim($_POST['texto']);
		 if (empty($texto))
		 {
			$error = "Introduzca texto";
			include "form/form_buscar.php";
			exit();
		 }
		 // datos correctos, filtramos y creamos consulta SQL
		 $texto = mysqli_real_escape_string($conexion, $texto);
		 $sql = "SELECT nombre, categoria, dni, fnac
		 FROM usuario
		 WHERE nombre LIKE '%$texto%' OR categoria LIKE '%$texto%' 
		 OR dni LIKE '%$texto%' OR fnac LIKE '%$texto%'";
 
 
		 $resul = mysqli_query($conexion, $sql);
		 if (!$resul) // ha ocurrido un error
		 {
			$error = "Error en consulta - ".mysqli_error($conexion);
			include "vistas/error.php";
			exit();
		 }
		 $usuario = array();
		 while ($fila = mysqli_fetch_array($resul))
		 {
			 $usuario[] = $fila;
		 }
		 include "form/form_buscar.php";
		 exit();
 
//form_buscar.php
 
<form id='form' action="?" method="post">
<div id='datos'>
	<h3>Se mostraran las personas que contengan en su nombre,
	categoria, dni y fecha de nacimiento.
	</h3>
 
	<label>Texto a buscar: </label>
		<input type="text" name="texto" value ="<?php if (isset($texto))echo $texto ?>"/>
		<span class="error"><?php if (isset($error)) echo $error ?></span><br />
 
<?php
 
	if (isset($usuario)) // si se inicializa $usuario
	{
		foreach ($usuario as $usu)
		{
			 echo "<b>Nombre: </b>".$usu['nombre']."</br> ";
			 echo "<b>Categoria: </b>".$usu['categoria']."</br>";
			 echo "<b>DNI: </b>".$usu['dni']."</br>";
			 echo "<b>Fecha Nacimiento: </b>".$usu['fnac']."</br><hr/></br>";
		}
	}
 
	?>
 
</div>
</form>
Así lo tengo ahora, sin saber como agregar para que busque por Mes (meses pagados) y para que salga en la información el mes.

Captura

Gracias de antemano.
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
Imágen de perfil de xve
Val: 796
Oro
Ha mantenido su posición en MySQL (en relación al último mes)
Gráfica de MySQL

Boton Buscar PHP+MYSQL

Publicado por xve (1151 intervenciones) el 09/07/2016 09:38:12
Hola, segun entiendo, lo que tienes que hacer es vincular las tres tablas para poder realizar la busqueda por cualquiera de ellas... algo así:
1
2
3
4
5
6
7
$sql = "SELECT u.nombre, u.categoria, u.dni, u.fnac, m.dia
	FROM usuario u
	LEFT JOIN um ON u.idUsuario=um.idUsuario
	LEFT JOIN mes m ON m.idMes=um.idMes
	WHERE u.nombre LIKE '%$texto%' OR u.categoria LIKE '%$texto%' 
	OR u.dni LIKE '%$texto%' OR u.fnac LIKE '%$texto%'
	OR m.dia=25";

En esta consulta, he vinculado las tres tablas, y hago búsquedas en la tabla mes por el campo dia (que me lo he inventado)

Es esto lo que buscabas?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Boton Buscar PHP+MYSQL

Publicado por agg_7 (2 intervenciones) el 09/07/2016 10:54:19
Buenos dias, es perfecto muchas gracias me ha servido de gran ayuda. Ahora ya tengo para que me busque por todo lo que quiero uniendo las tres tablas, ya que yo cometía un fallo en el left join. Ahora lo único que me faltaría sería poder mostrar cuando busco a algun usuario, sus meses pagados. Ya que al poner los meses en un array, sigue sin mostrármelos. Lo siento mi desconocimiento, ya que soy bastante nuevo.

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
 //continuacion despues de sentencia mysql, index.php
 
		 // echo $sql;
		 $resul = mysqli_query($conexion, $sql);
		 if (!$resul) // ha ocurrido un error
		 {
			$error = "Error en consulta - ".mysqli_error($conexion);
			include "vistas/error.php";
			exit();
		 }
 
		$usuario = array();
		 while ($fila = mysqli_fetch_array($resul))
		 {
			$usuario[] = $fila;
		 }
 
		 $mes = array();
		 while ($fila = mysqli_fetch_array($resul))
		 {
			$mes[] = $fila;
		 }
 
		 include "form/form_buscar.php";
		 exit();
 
// continuacion en el php de form_buscar.php
 
<?php
 
	if (isset($usuario)) // si se inicializa $usuario
	{
		foreach ($usuario as $usu)
		{
			 echo "<b>Nombre: </b>".$usu['nombre']."</br> ";
			 echo "<b>Categoria: </b>".$usu['categoria']."</br>";
			 echo "<b>DNI: </b>".$usu['dni']."</br>";
			 echo "<b>Fecha Nacimiento: </b>".$usu['fnac']."</br><hr/></br>";
		}
	}
 
	if (isset($mes)) // si se inicializa $mes
	{
		foreach ($mesas $me)
		{
			 echo "<b>Meses pagados: </b>".$me['NomMes']."</br> ";
		}
	}
 
	?>
Falta que muestre con el form_buscar.php los meses pagados:


Sin-titulo

Gracias
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