Foros del Web » Programando para Internet » PHP »

Varios criterios para una consulta

Estas en el tema de Varios criterios para una consulta en el foro de PHP en Foros del Web. Saludos a todos. Disculpen los moderadores si este tema aparece repetido. Cuando lo poubliqué incialmente la conexión falló y no tengo la certeza de si ...
  #1 (permalink)  
Antiguo 27/05/2008, 08:06
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta Varios criterios para una consulta

Saludos a todos.
Disculpen los moderadores si este tema aparece repetido. Cuando lo poubliqué incialmente la conexión falló y no tengo la certeza de si quedó posteado o no.
De todas formas entré nuevamente al foro y no lo he visto, así que parece que no.
El problema es el siguiente:
Código PHP:
<style type="text/css">
<!--
body {
    background-image: url(../images/fonditoeima.jpg);
    background-repeat: repeat;
}
-->
</style>
<?php
$buscar 
trim($buscar);
if (!
$buscar)
   {
      echo 
"Error: Usted no ha introducido ningún criterio de búsqueda.";
      exit();
   }
  
$link = @ mysql_pconnect("localhost""efelix""mychildren");
if (!
$link)
   {
     echo 
"Error: No es posible conectarse a la base de datos en estos momentos.
           Por favor inténtelo más tarde."
;
    exit();       
   }
$db = @ mysql_select_db("plan_si");
if (!
$db)
   {
     echo 
"Error: No se encuentra disponible la tabla a la que intenta conectarse.
           Por favor inténtelo más tarde"
;
    exit();       
   }
$query "SELECT grupos.nombregrupo, trabajadores.nombreworker, servicio.nombreserv,
CASE WHEN MONTH (tabla_union.FechaProduccion) = 1 THEN \"Enero\"
WHEN MONTH (tabla_union.FechaProduccion) = 2 THEN \"Febrero\"
WHEN MONTH (tabla_union.FechaProduccion) = 3 THEN \"Marzo\"
WHEN MONTH (tabla_union.FechaProduccion) = 4 THEN \"Abril\"
WHEN MONTH (tabla_union.FechaProduccion) = 5 THEN \"Mayo\"
WHEN MONTH (tabla_union.FechaProduccion) = 6 THEN \"Junio\"
WHEN MONTH (tabla_union.FechaProduccion) = 7 THEN \"Julio\"
WHEN MONTH (tabla_union.FechaProduccion) = 8 THEN \"Agosto\"
WHEN MONTH (tabla_union.FechaProduccion) = 9 THEN \"Septiembre\"
WHEN MONTH (tabla_union.FechaProduccion) = 10 THEN \"Octubre\"
WHEN MONTH (tabla_union.FechaProduccion) = 11 THEN \"Noviembre\"
WHEN MONTH (tabla_union.FechaProduccion) = 12 THEN \"Diciembre\"
ELSE \"Este no es un mes\" END AS Mes, tabla_union.PLAN, tabla_union.PROD
FROM (grupos INNER JOIN trabajadores ON grupos.IDGRUPO=trabajadores.IDGRUPO) INNER JOIN (servicio INNER JOIN tabla_union ON servicio.IDSERVICIO=tabla_union.IDSERVICIO) ON trabajadores.IDWORKERS=tabla_union.IDWORKERS WHERE trabajadores.nombreworker LIKE '%$buscar%'"
;

$resultado =  @ mysql_query("$query");
if (!
$resultado)
  {
    echo 
"Error: Los elementos de la tabla no están disponibles en estos momentos.
          Por favor inténtelo más tarde"
;
   exit();          
  }
 
$registros = @ mysql_num_rows($resultado);
if (
$registros 0)
  {
    echo 
"Lo sentimos, no se ha encontrado ninguna coincidencia con '$buscar' en nuestra Web.";
  }
             
$encabezamiento=<<<EOD
<h2><center>Cumplimiento del Plan</center></h2>
<table width="70%" border="2" cellpadding="2"
cellspacing="2" align="center" bordercolor="#660099" bgcolor="#CCFFFF">
<tr>
<th><font color="#000099">Código</font></th>
<th><font color="#000099">Trabajador</font></th>
<th><font color="#000099">Servicio</font></th>
<th><font color="#000099">Mes</font></th>
<th><font color="#000099">Plan</font></th>
<th><font color="#000099">Real</font></th>
</tr>
EOD;
// echo $cumplimiento;

$detalles '';
while (
$row mysql_fetch_array($resultado)) {
   
$nombre_grupo $row ['nombregrupo'];   
   
$nombre_trabajador $row ['nombreworker'];   
   
$servicio $row ['nombreserv'];
   
$mes $row ['Mes'];  
   
$plan $row ['PLAN'];
   
$real $row ['PROD'];   
   
$detalles .=<<<EOD
 <tr>
  <td align = "center"><strong><font color="#990000">$nombre_grupo</font></strong></td>  
  <td align = "center"><strong><font color="#990000">$nombre_trabajador</font></strong></td>
  <td align = "center"><strong><font color="#990000">$servicio</font></strong></td>
  <td align = "center"><strong><font color="#990000">$mes</font></strong></td>
  <td align = "center"><strong><font color="#990000">$plan</font></strong></td>
  <td align = "center"><strong><font color="#990000">$real</font></strong></td>  
</tr>
EOD;
}

$detalles .=<<<EOD
  <tr>
  <td>&nbsp;</td>
  </tr>
  <tr>
  <td><strong>Total :$registros</strong></td>
</tr>
EOD;

$pie "</table>";
$cumplimiento =<<<CUMPLIMIENTO
       $encabezamiento
       $detalles
       $pie
CUMPLIMIENTO;
echo 
"<b>";
echo 
"<font color=\"#990000\">";
echo 
"Hay $registros registros en la base de datos.";
echo 
"</font>";
echo 
"</b>";
echo 
$cumplimiento;
?>
En query que aparece embebida en este código php obtengo los datos para el trabajador que paso a través del siguiente formulario:
Código HTML:
<style>
#buscador {border: 1px solid #CCCCCC;}
body {
	background-image: url(../images/fonditoeima.jpg);
	background-repeat: repeat;
}
</style>
<div id="buscador" align="center">
<form method="get"  action="table2.php" name="bus">
<br />
<img src="../images/buscar.jpg" width="45" height="45" border="0">Buscar
<br />
<input type="text" name="buscar" size="20"><br />
<input type="submit"  value="           Buscar          ">
</form>
</div> 
Es decir pongo el nombre del trabajador en el control correspondiente en el formulario y la página resultante que es la primera (la del código php) que aparece arriba se encarga de mostrar los resultados para este trabajador.
Es decir:
Nombre del Grupo, Nombre del Trabajador, Nombre del Servicio, Mes, Plan, Real.
Hasta ahora no hay ningún problema. Me pregunto como sería si yo deseara que en el formulario aparacieran diferentes opciones para ver los resultados, ya sea por nombre de grupo, por nombre de servicio, por mes; utilizando esta misma consulta.
Qué deberia hacer?. Aclaro que mi duda no está relacionada en como hacer el formulario, sino como, claro de ser posible empleando la misma consulta obtener diferentes resultados según lo que seleccione el usuario.
Muchas gracias. Espero hayan enetendido mi mensaje.
  #2 (permalink)  
Antiguo 27/05/2008, 08:41
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Varios criterios para una consulta

Hola efelix,

Te refieres a ¿ordenar la consulta por otros parámetros?, en ese caso en tu consulta SQL debes de pasar el comando ORDER BY el_campo_que_quieras_ordenar ASC o DESC.

Saludos.
  #3 (permalink)  
Antiguo 27/05/2008, 08:59
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Varios criterios para una consulta

Cita:
Iniciado por GatorV Ver Mensaje
Hola efelix,

Te refieres a ¿ordenar la consulta por otros parámetros?, en ese caso en tu consulta SQL debes de pasar el comando ORDER BY el_campo_que_quieras_ordenar ASC o DESC.

Saludos.
Gracias por tu respuesta.
No, no es a exactamente a lo que me refiero. En parte tiene que ver con esto por supuesto, una vez que en el formulario ponga los diferentes criterios por los cuales ver los datos, tendré que agregar una clausula order by. Eso lo tengo un tanto claro. Exactamente deseo poner ya se mediante ckeckbox o radio buttons la posibilidad de que la consulta sea vista por el criterio seleccionado.
Tendría que hacer una consulta para cada opción seleccionada o existe otra forma más ecónomica en cuanto a escritura de código de hacerla, de manera tal que sea siempre la misma página php que procese lo que se pasa a través del formulario.
Espero me hayas entendido. Gracias.
  #4 (permalink)  
Antiguo 27/05/2008, 09:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Varios criterios para una consulta

Hola efelix,

Lo que puedes hacer es un algoritmo y usando variables dinámicas, así podrías usar el mismo PHP, creas la consulta:
Código PHP:
$query "SELECT * FROM tabla WHERE `$campo_a_filtrar`='$valor_a_filtrar' 
Saludos.
  #5 (permalink)  
Antiguo 27/05/2008, 09:57
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Varios criterios para una consulta

Cita:
Iniciado por GatorV Ver Mensaje
Hola efelix,

Lo que puedes hacer es un algoritmo y usando variables dinámicas, así podrías usar el mismo PHP, creas la consulta:
Código PHP:
$query "SELECT * FROM tabla WHERE `$campo_a_filtrar`='$valor_a_filtrar' 
Saludos.
Hermano gracias, pero soy neofito en php, esto se va de mis conocimientos. tendré que seguir estudiando. Sim me pudieras sugerir algún manual donde encontrar lo relacionado con las variables dinámicas te lo agradercería. O si puedes darme un adelanto mas o menos sobre que trata igual me serviría. De todas formas te reitero las gracias.
  #6 (permalink)  
Antiguo 27/05/2008, 10:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: Varios criterios para una consulta

Hola efelix,

Lo que te comento es que usando el nombre de la variable para filtrar hagas el filtro, si ves la consulta SQL que te puse, depende de dos campos $campo_a_filtrar y $valor_a_filtrar, con esos dos campos tu puedes realizar el filtro de tu consulta, tan solo cambiando los valores de las variables.

Saludos.
  #7 (permalink)  
Antiguo 27/05/2008, 14:33
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Varios criterios para una consulta

Cita:
Iniciado por GatorV Ver Mensaje
Hola efelix,

Lo que te comento es que usando el nombre de la variable para filtrar hagas el filtro, si ves la consulta SQL que te puse, depende de dos campos $campo_a_filtrar y $valor_a_filtrar, con esos dos campos tu puedes realizar el filtro de tu consulta, tan solo cambiando los valores de las variables.

Saludos.
Gracias GatorV nuevamente, espero no haberte molestado tanto.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:12.