PHP - Error en Consulta Mysql conbinando tablas

   
Vista:

Error en Consulta Mysql conbinando tablas

Publicado por Fernando (12 intervenciones) el 08/01/2016 00:00:09
Buen Día Compañeros
Estoy realizando un proyecto el cual es con una base de datos en mysql con php.
Tengo un par de tablas con campos relacionados
el problema es al momento de generar una búsqueda en la lista de registros.
mi tabla llamada Bitácora se llena con campos de la tabla Estatus_Expediente y Departamentos.
(adjunto archivo con imágenes de las tablas y código con el que estoy probando).

Al cargarla accediendo al link donde me muestra la información sin los filtros me muestra los resultados sin problema alguno.
procediendo con una búsqueda marca el error :
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\Almacen_Expedientes\Contenido\Consulta_Bitacoras.php on line 108

el cual realizando pruebas , supongo que me lo esta generando la siguiente linea de codigo..
$Consulta_registros=mysql_query("select * from Bitacora, Departamentos, Estatus_Expedientes WHERE Usuario=ID_Departamento AND Estado_exp=ID_Estatus". $filtro ." ORDER BY ID_Bitacora DESC LIMIT $inicio,$registros");

porque al reemplazarla por la siguiente eliminando la condicion where:
$Consulta_registros=mysql_query("select * from Bitacora, Departamentos, Estatus_Expedientes ". $filtro ." ORDER BY ID_Bitacora DESC LIMIT $inicio,$registros");

me elimina el mensaje de error , me muestra los resultados pero estos resultados son duplicados y algunos de ellos contienen campos vacíos, me gustaría un poco de orientación si es posible 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
Imágen de perfil de xve

Error en Consulta Mysql conbinando tablas

Publicado por xve (5513 intervenciones) el 08/01/2016 08:56:44
Hola Fernando, creo que el contenido de la variable $filtro empieza por WHERE ....
En la consulta de la linea 101, ya hay un WHERE!!! por lo que no pueden haber dos...

Puede ser ese el problema?
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

Error en Consulta Mysql conbinando tablas

Publicado por FernandoMG (12 intervenciones) el 08/01/2016 17:37:38
Hola Buen dia que tal gracias por responder.!
no me quedo muy claro lo qu eme comentas en la linea 101
Utilizando ese WHERE i me muestra los resultados como entrada.
el problema se genera al momento de realizar una busqueda con el filtro.

si elimino ese where veo los resultado bien de entrada y al realizar la busqueda no marca error, Pero me multiplica los resultados y algunas filas aparecen con campos vacios.
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

Error en Consulta Mysql conbinando tablas

Publicado por xve (5513 intervenciones) el 08/01/2016 18:38:02
intento explicarme...

En la linea 101 tienes esto:
1
$Consulta_registros=mysql_query("select * from Bitacora, Departamentos, Estatus_Expedientes  WHERE  Usuario=ID_Departamento AND Estado_exp=ID_Estatus". $filtro ." ORDER BY ID_Bitacora DESC LIMIT $inicio,$registros");

Mientras $filtro es una cadena vacia no hay problema... pero cuando hay un filtro, le asignas a la variable $filtro algo así:

$filtro="WHERE ...."

de tal manera, que cuando haces la consulta con un filtro, te queda algo así:
1
$Consulta_registros=mysql_query("select * from Bitacora, Departamentos, Estatus_Expedientes  WHERE  Usuario=ID_Departamento AND Estado_exp=ID_Estatus WHERE ... ORDER BY ID_Bitacora DESC LIMIT $inicio,$registros");

Ves que hay dos WHERE en la misma consulta??? eso no puede ser...
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

Error en Consulta Mysql conbinando tablas

Publicado por FernandoMG (12 intervenciones) el 08/01/2016 19:51:20
ah ok ya entiendo entonces en el primer WHERE que es el del filtro podria meter la condicion que estoy intentando meter mas adelante..

Usuario=ID_Departamento AND Estado_exp=ID_Estatus (esta condicion)


if(is_numeric($_REQUEST["busqueda_txt"]))// verifica si lo que escribio es numerico en el cuadro de texto
$filtro=" WHERE ID_Expediente=".$_REQUEST["busqueda_txt"];

else
$filtro=" WHERE (Promotor like '%".$_REQUEST["busqueda_txt"]."%' or Nombre_Promotor like '%".$_REQUEST["busqueda_txt"]."%')";
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

Error en Consulta Mysql conbinando tablas

Publicado por Fernando (12 intervenciones) el 13/01/2016 18:49:19
Buen día para avisarte que ya me esta trabajando el código me sirvió de mucho tu orientación, y la verdad es que me estaba quebrando la cabeza con algo tan sencillo que ni siquiera había notado.
modifique la consulta y agregue una condición if...

las lineas de código me quedaron de la siguiente manera.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?PHP
 
if($_REQUEST["btn_buscar"]!="" || $_REQUEST["busqueda_txt"]!="")//verifica si el usuario pulso el boton buscar  y  el campo  de texto  esta vacio 
{
 
	if(is_numeric($_REQUEST["busqueda_txt"]))// verifica si lo que escribio es numerico en el cuadro de texto
		$filtro=" WHERE Usuario=ID_Departamento AND Estado_exp=ID_Estatus  AND ID_Expediente=".$_REQUEST["busqueda_txt"];
 
	else
		$filtro=" WHERE Usuario=ID_Departamento AND Estado_exp=ID_Estatus  AND(Promotor like '%".$_REQUEST["busqueda_txt"]."%' or Nombre_Promotor like '%".$_REQUEST["busqueda_txt"]."%')";
 
}
else {$Mensaje= "<font color='red'>Porfavor Escriba  algo en el cuadro de texto antes de realizar la busqueda</font>";}
 
?>




1
2
3
4
5
6
7
8
9
10
<?PHP
 
if ($filtro=="")
	$Consulta_registros=mysql_query("select * from Bitacora, Departamentos, Estatus_Expedientes WHERE Usuario=ID_Departamento AND Estado_exp=ID_Estatus ". $filtro ." ORDER BY ID_Bitacora DESC LIMIT $inicio,$registros");
else{
	$Consulta_registros=mysql_query("select * from Bitacora, Departamentos, Estatus_Expedientes ". $filtro ." ORDER BY ID_Bitacora DESC LIMIT $inicio,$registros");
 
}
 
?>
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