Foros del Web » Programando para Internet » PHP »

Ejecutar una consulta varias veces con datos distintos recogidos de un mismo formular

Estas en el tema de Ejecutar una consulta varias veces con datos distintos recogidos de un mismo formular en el foro de PHP en Foros del Web. Buenos días a todos, tengo un problema que no consigo resolver así que a ver si podéis echar una manita. Os lo agradecería mucho! Bueno, ...
  #1 (permalink)  
Antiguo 18/01/2012, 05:29
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Ejecutar una consulta varias veces con datos distintos recogidos de un mismo formular

Buenos días a todos,

tengo un problema que no consigo resolver así que a ver si podéis echar una manita. Os lo agradecería mucho!

Bueno, tengo un listado de trabajos reportados por los usuarios que se obtiene de la base de datos. Al final de cada registro, hay un campo checkbox que el administrador de la aplicación puede marcar si es correcto o no es correcto lo que hay en el registro. Lo que yo quiero es que cuando presione el botón de validar, me ejecute una consulta de actualización por cada uno de los registros únicos y después me muestre únicamente los que no han sido validados.

Dejo aquí la plantilla en la que se muestran los datos (validar_ver.tpl.php), las funciones de validación (InformeCliente.class.php) y el archivo que controla las acciones (informecliente.admin.php)

informecliente.admin.php Aquí es donde estaría el error ya que no sé recoger varias veces una misma variable varias veces (tienen contenidos distintos ya que es $idtrabajo)

Código:
switch ($accion){
	case 'actvalidar':
		$tpl_cabecera->set('subnivel','  <a href="informecliente.admin.php?accion=default">Zona de Clientes</a>');
		$tpl_cabecera->set('subnivel2',' > Validaci&oacute;n');

		try{
		  foreach($POST['idtrabajo'] as $idtrab) {
			
				$validar = new InformeCliente($idtrab);
				$validar->actualizarValidar($idtrab,$_POST['validacion']);
		
		$tpl->set('totalesinf', InformeCliente::calcularPrecioTotal($_POST['fechainicio2'],$_POST['fechafin2'],$_POST['interlocutor'], $_POST['proyecto']));
		
		$tpl->set('resultado_informe', InformeCliente::verInforme($_POST['fechainicio2'],$_POST['fechafin2'],$_POST['interlocutor'], $_POST['proyecto']));

		} catch (Exception $e) {
                    $tpl->set('error_msg',$e->getMessage());  
                }		    
	    $tpl_cuerpo = 'validar_ver.tpl.php';
	break;

	default:
		$tpl_cabecera->set('subnivel','  <a href="informecliente.admin.php">Zona de Clientes</a>');
		$tpl_cuerpo = 'validar.tpl.php';
		unset($_SESSION['fechainicio2']);
		unset($_SESSION['fechafin2']);
		unset($_SESSION['interlocutor']);
		unset($_SESSION['proyectos']);

}
validar_ver.tpl.php

Código:
<form action="informecliente.admin.php" method="post">
    
<input type="hidden" name="accion" value="<?php if(isset($accion)) print $accion;?>">

<tr>
    <td style="visibility:hidden; width:1px; " ></td>
    <td>Cliente</td>
    <td>Proyecto</td>
    <td>Descripci&oacute;n</td>
    <td>Actividad</td>
    <td>Fecha inicio</td>
    <td>Talla</td>
    <td>Cantidad</td>
    <td>Escalado</td>
    <td>Precio Total</td>
    <td>Nocturna</td>
    <td>Comentarios</td>
    <td>Validaci&oacute;n</td>
    <td>Mis Comentarios</td>
    <td>Validar</>
</tr>

<?php 
if (isset($resultado_informe) && count($resultado_informe)>0) {
    $i=1;
    foreach($resultado_informe as $resultado) {
?>



<tr>
    <td><input style="visibility:hidden; width:1px; " value="<?=$resultado['idtrabajo']?>" name="idtrabajo"/></td>
    <td><?=$resultado['cliente'];?></td>
    <td><?=$resultado['proyecto'];?></td>
    <td><?=$resultado['descripcion'];?></td>
    <td><?=$resultado['actividad'];?></td>
    <td><?=$resultado['f_inicio'];?></td>
    <td><?=$resultado['talla'];?></td>
    <td><?=$resultado['cantidad'];?></td>
    <td><?=$resultado['escalado'];?></td>
    <td><?=$resultado['preciototal'];?></td>
    <td><?=$resultado['nocturna'];?></td>
    <td><?=$resultado['comentarios'];?></td>
    <td><?=$resultado['estadocliente'];?></td>
    <td><?=$resultado['comentariosclientes'];?></td>
    <td><input type="checkbox" value="on/off" name="validacion"/></td>
</tr>

<?php
    }}
     else {
	print 'No hay trabajos reportados en esas fechas.';
}
?>

<tr>
    <td
<td colspan="15" align="right">
<input class="envio" type="submit" name="" value="Validar">
InformeCliente.class.php

Código:
    public function actualizarValidar($idtrabajo, $estadocliente){
	
        $informe= new InformeCliente();
        $estadoclie=$informe->validarCampoEstadocliente($estadocliente);
	
	$query="UPDATE trabajos SET estadocliente ='$estadoclie' WHERE idtrabajo = '$idtrabajo'";
	$consulta = new Consulta($query);
	if(!$consulta){ 
	    throw new Exception("Error al validar las Actividades");
	}
    }
    
    public function validarCampoEstadocliente($estadocliente){
    if ($estadocliente == null || $estadocliente == ''){
	$estadocliente='NO';
    }
    else{
	$estadocliente='SI';
    }
    return $estadocliente;
    }
No sé si me explicado bien. Muchas gracias por anticipado y si hay alguna duda preguntarme por favor.

Un saludo
  #2 (permalink)  
Antiguo 19/01/2012, 11:25
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años, 7 meses
Puntos: 3
Respuesta: Ejecutar una consulta varias veces con datos distintos recogidos de un mis

Hola de nuevo,
he hecho una pequeña aproximación al asunto pero no termino de conseguirlo. Recojo con un array los $idtrabajo y después voy pasando cada uno de los valores por la función tantas veces como sea necesario. La cosa es que no sé como recoger 2 variables en un array: el $idtrabajo y su $validacion correspondiente del checkbox. ¿Alguna sugerencia?

informecliente.admin.php

Código:
	case 'actvalidar':
	    
		$tpl_cabecera->set('subnivel','  <a href="informecliente.admin.php?accion=default">Zona de Clientes</a>');
		$tpl_cabecera->set('subnivel2',' > Validaci&oacute;n');
		$tpl_cabecera->set('subnivel3',' > Generar Excel');

		try{
		  
			if(!empty($_POST['idtrabaj'])){
			    
			$arrayLista= array_keys($_POST['idtrabaj']);
			
			foreach ($arrayLista AS $lista){
			    
			if ($_POST['validacion'] == null || $_POST['validacion'] == ''){
			     $estadocliente='NO';
			}
			else{
			     $estadocliente='SI';
			}
			
			    $query="UPDATE trabajos SET estadocliente ='$estadocliente' WHERE idtrabajo ='$lista'";
			
		        $consulta = new Consulta($query);
		        if(!$consulta){ 
		        throw new Exception("Error al validar las Actividades");}
			}
			
		$tpl->set('totalesinf', InformeCliente::calcularPrecioTotal($_POST['fechainicio2'],$_POST['fechafin2'],$_POST['interlocutor'], $_POST['proyecto']));
		
		$tpl->set('resultado_informe', InformeCliente::verValidar($_POST['fechainicio2'],$_POST['fechafin2'],$_POST['interlocutor'], $_POST['proyecto']));

			}  } catch (Exception $e) {
                    $tpl->set('error_msg',$e->getMessage());  
                }		    
	    $tpl_cuerpo = 'validar_ver.tpl.php';
	break;
validar_ver.tpl.php

Código:
<?=$cabecera;?>
<div id="contenido">
Desde aqu&iacute; podemos realizar los informes<hr>


<table border="1" bgcolor="#ffffff" cellspacing="0" cellpadding="3" width="50%" align="left">
<form action="informecliente.admin.php" method="post">
    
<input type="hidden" name="accion" value="<?php if(isset($accion)) print $accion;?>">

<tr>
    <td style="visibility:hidden; width:1px; " ></td>
    <td>Cliente</td>
    <td>Proyecto</td>
    <td>Descripci&oacute;n</td>
    <td>Actividad</td>
    <td>Fecha inicio</td>
    <td>Talla</td>
    <td>Cantidad</td>
    <td>Escalado</td>
    <td>Precio Total</td>
    <td>Nocturna</td>
    <td>Comentarios</td>
    <td>Validaci&oacute;n</td>
    <td>Mis Comentarios</td>
    <td>Ver</td>
    <td>Validar</>
</tr>

<?php 
if (isset($resultado_informe) && count($resultado_informe)>0) {
    $i=1;
    foreach($resultado_informe as $resultado) {
	$j=1;
	
?>

<tr>
    <td><input style="visibility:hidden; width:1px; " value="<?=$resultado['idtrabajo']?>" name="idtrabaj[<?=$resultado['idtrabajo']?>]"/></td>
    <td><?=$resultado['cliente'];?></td>
    <td><?=$resultado['proyecto'];?></td>
    <td><?=$resultado['descripcion'];?></td>
    <td><?=$resultado['actividad'];?></td>
    <td><?=$resultado['f_inicio'];?></td>
    <td><?=$resultado['talla'];?></td>
    <td><?=$resultado['cantidad'];?></td>
    <td><?=$resultado['escalado'];?></td>
    <td><?=$resultado['preciototalK25'];?></td>
    <td><?=$resultado['nocturna'];?></td>
    <td><?=$resultado['comentarios'];?></td>
    <td><?=$resultado['estadocliente'];?></td>
    <td><?=$resultado['comentariosclientes'];?></td>
    <td><a href="informecliente.admin.php?accion=vercompleto&resultado=<?=$resultado['idtrabajo'];?>">Ver Completo</a> </td>
	<td><input type="checkbox" value="on/off" name="validacion"/></td>
</tr>

<?php
	}}
     else {
	print 'No hay trabajos reportados en esas fechas.';
}
?>

<?php
Gracias por anticipado.

Un saludo

Etiquetas: distintos, registro, veces, variables, usuarios
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 21:44.