Foros del Web » Programando para Internet » PHP »

Cómo construir consulta a partir de un formulario?

Estas en el tema de Cómo construir consulta a partir de un formulario? en el foro de PHP en Foros del Web. Hola a todos. Saludos. Miren estoy tratando de construir la web de mi organización, pero cada día se me hace más difícil hecer algunas cosas, ...
  #1 (permalink)  
Antiguo 03/06/2008, 06:54
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Cómo construir consulta a partir de un formulario?

Hola a todos. Saludos.
Miren estoy tratando de construir la web de mi organización, pero cada día se me hace más difícil hecer algunas cosas, por eso acudo a este foro que considero excelente para los desarrolladores.
Tengo una base de datos en mysql con varias tablas. En una de ellas tengo la información relativa a los trabajadores. En otra lo relativo a los grupos de trabajo, por lo que existe una relación de uno a varios entre ambas tablas. Tengo además una tabla con los servicios que presta nuestra organización.
Tengo el siguiente código php:
Código PHP:
<?php
$conn 
mysql_connect("localhost""efelix""mychildren")
or die(
"No se puede conectar a la base de datos: " mysql_error());
mysql_select_db("plan_si"$conn)
or die ( 
mysql_error());
$workersql "SELECT * FROM trabajadores";
$result mysql_query($workersql)
or die(
"Consulta no valida: " mysql_error());
while (
$row mysql_fetch_array($result)) {
$worker[$row['IDWORKERS']] = $row['nombreworker'];
}
?>
<select name="nombreworker">
<option value="" selected>Selecciona un nombre...</option>
<?php
foreach ($worker as $worker_id => $worker_name) {
?>
<option value="<?php echo $worker_id?>" ><?php
echo $worker_name?></option>
<?php
}
?>
</select>
<?php
echo "<br>";
echo 
"<br>";
?>
<?php
$gruposql 
"SELECT * FROM grupos";
$result1 mysql_query($gruposql)
or die(
"Consulta inavalida: " mysql_error());
while (
$row mysql_fetch_array($result1)) {
$grupo[$row['IDGRUPO']] = $row['nombregrupo'];
}
?>
<select name="nombregrupo">
<option value="" selected>Selecciona un grupo...</option>
<?php
foreach ($grupo as $grupo_id => $nombre_grupo) {
?>
<option value="<?php echo $grupo_id?>" ><?php
echo $nombre_grupo?></option>
<?php
}
?>
</select>
<?php
echo "<br>";
echo 
"<br>";
?>
<?php
$servsql 
"SELECT * FROM servicio";
$result2 mysql_query($servsql)
or die(
"Consulta no valida: " mysql_error());
while (
$row mysql_fetch_array($result2)) {
$serv[$row['IDSERVICIO']] = $row['nombreserv'];
}
?>
<select name="nombreserv">
<option value="" selected>Selecciona un servicio de la lista...</option>
<?php
foreach ($serv as $serv_id => $nombre_serv) {
?>
<option value="<?php echo $serv_id?>" ><?php
echo $nombre_serv?></option>
<?php
}
?>
</select>
<?php
echo "<br>";
echo 
"<br>";
?>
<input type="submit" value="Aceptar">
En el primer list me aprece el nombre de cada uno de los trabajadores. En el segundo los grupos de trabajo y en el tercero los servicios que se prestan en la organización. Mi primera duda es:
Qué debo hecer para que cuando seleccione el nombre de un trabajador en el primer list en el otro solo aparezca el grupo de trabajo al cual pertenece. La tabla en la cual almaceno lo relativo a los grupos de trabajo es el lado uno de la relación y la tabla trabajadores es el lado varios.
Lo otro cuando le de al botón acertar se cosntruya una consulta con los datos seleccionados en el formulario.
Espero me hayan entendido. Muchas gracias.
  #2 (permalink)  
Antiguo 03/06/2008, 08:29
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: Cómo construir consulta a partir de un formulario?

Hola efelix,

Lo que necesitas es pasarle por parámetro a la consulta el ID que quieras filtrar, pero para que te recargue los datos necesitas forzosamente usar AJAX para enviar el elemento del primer select y te muestre el del segundo select.

Te recomiendo vayas al foro de AJAX y busques por "selects dependientes", y encontraras mucha información al respecto.

Saludos.
  #3 (permalink)  
Antiguo 03/06/2008, 09:01
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Cómo construir consulta a partir de un formulario?

Gatorv muchas gracias, tu siempre el primero en responder mis dudas. Disculpa que te moleste, pero mira lo que he hecho:
Código PHP:
<html>
<head></head>
<body>
<?php
$link 
mysql_pconnect("localhost""efelix""mychildren");
$db mysql_select_db ("plan_si"$link);
$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"
;

$result mysql_query("$query"$link);
echo 
"<form method=get action='hidden2.php'>";
echo 
"Which of the following would win in a shootout?";
//echo "<select name='ListBox'>";
echo "<select name='grupo' size='1'>";
while (
$row mysql_fetch_row($result))
{
   echo 
"<option value='$row[0]'>$row[0]</option>";
}
echo 
"</select> ";
echo 
"<br>";
echo 
"<input type = 'submit' value = 'Aceptar'>";
echo 
"</select><br><br>";
echo 
"</form>";
?>
</body>
</html>
Esto es para construir la consulta con los datos seleccionados en el formulario. Pero de esta forma solo me aparece un select según en valor que tenga el indice, es decir, si $row[0], me sale el nombre de los grupos de trabajo, si le pongo $row[1] me sale el de los trabajadores. Cómo hago para que me salga un select con cada uno de los campos de la consulta. Es decir uno para seleccionar el grupo, ortro para seleccionar el nombre del trabajador, otro para la fecha y así sucesivemente. Muchas gracias.
  #4 (permalink)  
Antiguo 03/06/2008, 09:42
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: Cómo construir consulta a partir de un formulario?

Hola efelix,

En el primer código que publicaste tienes resuelta esa parte, ya que leyendo el código generas varios selects.

Como tu quieres que el select nuevo dependa del valor anterior es por eso que debes usar AJAX para mandar el dato y que se muestre el nuevo select ya filtrado.

Saludos.
  #5 (permalink)  
Antiguo 03/06/2008, 10:03
 
Fecha de Ingreso: agosto-2005
Mensajes: 152
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: Cómo construir consulta a partir de un formulario?

Gracias GatorV por tu respuesta. Voy a consultar lo que me aconsejaste a ver. Muchas Gracias.
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 04:12.