Foros del Web » Programando para Internet » PHP »

cómo resuelvo un problema lógico?

Estas en el tema de cómo resuelvo un problema lógico? en el foro de PHP en Foros del Web. Necesito ayuda con un problema lógico, más que de programación (aunque claro, requiere programación:). Tengo que grabar unos servicios, que toman "sectores (SE)" de un ...
  #1 (permalink)  
Antiguo 23/08/2011, 08:43
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
cómo resuelvo un problema lógico?

Necesito ayuda con un problema lógico, más que de programación (aunque claro, requiere programación:).

Tengo que grabar unos servicios, que toman "sectores (SE)" de un listado y "estaciones de monitoreo (EM)" de otro, correspondientes a los sectores.
Para cada una, tendré que asignar "Tareas realizadas (TR)" y "actividad encontrada (AE)".

Por ejemplo:

SE Perímetro exterior:
TR_1, TR_2, TR_3
Estaciones de monitoreo (correspondientes a este SE):
EM_1
AE_1, AE_2, AE_3
EM_2
AE_1, AE_2, AE_3
EM_3
AE_1, AE_2, AE_3

SE Cámara de frío
TR_1, TR_2, TR_3
Estaciones de monitoreo (correspondientes a este SE):
EM_1
AE_1, AE_2, AE_3
EM_2
AE_1, AE_2, AE_3
EM_3
AE_1, AE_2, AE_3


Debería poder "tildar" algunas AE de cada EM, así como algunas TR de cada SE.
El tema es que los checkbox sólo pueden pasar un valor (sí/no) con un nombre... yo tendría que poder guardar en una tabla "servicios_actividades" los valores del id de actividad encontrada y de id estacion de monitoreo, y en otra tabla "servicios_tareas" el id de tarea realizada y de sector... pero no puedo pasar estos valores por el checkbox y no se me ocurre cómo hacerlo.

Acepto cualquier sugerencia.

Desde ya, muchísimas gracias.

Acá va el código con el que muestro el listado:
Código:
Sectores a cubrir:<br>
<ul>
<?php

$sql2= "Select * from ambiental_fichas_sectores where id_ficha='$id_ficha'";
$result2 = mysql_query($sql2, $conexion);
if ($row = mysql_fetch_array($result2))
{
mysql_field_seek($result2,0);
do
{
    $nombre=$row['nombre'];
    $id_sector=$row['id'];
    ?>
   
    <p style="font-weight:bold; font-size:14px;">Sector <?php echo $nombre; ?></p>
<br />
<form action="agregar.php" method="post" enctype="multipart/form-data" name="form1">
<input type="hidden" name="id_servicio" value="<?php echo $id_servicio; ?>" />

    <table border="1"><tr><td>Tareas a desarrollar en <?php echo $nombre; ?>:</td></tr>
    <?php
            $sql7= "Select * from ambiental_tareas where id_plaga='$id_plaga'";
            $result7 = mysql_query($sql7, $conexion);
            if ($row = mysql_fetch_array($result7))
            {
            mysql_field_seek($result7,0);
            do
            {
            $tarea=$row['tarea'];
            $id_tarea=$row['id'];
            ?><tr>
                <td style="font-size:9px;" bgcolor="#E6F0ED"><?php echo $tarea; ?> <input type="checkbox" name="tar_<?php echo $id_tarea; ?>_sec_<?php echo $id_sector; ?>"/></td></tr>
            <?php
            }
            while ($row = mysql_fetch_array($result7));
            }

    ?>
    </tr></table><br />
<br />

Estaciones dentro de <?php echo $nombre; ?> y actividad encontrada:<br />
<table border="1" cellpadding="5">
        <?php
        $sql4= "Select * from ambiental_fichas_estaciones where id_sector='$id_sector'";
        $result4 = mysql_query($sql4, $conexion);
        if ($row = mysql_fetch_array($result4))
        {
        mysql_field_seek($result4,0);
        do
        {
        $nombre_est=$row['nombre'];
        $id_em=$row['id'];
        ?>
        <tr>
            <td style="font-size:9px;"><?php echo $nombre_est; ?></td>
        <?php
   
            $sql6= "Select * from ambiental_actividades where id_plaga='$id_plaga'";
            $result6 = mysql_query($sql6, $conexion);
            if ($row = mysql_fetch_array($result6))
            {
            mysql_field_seek($result6,0);
            do
            {
            $actividad=$row['actividad'];
            $id_actividad=$row['id'];
            ?>
                            <td style="font-size:9px;" bgcolor="#FFFFCC"><?php echo $actividad; ?> <input type="checkbox" name="act_<?php echo $id_actividad; ?>_em_<?php echo $id_em; ?>" /></td>
            <?php
            }
            while ($row = mysql_fetch_array($result6));
            }
       
        ?>
        </tr>
        <?php
           
        }
        while ($row = mysql_fetch_array($result4));
        }
        ?>
        </table>
        <?php

}
while ($row = mysql_fetch_array($result2));
}

?>
<br />
<br />
<input type="submit" name="submit" value="Enviar">
</form>
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #2 (permalink)  
Antiguo 23/08/2011, 10:15
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: cómo resuelvo un problema lógico?

Realmente la duda es de programacion segun tengo entendido.

Puedes poner los nombres de los checkbox como arrays para que puedas recoger varios valores a la vez.
Código HTML:
Ver original
  1. <input type="checkbox" name="boton[]" value="1" />
  2. <input type="checkbox" name="boton[]" value="2" />
  3. <input type="checkbox" name="boton[]" value="3" />
De esa forma tratas a $_POST['boton'] como un array.
Hasta podrias poner el ID de tu SE cuando seleccionas las TR
Código HTML:
Ver original
  1. <input type="checkbox" name="boton[ID][]" value="1" />
  2. <input type="checkbox" name="boton[ID][]" value="2" />
  3. <input type="checkbox" name="boton[ID][]" value="3" />
Donde ID es el ID de tu SE.
  #3 (permalink)  
Antiguo 24/08/2011, 07:44
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: cómo resuelvo un problema lógico?

Gracias RonRuby.
Muestro cómo quedaría el código del formu antes de procesarlo

Código:
Sectores a cubrir:<br>
<ul>
	
	<p style="font-weight:bold; font-size:14px;">Sector Patio</p>
<br />
<form action="agregar.php" method="post" enctype="multipart/form-data" name="form1">
<input type="hidden" name="id_servicio" value="55" />

<input type="hidden" name="que" value="prueba" />

	<table border="1"><tr><td>Tareas a desarrollar en Patio:</td></tr>
	<tr>
				<td style="font-size:9px;" bgcolor="#E6F0ED">Cerca Electrificada <input type="checkbox" name="tarea[]"/>
				<input type="hidden" name="id_tarea[]" value="9"/>
				<input type="hidden" name="id_sector[]" value="9"/>				
			</td></tr>
			<tr>

				<td style="font-size:9px;" bgcolor="#E6F0ED">Poner Pinches <input type="checkbox" name="tarea[]"/>
				<input type="hidden" name="id_tarea[]" value="8"/>
				<input type="hidden" name="id_sector[]" value="9"/>				
			</td></tr>
				</tr></table><br />
<br />

Estaciones dentro de Patio y actividad encontrada:<br />
<table border="1" cellpadding="5">
				<tr>

			<td style="font-size:9px;">PAT9-1</td>
				<td style="font-size:9px;" bgcolor="#FFFFCC">Paloma Muerta <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="4"/>
		<input type="hidden" name="id_em[]" value="60"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Huevos De Codorniz <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="5"/>
		<input type="hidden" name="id_em[]" value="60"/>				
		</td>

					<td style="font-size:9px;" bgcolor="#FFFFCC">Caca De Paloma <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="6"/>
		<input type="hidden" name="id_em[]" value="60"/>				
		</td>
					</tr>
				<tr>
			<td style="font-size:9px;">PAT9-2</td>
				<td style="font-size:9px;" bgcolor="#FFFFCC">Paloma Muerta <input type="checkbox" name="actividad[]" />

		<input type="hidden" name="id_actividad[]" value="4"/>
		<input type="hidden" name="id_em[]" value="61"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Huevos De Codorniz <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="5"/>
		<input type="hidden" name="id_em[]" value="61"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Caca De Paloma <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="6"/>

		<input type="hidden" name="id_em[]" value="61"/>				
		</td>
					</tr>
				<tr>
			<td style="font-size:9px;">PAT9-3</td>
				<td style="font-size:9px;" bgcolor="#FFFFCC">Paloma Muerta <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="4"/>
		<input type="hidden" name="id_em[]" value="62"/>				
		</td>

					<td style="font-size:9px;" bgcolor="#FFFFCC">Huevos De Codorniz <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="5"/>
		<input type="hidden" name="id_em[]" value="62"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Caca De Paloma <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="6"/>
		<input type="hidden" name="id_em[]" value="62"/>				
		</td>
					</tr>

				<tr>
			<td style="font-size:9px;">PAT9-4</td>
				<td style="font-size:9px;" bgcolor="#FFFFCC">Paloma Muerta <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="4"/>
		<input type="hidden" name="id_em[]" value="63"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Huevos De Codorniz <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="5"/>

		<input type="hidden" name="id_em[]" value="63"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Caca De Paloma <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="6"/>
		<input type="hidden" name="id_em[]" value="63"/>				
		</td>
					</tr>
				<tr>
			<td style="font-size:9px;">PAT9-5</td>

				<td style="font-size:9px;" bgcolor="#FFFFCC">Paloma Muerta <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="4"/>
		<input type="hidden" name="id_em[]" value="64"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Huevos De Codorniz <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="5"/>
		<input type="hidden" name="id_em[]" value="64"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Caca De Paloma <input type="checkbox" name="actividad[]" />

		<input type="hidden" name="id_actividad[]" value="6"/>
		<input type="hidden" name="id_em[]" value="64"/>				
		</td>
					</tr>
				</table>
			
	<p style="font-weight:bold; font-size:14px;">Sector Techo</p>
<br />
<form action="agregar.php" method="post" enctype="multipart/form-data" name="form1">
<input type="hidden" name="id_servicio" value="55" />
<input type="hidden" name="que" value="prueba" />

	<table border="1"><tr><td>Tareas a desarrollar en Techo:</td></tr>
	<tr>
				<td style="font-size:9px;" bgcolor="#E6F0ED">Cerca Electrificada <input type="checkbox" name="tarea[]"/>
				<input type="hidden" name="id_tarea[]" value="9"/>
				<input type="hidden" name="id_sector[]" value="10"/>				
			</td></tr>
			<tr>
				<td style="font-size:9px;" bgcolor="#E6F0ED">Poner Pinches <input type="checkbox" name="tarea[]"/>

				<input type="hidden" name="id_tarea[]" value="8"/>
				<input type="hidden" name="id_sector[]" value="10"/>				
			</td></tr>
				</tr></table><br />
<br />

Estaciones dentro de Techo y actividad encontrada:<br />
<table border="1" cellpadding="5">
				<tr>
			<td style="font-size:9px;">TEC10-1</td>

				<td style="font-size:9px;" bgcolor="#FFFFCC">Paloma Muerta <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="4"/>
		<input type="hidden" name="id_em[]" value="65"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Huevos De Codorniz <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="5"/>
		<input type="hidden" name="id_em[]" value="65"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Caca De Paloma <input type="checkbox" name="actividad[]" />

		<input type="hidden" name="id_actividad[]" value="6"/>
		<input type="hidden" name="id_em[]" value="65"/>				
		</td>
					</tr>
				<tr>
			<td style="font-size:9px;">TEC10-2</td>
				<td style="font-size:9px;" bgcolor="#FFFFCC">Paloma Muerta <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="4"/>

		<input type="hidden" name="id_em[]" value="66"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Huevos De Codorniz <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="5"/>
		<input type="hidden" name="id_em[]" value="66"/>				
		</td>
					<td style="font-size:9px;" bgcolor="#FFFFCC">Caca De Paloma <input type="checkbox" name="actividad[]" />
		<input type="hidden" name="id_actividad[]" value="6"/>
		<input type="hidden" name="id_em[]" value="66"/>				
		</td>

					</tr>
				</table>
		<br />
<br />
<input type="submit" name="submit" value="Enviar">
</form>

y lo que hice para procesarlo

Código:
for ($i=0;$i<count($tarea);$i++) 
{ 		
	if ($tarea[$i]!="")
	{ 
		$id_tarea=$id_tarea[$i]; 
		$id_sector=$id_sector[$i]; 
		$sql_emp="insert into ambiental_ser_tareas (id_tarea, id_sector, id_servicio) values ('$id_tarea', '$id_sector', '$id_servicio)"; 
		echo $sql_emp; echo "<br>"; 
		$result_emp=mysql_query($sql_emp, $conexion); 
	}
}
for ($i=0;$i<count($actividad);$i++) 
{ 		
	if ($actividad[$i]!="")
	{ 
		$id_actividad=$id_actividad[$i]; 
		$id_em=$id_em[$i]; 
		$sql_emp="insert into ambiental_ser_actividades (id_actividad, id_em, id_servicio) values ('$id_actividad', '$id_em', '$id_servicio)"; 
		echo $sql_emp; echo "<br>"; 
		$result_emp=mysql_query($sql_emp, $conexion); 
	}
}
El tema es que sólo el primer insert de cada grupo me lo hace correcto, los que le siguen, tienen vacíos los valores de las variables de id (excepto la id_servicio que viene en el campo hidden del formulario).

Alguna idea?

Gracias!
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar
  #4 (permalink)  
Antiguo 24/08/2011, 07:56
Avatar de arielcasanova  
Fecha de Ingreso: octubre-2004
Ubicación: Bahía Blanca - Argentina
Mensajes: 332
Antigüedad: 19 años, 6 meses
Puntos: 1
Respuesta: cómo resuelvo un problema lógico?

Ah! finalmente lo resolvi poniendo el "value" de cada checbox separando por un guión bajo el valor de los diferentes id y lo procesé así:

Código:
for ($i=0;$i<count($tarea);$i++) 
{ 		
	if ($tarea[$i]!="")
	{ 
	
	list($id_sector, $id_tarea) =   split("_", $tarea[$i]);
		$sql_emp="insert into ambiental_ser_tareas (id_tarea, id_sector, id_servicio) values ('$id_tarea', '$id_sector', '$id_servicio)"; 
		echo $sql_emp; echo "<br>"; 
		$result_emp=mysql_query($sql_emp, $conexion); 
	}
}
for ($i=0;$i<count($actividad);$i++) 
{ 		
	if ($actividad[$i]!="")
	{ 
	list($id_em, $id_actividad) =   split("_", $actividad[$i]);
		$sql_emp="insert into ambiental_ser_actividades (id_actividad, id_em, id_servicio) values ('$id_actividad', '$id_em', '$id_servicio)"; 
		echo $sql_emp; echo "<br>"; 
		$result_emp=mysql_query($sql_emp, $conexion); 
	}
}
Gracias!
__________________
Ariel Casanova
diseño y desarrollo web estratégico
www.emporia.com.ar

Etiquetas: mysql, sql, tabla
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:32.