MySQL - Problema con consulta JOIN en PHP

   
Vista:

Problema con consulta JOIN en PHP

Publicado por José (5 intervenciones) el 06/11/2013 15:41:33
Hola, os detallaré mi problema. Tengo 2 tablas (EMPLEADOS y EMPRESAS). Se supone que a través de un código de empresa (cod_empr) puesto en un formulario, se mostrarán todos los empleados de la empresa con la que comparte la variable junto con el nombre de la empresa en una tabla.

El problema es que los datos que se escriben el el form no son tomados por el query. Sin embargo, hice una prueba para probar el FORM, editando un valor en la base de datos para que el cod_empr de uno de los registros fuera nulo y al realizar la búsqueda, se ejecuta con normalidad y se muestran los datos como deberían, así que solo pasa cuando se igresa un valor diferente de nulo en el formulario. Les dejo la consulta para que me expliquen cual es el error.

Gracias de antemano

Consulta:

$sql = "SELECT empleados.*,empresas.nombre_empr FROM empleados INNER JOIN empresas USING (cod_empr) WHERE empleados.cod_empr ='".$_POST['cod_empr']."'";
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

Problema con consulta JOIN en PHP

Publicado por xve (898 intervenciones) el 06/11/2013 21:25:09
Hola José, no entiendo muy bien que quieres decir con "los datos que se escriben el el form no son tomados por el query."

La consulta sql parece que esta bien...
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

Problema con consulta JOIN en PHP

Publicado por José (5 intervenciones) el 07/11/2013 00:23:29
Al escribir los datos y ejecutar el submit para hacer la consulta, debería imprimir los datos en un echo, sin embargo sale el mensaje de "No existen registro", es como si no tomara lo que esta escrito en el form..

Os adjunto el Body para mejorar la comprension

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
68
69
70
71
72
73
74
75
76
77
<body>
 
<div class="container">
 
<div class="header"><?php include ("header1.php");?></div>
 
<div class="content">
 
<form method="POST" action="">
 
<p>Empleados y Empresas</p>
 
<strong>Código Empresa:</strong><input type="text" name="cod_empr" size="20"><br><br>
<input type="submit" value="Buscar" name="buscar" />
 
 
<?php include("../database/conexion.php");
 
if (!isset($_POST['buscar'])){
 
      echo "Debe especificar un código para buscar.";
      echo "</html></body> \n";
      exit;
 
} ?>
 
<table width="100%" border="1" align="center" cellpadding="0" cellspacing="0" class="display" id="datos">
                                	<thead>
                                        <tr>
                                            <th width="199" class="titulos_tablas">Empresa</th>
                                            <th width="199" class="titulos_tablas">Nombre Trabajador</th>
                                            <th width="191" class="titulos_tablas">Cargo</th>
                                        </tr>
                                    </thead>
                                    <tbody>
										<?php
 
$sql = "SELECT empleados.*,empresas.nombre_empr FROM empleados INNER JOIN empresas USING (cod_empr) WHERE empleados.cod_empr ='".$_POST['cod_empr']."'";
 
$resultado = mysql_query($sql,$con) or die (mysql_error());
 
$cant = mysql_num_rows($resultado);
 
if($cant <= 0){
 
echo '<tr>';
 
echo '<td colspan="5" height="25">&nbsp;&nbsp;No existen empleados registrados de dicha empresa</td>';
echo '</tr>';
 
 
										}
										else
										{
											while($filas = mysql_fetch_array($resultado)){
												$aux_cod = $filas['num_de_empleados'];
										?>
<tr>
<td class="borde_bottom" height="25"><?php echo $filas['fecha']?></td>
<td class="borde_bottom"><?php echo $filas['nombre_empr']?></td> [b>>]Esta variable es la que intento importar de la tabla empresas, como su nombre es único, omití ponerla como e.nombre_empr[/b]
<td class="borde_bottom"><?php echo $filas['nombre_emple']?></td>
<td class="borde_bottom"><?php echo $filas['cargo']?></td>
</tr>
 
<?php
											}
										}
?>
</tbody>
</table>}
</form>
</div>
 <div class="footer">
<?php include ("../footer.php");?>
<!-- end .footer --></div>
<!-- end .container --></div>
</body>

Gracias de nuevo.
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
Imágen de perfil de xve

Problema con consulta JOIN en PHP

Publicado por xve (898 intervenciones) el 07/11/2013 09:48:48
Hola José, todo parece estar correcto...

El campo cod_empr entiendo que es un campo de cadena, verdad?

Prueba ha hacer un:
1
echo $sql;
haber que te devuelve... si nos lo puedes mostrar...
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

Problema con consulta JOIN en PHP

Publicado por José (5 intervenciones) el 07/11/2013 10:44:44
Es un campo cadena, pero son 7 dígitos..

Al hacer la consulta con un valor número, correcto o no, no imprime nada.

Pero al hacerla con un valor nulo, se muestra lo siguiente:

SELECT empleados.*,empresas.nombre_empr FROM empleados INER JOIN empresas USING (cod_empr) WHERE empleados.cod_empr = WHERE cod_empr =''

Intenté poner lo último entre parentesis y muestra

SELECT empleados.*,empresas.nombre_empr FROM empleados INER JOIN empresas USING (cod_empr) WHERE empleados.cod_empr = WHERE cod_empr =('')

Como pensé, por alguna razón solo pasa cuando inserto valores en el form, ¿alguna idea de por qué?
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
Imágen de perfil de xve

Problema con consulta JOIN en PHP

Publicado por xve (898 intervenciones) el 07/11/2013 16:13:00
por alguna razón, te llega la variable $_POST["cod_empr"] vacía, y no se ver el porque...

Nos puedes mostrar el archivo entero?
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

Problema con consulta JOIN en PHP

Publicado por José (5 intervenciones) el 07/11/2013 17:30:22
No hay mucho nuevo, en verdad que no logro hallar la solución tampoco x_x

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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Busqueda de trabajdores y empresas</title>
<style type="text/css">
/* Estilos */
body {
	font: 100%/1.4 Verdana, Arial, Helvetica, sans-serif;
	background-color: #4E5869;
	margin: 0;
	padding: 0;
	color: #000;
}
 
ul, ol, dl {
	padding: 0;
	margin: 0;
}
h1, h2, h3, h4, h5, h6, p {
	margin-top: 0;
	padding-right: 10%;
	padding-left: 15px;
	margin-left: 10%;
	alignment-adjust: central;
}
a img {
	border: none;
}
 
a:link {
	color:#414958;
	text-decoration: underline;
}
a:visited {
	color: #4E5869;
	text-decoration: underline;
}
a:hover, a:active, a:focus {
	text-decoration: none;
}
 
.container {
	width: 80%;
	max-width: 1260px;
	min-width: 780px;
	margin: 0 auto;
}
 
.header {
	background-color: #6F7D94;
}
 
.content {
	padding: 10px 0;
	height: 800px;
	width: 80%;
}
 
.content ul, .content ol {
	padding: 0 15px 15px 40px;
}
 
.footer {
	padding: 10px 0;
	background-color: #6F7D94;
}
 
.fltrt {
	float: right;
	margin-left: 8px;
}
.fltlft {
	float: left;
	margin-right: 8px;
}
.clearfloat {
	clear:both;
	height:0;
	font-size: 1px;
	line-height: 0px;
}
-->
</style>
<link rel="stylesheet" href="../resources/jquery/themes/blitzer/jquery-ui.css"/>
<script src="../resources/jquery/jquery-1.9.1.js"></script>
<script src="../resources/jquery/ui/jquery.ui.core.js"></script>
<script src="../resources/jquery/ui/jquery.ui.widget.js"></script>
<script src="../resources/jquery/ui/jquery.ui.datepicker.js"></script>
</head>
 
 
<body>
<body>
<div class="container">
<div class="header"><?php include ("header1.php");?></div>
 
<div class="content">
<form method="POST" action="">
<p>Empleados y Empresas</p><strong>Código Empresa:</strong>
 
<input type="text" name="cod_empr" size="20"><br><br> <input type="submit" value="Buscar" name="buscar" />
 
 
<?php include("../database/conexion.php");
 
if (!isset($_POST['buscar'])){
 echo "Debe especificar un código para buscar.";
 echo "</html></body> \n";
 exit;
 } ?>
 
 <table width="100%" border="1" align="center" cellpadding="0" cellspacing="0" class="display" id="datos">
 <thead>
 <tr>
 <th width="199" class="titulos_tablas">Empresa</th>
 <th width="199" class="titulos_tablas">Nombre Trabajador</th>
 <th width="191" class="titulos_tablas">Cargo</th>
 </tr>
 </thead>
 <tbody>
 <?php $sql = "SELECT empleados.*,empresas.nombre_empr FROM empleados INNER JOIN empresas USING (cod_empr) WHERE empleados.cod_empr ='".$_POST['cod_empr']."'";
 
 $resultado = mysql_query($sql,$con) or die (mysql_error());
 $cant = mysql_num_rows($resultado);
 if($cant <= 0){ echo '<tr>';
 echo '<td colspan="5" height="25">&nbsp;&nbsp;No existen empleados registrados de dicha empresa</td>';
 echo '</tr>';
 
  } else {
  	while($filas = mysql_fetch_array($resultado)){
  	 $aux_cod = $filas['num_de_empleados'];
  	  ?>
  	  <tr> <td class="borde_bottom" height="25">
  	  <?php echo $filas['fecha']?></td>
  	  <td class="borde_bottom"><?php echo $filas['nombre_empr']?></td>
  	  <td class="borde_bottom"><?php echo $filas['nombre_emple']?></td>
  	  <td class="borde_bottom"><?php echo $filas['cargo']?></td>
  	  </tr>
  	  <?php
  	}
  	   } ?>
  	   </tbody>
  	   </table>}
  	   </form>
  	   </div>
  	   <div class="footer"> <?php include ("../footer.php");?>
  	   <!-- end .footer -->iv>
  	   <!-- end .container -->iv>
  	   </body>
</html>
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
Imágen de perfil de xve

Problema con consulta JOIN en PHP

Publicado por xve (898 intervenciones) el 07/11/2013 21:14:30
Hola Jose, estas trabajando con IE?? Es muy mal navegador para programar páginas web...

Creo que el problema que tienes, es que si no pulsas el boton Buscar, y lo haces con la tecla enter, no te envia el valor $_POST['buscar']

Modifica esta linea:
1
if (!isset($_POST['buscar'])){
por
1
if (!isset($_POST['cod_empr']) || $_POST['cod_empr']==""){

Coméntanos, ok?
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

Problema con consulta JOIN en PHP

Publicado por José (5 intervenciones) el 08/11/2013 15:59:39
Hola, pude resolver el problema al fin

El detalle era que estaba asociando la búsqueda al valor del botón y no del texto que se ingresaba

En esta línea

<input type="text" name="cod_empr" size="20"><br><br> <input type="submit" value="Buscar" name="buscar" />

Primero cambié el nombre del textbox para que no se confundiera con una variable de la BdD

<input type="text" name="valor_cod" size="20"><br><br> <input type="submit" value="Buscar" name="buscar" />

Y posteriormente cambié todos los $_POST['cod_empr'] por $_POST['valor_cod']

Gracias por las ideas que me hicieron llegar a la solución!
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
Imágen de perfil de xve

Problema con consulta JOIN en PHP

Publicado por xve (898 intervenciones) el 08/11/2013 17:15:12
Gracias por comentarlo!!!
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