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ó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ó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ó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