Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

 
 
Herramientas Buscar en Tema Desplegado
  #9  
Antiguo 11-05-2007
semptrion semptrion is offline
Miembro
 
Registrado: abr 2007
Posts: 112
Poder: 20
semptrion Va por buen camino
Un método un poco gastado pero que funciona

Para cargar datos (cuyo número es variable) utilizo la técnica de colocar varias filas de los datos requeridos en blanco.

Más o menos defino lo siguiente:

Una tabla padre (la de los datos del grupo)

Una tabla de hijos (la de los datos de los miembros del grupo)

Por costumbre, los datos de la tabla padre se colocan en la parte superior del formulario:
Código:
Nombre del grupo: [_______________________]
Título del trabajo: [_______________________]
Director: [___________________v]
etc.
y luego, en cada fila los nombres de los miembros del grupo:
Código:
Nombre                       Campo2               Campo3        Eliminar
-----------------------------------------------------------------------------
[Juan Pérez_____]         [foo__________]         [foo______]    [ ]
[Fulano de Tal___]        [foo__________]         [foo______]    [ ]
[Mengano de cual]         [foo__________]         [foo______]    [ ]
.
.
.
y luego espacios vacíos para colocar otros nombres (nótese que no hay eliminar):
Código:
[______________]         [______________]         [_________] 
[______________]         [______________]         [_________] 
[______________]         [______________]         [_________] 
[______________]         [______________]         [_________] 
[______________]         [______________]         [_________]
La cantidad de filas "en blanco" depende de la aplicación del formulario. Algunos serán suficientes con tres, otros con uno, quizá otros con diez. Por ejemplo si lo normal es que sean equipos de diez personas, se colocarán cinco líneas en blanco (de tal manera que en dos grabaciones se alcance el total).

Una vez que se envíe el formulario, al aparecer los datos en pantalla, nuevamente aparecerán la misma cantidad original de líneas en blanco (por si sea un equipo de 14 miembros). Y así sucesivamente.

La lógica de programación será que cada uno de los inputs, selects o buttons de la tabla de hijos tendrá, en el nombre de la variable, una conformación de array asociativo bidimensional donde la primera llave será el id del registro y la segunda el nombre del campo.

Por ejemplo, si ya existen tres registros en la tabla de hijos con los ids 123, 811 y 2314 los inputs tendrán la forma:
Código:
<input name="hijos[123][nombre]" type="text" value="Juan Pérez" />
<input name="hijos[811][nombre]" type="text" value="Fulano de Tal" />
<input name="hijos[2314][nombre]" type="text" value="Mengano de Cual" />
Si fuesen selects, serán:
Código:
<select name="hijos[123][campo2]" >...</select>
<select name="hijos[811][campo2]" >...</select>
<select name="hijos[2314][campo2]" >...</select>
Para los registros nuevos, se utilizarán número negativos descendientes:
Código:
<input name="hijos[-1][nombre]" type="text" value="" />
<input name="hijos[-2][nombre]" type="text" value="" />
<input name="hijos[-3][nombre]" type="text" value="" />
<input name="hijos[-4][nombre]" type="text" value="" />
etc.
Para recuperar los datos en el PHP, se empleará un array asociativo regular.

P.e.
Código PHP:
$hijos $_POST['hijos']; 
y luego se procederá a grabarlos:
Código PHP:
foreach( $hijos as $id => $campo ) {
    
/* Validar los campos del registro */
    
if ( $id && empty( $campo['nombre' ) ) {
        
$error[$id] = 'No se ha colocado el nombre';
    }
    
/* ...y otras validaciones */
    /* si todo está ok, entonces grabaremos o insertaremos, según el id */
    
if ( $id ) {
        
$query 'update miembros set '
            
' nombre=' $campo['nombre']
            . 
', campo2=' $campo['campo2']
            . 
', campo3=' $campo['campo3']
            . 
' where id = ' $id;
        
/* ejecutamos el query, como sea que lo hagamos */
     
} else {
        
$nuevoId generarId'miembros' );
        
// se supone que conocemos el id del grupo $idGrupo
        
$query 'insert into miembros '
             
'( id, idgrupo, nombre, campo2, campo3 ) values ( ' 
            
', ' $nuevoId
            
', ' $idgrupo
            
', ' $campo['nombre']
            . 
', ' $campo['campo2']
            . 
', ' $campo['campo3']
             . 
')';
        
/* ejecutamos el query, como sea que lo hagamos */
    
}

En cuanto al tema de centrear el contenido de un control, sugiero que se utilicen clases css. Por ejemplo,
Código:
<input type="text" class="center" />
Y luego definir en el css:
Código:
.center { text-align: center; }
Así, el control es estructural y el formateo es semántico, dejando la apariencia donde debe estar: en el css.

Espero te sirva.

Saludos

Última edición por semptrion fecha: 11-05-2007 a las 03:56:35.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
variable dentro de una variable molinero1 Varios 3 23-04-2007 12:44:48
Variable!! jdattoli Conexión con bases de datos 3 10-05-2006 10:10:04
variable con sql Cosgaya Tablas planas 3 15-12-2005 15:49:14
pasar datos de un formulario vista a cualquier formulario @-Soft OOP 2 28-09-2004 21:56:01
Hacer visible un formulario cuyo nombre temgo en una variable apicito OOP 1 25-11-2003 19:24:59


La franja horaria es GMT +2. Ahora son las 06:04:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi