entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

Simplificar un llenado de chekboxes

Hola amigos como siempre tengo que desarrollar y no me da mucho tiempo de simplificar mis procesos más que nada por que me retrasaría en ves de ayudarme.

Suponiendo estos 5 elementos... ¿como simplificarlo para "n" elementos?.

Saludos.

$inputChekbox = "<input type='checkbox' disabled ";
$documentos = $inputChekbox." title='carta'";
$documentos .= ($campo["carta"] != null) ? "checked >" : ">";
$documentos .= $inputChekbox." title='curriculum'";
$documentos .= ($campo["curriculum"] != null) ? "checked >" : ">";
$documentos .= $inputChekbox." title='memoria fotografica'";
$documentos .= ($campo["memoria_foto"] != null) ? "checked >" : ">";
$documentos .= $inputChekbox." title='supervision'";
$documentos .= ($campo["supervision"] != null) ? "checked >" : ">";
$documentos .= $inputChekbox." title='certificacion'";
$documentos .= ($campo["certificacion"] != null) ? "checked >" : ">";

2 Respuestas

1voto

Leonardo-Tadei Puntos227320

Hola Porfirio,

podría ser algo así:

<?php
/*
* @Prometeus Technology, a subsidiary of Pegasus Tech Supply
* @copyright Copyright (C) 2005-2013 Leonardo Tadei. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see gpl-3.0.txt
* Checkboxes is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
*/

// Configura los checkboxes a generar
// nombre, titulo, checkeado, habilitado
$ch = array(
    array('carta', 'carta', true, false),
    array('curriculom', 'CV', true, true),
    array('memoria_foto', 'memoria fotográfica', false, true),
    array('supervision', 'supervision', true, true)
);

function generarCheckbox($par) {
    $tmp = '';
    foreach($par as $e){
        $k = ''; if($e[2]) { $k = ' checked '; }
        $d = ''; if($e[3]) { $d = ' disabled '; }
        $tmp .= "<input type='checkbox' name='{$e[0]}' id='{$e[0]}' title='{$e[1]}'  $k $d />\n";   
    }
    return $tmp;    
}

$salida = generarCheckbox($ch);
?>
<!DOCTYPE html>
<html>
<head>
<title>Generar Checkboxes</title>
<meta name="generator" content="Bluefish 2.2.3" />
<meta name="author" content="leo" />
<meta name="date" content="2013-11-11T16:51:00-0300" />
<meta name="copyright" content=""/>
<meta http-equiv="content-type" content="application/xhtml+xml; charset=UTF-8"/>
</head>
<body>
<form name="ff" id="ff" action="?" method="post">
<?php print($salida); ?>
</form>
</body>
</html>

Con esto, generar más checkbox es agregar elementos al vector.

Sin embargo, yo haría que la función devuelva un solo elemento en vez de devolver todos, para poder controlar mejor cuándo emitir cada checkbox.

Depende de cómo estructures tus formularios, pero tal vez sería buena idea generar también un LABEL que contenga el TITLE, así queda también la parte que ve el usuario del formulario.

Se podría generalizar más todavía para generar diferentes tipos de inputs, pero esto tiene que ser siempre más fácil de usar que el HTML, porque si no nadie lo usará.

Saludos!

1voto

pedro_cabrera Puntos1130
$inputChekbox = "<input type='checkbox' disabled  title='acambiar' ".($campo['acambiar'] != null) ? 'checked':'';." />" ;
$campos=array('campo1','campo2','etc');
for($i=0;$i<count($campos);$i++){
  echo str_replace('acambiar', $campos[$i], $inputCheckbox);
}

Espero te sirva, salvo error u omisión
Saludos
Pedro

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta