Foros del Web » Programando para Internet » PHP »

recuperar datos para un formulario tipo checkbox y select

Estas en el tema de recuperar datos para un formulario tipo checkbox y select en el foro de PHP en Foros del Web. Muy buenas a todos. Os explico mi problema: tengo un formulario desde el que puedo tanto reportar nuevas actividadas, como modificar las ya existentes. En ...
  #1 (permalink)  
Antiguo 19/04/2011, 08:33
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años
Puntos: 3
recuperar datos para un formulario tipo checkbox y select

Muy buenas a todos. Os explico mi problema: tengo un formulario desde el que puedo tanto reportar nuevas actividadas, como modificar las ya existentes. En el primer caso tengo claro lo que hay que hacer pero mi problema llega en el segundo.
Desde una lista de actividades puedo seleccionar una de ellas y se me carga el formulario mencionado con los campos llenos con los valores que contiene esa actividad, extraidos de una base de datos. Para los input tipo text y los textares no tengo problema, pero los input tipo checkbox y en los select no sé cómo rellenarlos.

Os dejo mis archivos. Por un lado parte de la clase Trabajos:
Código:
<?php
include_once ("Consulta.class.php");
include_once("SesionCentral.class.php");
include_once("Constantes.class.php");
include_once("Mensaje.class.php");
    
    class Trabajos extends SesionCentral{
        
                         

        function _construct(){
            parent::_construct;
            
        }
        
        function MostrarPorIdentificador($idtrabajo){
            $query ="SELECT idtrabajo, indi, grupo, cliente, proyecto, interlocutor, f_inicio, f_fin, ";
            $query.="descripcion, cantidad, escalado, descripcionescalado, preciototal, pago_actuacion, ";
            $query.="nocturna, comentarios, status_idstatus, descripcionstatus, actividades_Id_actividad, ";
            $query.="consultores_Ident_consultor, pagohoras, horas FROM trabajos WHERE idtrabajo='$idtrabajo';";
            
            $consulta = new Consulta($query);
            if($fila = $consulta->obtener_fila()) {
				$this->idtrabajo 		= $fila['idtrabajo'];
				$this->indi 		        = $fila['indi'];
				$this->grupo 	                = $fila['grupo'];
                                $this->cliente                  = $fila['cliente'];
                                $this->proyecto                 = $fila['proyecto'];
                                $this->interlocutor             = $fila['interlocutor'];
                                $this->f_inicio                 = $fila['f_inicio'];
                                $this->f_fin                    = $fila['f_fin'];
                                $this->descripcion              = $fila['descripcion'];
                                $this->cantidad                 = $fila['cantidad'];
                                $this->escalado                 = $fila['escalado'];
                                $this->descripcionescalado      = $fila['descripcionescalado'];
                                $this->preciototal              = $fila['preciototal'];
                                $this->pago_actuacion           = $fila['pago_actuacion'];
                                $this->nocturna                 = $fila['nocturna'];
                                $this->comentarios              = $fila['comentarios'];
                                $this->status_idstatus          = $fila['status_idstatus'];
                                $this->descripcionstatus        = $fila['descripcionstatus'];
                                $this->actividades_Id_actividad = $fila['actividades_Id_actividad'];
                                $this->consultores_Ident_consultor = $fila['consultores_Ident_consultor'];
                                $this->pagohoras                = $fila['pagohoras'];
                                $this->horas                    =$fila['horas'];

		}	
            
        }

    public function obtenerClientes(){ /*($proyecto) el objetivo es obtener los clientes según el proyecto seleccionado JQUERY, AJAX, JS...*/
		
		$query = "SELECT Id_cliente, cliente FROM clientes order by cliente ASC";
		$consulta = new Consulta($query);
				    
		    /*if($fila = $consulta->obtener_fila()) {
				$grupos = array (
						    'Idgrupo'	=>$fila['Idgrupo']
						  );}*/
		    
		    
		    	$clientes = "<select name='".cliente."'>\n";
			
			if(isset($trabajo->cliente)) {
			$clientes.="<option value='". $trabajo->cliente."'>".print $trabajo->cliente."</option>";
		    
			while($fila=$consulta->obtener_fila()){
			//concatenamos y le damos el value a la opcion
			$clientes .= " <option value='".$fila['cliente']."'>".$fila['cliente']."</option>";}
			//concatenamos y cerramos el select
			$clientes .= "</select>\n";	}
		    else{
		    	$clientes = "<select name='".cliente."'>\n";
			while($fila=$consulta->obtener_fila()){
			//concatenamos y le damos el value a la opcion
			$clientes .= " <option value='".$fila['cliente']."'>".$fila['cliente']."</option>";}
			//concatenamos y cerramos el select
			$clientes .= "</select>\n";	
		    }
		$cliente=$trabajo->cliente;
		
		return $clientes;
	    
    }
}
el archivo reportes.php desde el que llamo a las funciones y plasmo en las plantillas.

Código:
<?php
session_start();
include_once "./clases/Template.php";
include_once "./clases/Usuario.class.php";
include_once "./clases/Trabajos.class.php";


$tpl =new Template();
$usuario= new Usuario();
$trabajo= new Trabajos();
$tpl_cabecera = new Template();
$tpl_pie = new Template();
$tpl_cuerpo = new Template();

$tpl_cabecera->set_vars(array(	'usuario_actual'  	=> $usuario->obtenerUsuarioIdActual()));

$accion = isset($_REQUEST['accion']) ? $_REQUEST['accion'] : 'desconocido';

switch ($accion){
        case 'anadir':
            if (isset($usuario_actual)){
        
                    try{
			
			$tpl->set_vars(array(
				
                        'proyecto'	=> $usuario->obtenerProyectos($usuario->obtenerUsuarioIdActual()),
                        'grupo'		=> $usuario->obtenerGrupos($usuario->obtenerUsuarioIdActual()),
                        'cliente'	=> $usuario->obtenerClientes(),
                        'interlocutor'	=> $usuario->obtenerInterlocutores(),
                        'statu'		=> $usuario->obtenerStatus(),
                        'actividad'	=> $usuario->obtenerActividades()));
                    }
                    catch (Exception $e) {
                            $tpl_report->set('error_msg',$e->getMessage());  
                    }}
                $tpl->set('accion','guardar');
		$tpl_cuerpo = 'reporte_anadir.tpl.php';
        break;
    
	case 'guardar':
               	try {
			Trabajos::insertarTrabajo($_POST['group'],$_POST['proyecto'],$_POST['cliente'],$_POST['interlocutor'],$_POST['activiti'],$_POST['fechainicio'],$_POST['fechafin'],$_POST['descripcion'],$_POST['status'],$_POST['descripcionstatus'],$_POST['cantidad'],$_POST['escalado'],$_POST['descripcionescalado'],$_POST['pago'],$_POST['nocturna'],$_POST['pagohoras'], $_POST['horas']);
		} catch (Exception $e){
 			print $e->getMessage();
		}
		$tpl_cuerpo = 'reporte_inicio.tpl.php';
	break;
    
     	case 'editar':
		try{
			$tpl->set_vars(array(
                        'cliente'	=> $usuario->obtenerClientes()));
                    }
                catch (Exception $e) {
                            $tpl->set('error_msg',$e->getMessage());  
                    }
		    
		$trabajo = new Trabajos;
		$trabajo->MostrarPorIdentificador($_GET['idtrabajo']);
		$tpl->set('trabajo',$trabajo);
		$tpl->set('accion','modificar');
		$tpl_cuerpo = 'reporte_anadir.tpl.php';
		
	break;
    
	case 'modificar':

		$trabajo = new Trabajos($_POST['idtrabajo']);
		$trabajo->modificarTrabajos($_POST['idtrabajo']);
		$tpl_cuerpo = 'reporte_inicio.tpl.php';
	break;
    
            
        case 'vereliminar':

		$trabajo = new Trabajo($_GET['idtrabajo']);
		$tpl->set('trabajo',$trabajo);

		$tpl_cuerpo = 'reporte_eliminar.tpl.php';
	break;
    
    case 'eliminar':
		try {
			$trabajo = new Trabajos($_POST['idtrabajo']);
			$trabajo->eliminarTrabajo($_POST['idtrabajo']);
		} catch (Exception $e){
			$tpl->set('error_msg', $e->getMessage());
		}
		$tpl_cuerpo = 'reporte_inicio.tpl.php';
        break;

    default:
		$tpl_cuerpo = 'reporte_inicio.tpl.php';
}

$tpl->set('reportes_lista_de_hoy', Trabajos::resumenTrabajoHoy());

$tpl->set('cabecera', $tpl_cabecera->fetch('cabecera.tpl.php'));
$tpl->set('pie', $tpl_pie->fetch('pie.tpl.php'));
echo $tpl->fetch($tpl_cuerpo);
  #2 (permalink)  
Antiguo 19/04/2011, 08:34
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años
Puntos: 3
Respuesta: recuperar datos para un formulario tipo checkbox y select

sigo con los archivos
la plantilla desde la que agrego y modifico:
Código:
  <?= $cabecera ?>  
        <div id="formulario">
<header><h1>Reporte de actividades</h1></header>
<div id="report_left">
    
    <FORM method="post" action="reportes.php">
    <input type="hidden" name="accion" value="<?php if(isset($accion)) print $accion;?>">
    <input type="hidden" value="<?php if(isset($trabajo->idtrabajo)){ print $trabajo->idtrabajo;} ?>">
    
        <span>Grupos:</span>
            <?php echo $grupo;   ?> 
                     
        <span>Proyecto:</span>
            <?php echo $proyecto; ?> 
        
        <span>Cliente:</span>
            <?php echo $cliente; ?>
            
        <span>Interlocutor</span>
            <?php echo $interlocutor;?>
        
        <span>Actividad:</span>
            <?php echo $actividad ?>
            
        <span>Fecha de inicio:</span>
            <input name="fechainicio" id="demo1" type="text" size="25" class="fechas" value="<?php if(isset($trabajo->f_inicio)){ print $trabajo->f_inicio;} ?>"/><a href="javascript:NewCal('demo1','ddmmyyyy')"><img src="js/cal.gif" width="16" height="16" border="0" alt="Selecciona una fecha de Inicio"></a>        
            
        <span>Fecha de fin</span>
            <input name="fechafin" id="demo2" type="text" size="25" class="fechas" value="<?php if(isset($trabajo->f_fin)){ print $trabajo->f_fin;} ?>"/><a href="javascript:NewCal('demo2','ddmmyyyy')"><img src="js/cal.gif" width="16" height="16" border="0" alt="Selecciona una fecha de Fin, si quieres..."></a>        
        
        <span>Descripci&oacute;n:</span>
        <textarea name="descripcion" value="<?php if(isset($trabajo->descripcion)){ print $trabajo->descripcion;} ?>"><?php if(isset($trabajo->descripcion)){ print $trabajo->descripcion;} ?></textarea>

        
</div>

<div id="report_right">
        
        
        <span>Status</span>
            <?php echo $statu;?>
        
        <span>Descripci&oacute;n del Status si Suspendido:</span>
             <textarea name="descripcionstatus" value="<?php if(isset($trabajo->descripcionstatus)){ print $trabajo->descripcionstatus;} ?>"><?php if(isset($trabajo->descripcionstatus)){ print $trabajo->descripcionstatus;} ?></textarea>
       
        <fieldset id="primero">
        <span>Cantidad:</span>
        <input type="text" name="cantidad" value="<?php if(isset($trabajo->cantidad)){ print $trabajo->cantidad;} else{print "1";} ?>"/>

        <span>Escalado:</span>
        <input type="text" name="escalado" value="<?php if(isset($trabajo->escalado)){ print $trabajo->escalado;} else{print "1";} ?>"/>
        
        <span>si escalado distinto de 1(jquery)</span>
        <textarea name="descripcionescalado" value="<?php if(isset($trabajo->descripcionescalado)){ print $trabajo->descripcionescalado;} ?>"><?php if(isset($trabajo->descripcionescalado)){ print $trabajo->descripcionescalado;} ?></textarea>
        </fieldset>
        
        <fieldset>
        <label>
        <input type="checkbox" name="pago" value="<?php if(isset($trabajo->pago)){ print $trabajo->pago;}  ?>"/>Pago Actuaci&oacute;n
        </label>
        
        <label>
        <input type="checkbox" name="nocturna" class="check"/>Nocturna
        </label >
 
         <label>
        <input type="checkbox" name="pagohoras" class="check"/>Pago de horas
        </label >
         
        <select name="horas">
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
            <option value="9">9</option>
            <option value="10">10</option>
            <option value="11">11</option>
            <option value="12">12</option>
        </select> 
          <!--      <script>  
                    if(!Modernizr.inputtype.number) {  input.stepUp(n);
                    input.stepDown(n);
                    input.valueAsNumber}</script>
        
                <button name="stepUp">
                <button name="stepDown">-->
        
<!--<input type="number" min="1"  step="1" value="1" class="spinbox">-->

        </fieldset>
        
        
        <input name="submit" type="submit" value="Env&iacute;a el trabajito!"/>
    </FORM>
    
</div>
</div>
        
  <?= $pie?>
?>[/CODE]

y la plantilla reporte_inicio.tpl.php

Código:
<?= $cabecera ?>
<p>Desde aqu&iacute; podemos administrar todo lo relativo a los Trabajos.</p>

<p><font color=red><?php if (isset($error_msg)) print $error_msg;?></font></p>
<table border="1" bgcolor="#ffffff" cellspacing="0" cellpadding="3" width="55%" align="left">
    
<tr>
<th colspan="10" align="left"><h3>Reportes | <a href="reportes.php?accion=anadir">A&ntilde;adir Actividad</a> </h3> </th>
</tr>

<tr>
<th colspan="10" align="left"><h3>Listado de actividades reportadas en el d&iacute;a de hoy.</h3> </th>
</tr>

<tr>
<!--<th>Indicador</th>
<th>Grupo</th>-->
<th>Cliente</th>
<th>Proyecto</th>
<th>Interlocutor</th>
<th>Fecha Inicio</th>
<!--<th>Fecha Fin</th>-->
<th>Descripcion</th>
<!--<th>Cantidad</th>
<th>Escalado</th>
<th>Descripcion Escalado</th>
<th>Precio Total</th>
<th>Pago Actuación</th>
<th>Nocturna</th>
<th>Comentarios</th>-->
<!--<th>Status</th>
<th>Descripcion Status</th>-->
<th>Actividad</th>
<!--<th>Precio</th>-->
<th>Talla</th>
<!--<th>Consultor</th>
<th>Pago horas</th>
<th>Horas</th>-->
<th>Acciones Posibles</th>
</tr>

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

<tr>
<!--<td bgcolor="#ffffff"><b><?=$reportehoy['indicador'];?></b></td>
<td ><b><?=$reportehoy['grupo'];?></b></td>-->
<td ><b><?=$reportehoy['cliente'];?></b></td>
<td ><b><?=$reportehoy['proyecto'];?></b></td>
<td ><b><?=$reportehoy['interlocutor'];?></b></td>
<td ><b><?=$reportehoy['fechainicio'];?></b></td>
<!--<td ><b><?=$reportehoy['fechafin'];?></b></td>-->
<td ><b><?=$reportehoy['descripcion'];?></b></td>
<!--<td ><b><?=$reportehoy['cantidad'];?></b></td>
<td ><b><?=$reportehoy['escalado'];?></b></td>
<td ><b><?=$reportehoy['descripcionescalado'];?></b></td>
<td ><b><?=$reportehoy['preciotot'];?></b></td>
<td ><b><?=$reportehoy['pagoactuacion'];?></b></td>
<td ><b><?=$reportehoy['nocturna'];?></b></td>
<td ><b><?=$reportehoy['comenta'];?></b></td>-->
<!--<td ><b><?=$reportehoy['status'];?></b></td>
<td ><b><?=$reportehoy['descripcionstatus'];?></b></td>-->
<td ><b><?=$reportehoy['actividad'];?></b></td>
<!--<td ><b><?=$reportehoy['precio'];?></b></td>-->
<td ><b><?=$reportehoy['talla'];?></b></td>
<!--<td ><b><?=$reportehoy['consultor'];?></b></td>
<td ><b><?=$reportehoy['pagohoras'];?></b></td>
<td ><b><?=$reportehoy['horas'];?></b></td>-->

<td>	<a href="reportes.php?accion=editar&idtrabajo=<?=$reportehoy['idtrabajo'];?>">Editar</a>&nbsp;&nbsp;
	<a href="reportes.php?accion=vereliminar&idtrabajo=<?=$reportehoy['idtrabajo'];?>">Borrar</a> </td>
</tr>

<?php
 
   }}
 else {
	print 'No hay proyectos... ¡Qu&eacute; vergüenza!';
}
?>


</table>

<?= $pie ?>
Muchas gracias por la ayuda!
  #3 (permalink)  
Antiguo 19/04/2011, 09:32
 
Fecha de Ingreso: septiembre-2008
Ubicación: Manises,Valencia
Mensajes: 114
Antigüedad: 15 años, 6 meses
Puntos: 13
Respuesta: recuperar datos para un formulario tipo checkbox y select

Hola,

Para que te salga "seleccionado" un "SELECT" has de poner tras de él "SELECTED".

Para los checkbox, no recuerdo ahora mismo pero seguro que es algo similar...

Sólo has de buscar en google...

Por si te sirve : http://www.webtaller.com/construccio...ios_html_2.php
  #4 (permalink)  
Antiguo 19/04/2011, 09:36
 
Fecha de Ingreso: septiembre-2008
Ubicación: Manises,Valencia
Mensajes: 114
Antigüedad: 15 años, 6 meses
Puntos: 13
Respuesta: recuperar datos para un formulario tipo checkbox y select

Hola de nuevo,

me he quedado a medias...

Supongo que no te hará falta, pero por si acaso,...

El incluir el SELECTED irá en función del valor que haya de estar seleccionado por el valor que está en la tabla de origen de datos.
  #5 (permalink)  
Antiguo 20/04/2011, 01:52
 
Fecha de Ingreso: abril-2011
Mensajes: 103
Antigüedad: 13 años
Puntos: 3
Respuesta: recuperar datos para un formulario tipo checkbox y select

Hola fontanares gracias por la respuesta.
Creo que no me he explicado bien. El elemento que debe aparecer (selected) es uno que se obtiene de la base de datos y no uno de una lista de <option>.
El problema es que no pasa por el if de la función obtenerClientes, yendo siempre por el else, mientras que en el resto de input no hay problema con esto:

Código:
if(isset($trabajo->cliente))
A la función obtenerClientes la llamo desde el archivo reportes.php en el case= editar y los datos se mostrarían desde la primera de las plantillas.

Muchas gracias
  #6 (permalink)  
Antiguo 20/04/2011, 10:38
 
Fecha de Ingreso: septiembre-2008
Ubicación: Manises,Valencia
Mensajes: 114
Antigüedad: 15 años, 6 meses
Puntos: 13
Respuesta: recuperar datos para un formulario tipo checkbox y select

Vale, no me he explicado bien:

Te pongo un ejemplo.

Tienes una tabla llamada "marca", en la que hay 4 registros, haces un query desde php y recuperas los registros.
Con estos datos rellenas el select, y como tienes el valor que has recogido de un formulario (supongo), llamemosle $marca_form añades un if:

//Aqui empieza la extracción de datos de la base de datos
$argumento_recupero_marcas = "select marca from marca";
$marca_bd = mysql_query($argumento_recupero_marcas) or die ("No he podido..." . $argumento_recupero_marcas);
//Aquí empieza la escritura del select
print ("<select name=\"marca\">\n");
while ($m = mysql_fetch_array($marca_bd)
{
print (" <option value=" . $m[marca]");
if ($marca_form == $m[marca]) print ("selected");
print (">" . $m[marca] . "</option>\n");
}
print ("</select>\n");

Así cuando el registro sea igual al datos que tienes seleccionado se añadirá el "selected"

Creo que ahora está más que claro, espero que te sirva.

Etiquetas: checkbox, recuperar, select, tipo, formulario
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 17:36.