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 Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-05-2007
Shadowless Shadowless is offline
Miembro
 
Registrado: abr 2007
Posts: 33
Poder: 0
Shadowless Va por buen camino
Muchas gracias por la ayuda !!! Creo que ya he solucionado parte del problema y además he aprendido a manejar mejor los métodos. ^_^
Un último detalle por favor.
Qué propiedad debo usar y dónde, para que los campos que se generen estén alineados en el centro en lugar de la izq ?
Muchas gracias.
Un saludo.
Responder Con Cita
  #2  
Antiguo 01-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Si te refieres a centrar el texto de los "input" entonces puedes usar algo así:

Código:
<input type="text" style="text-align: center" />
Si lo que quieres es centrar los propios "input" entonces algo como esto:

Código:
<div style="text-align: center">
 <input type="text" />
</div>
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
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
  #4  
Antiguo 13-05-2007
Shadowless Shadowless is offline
Miembro
 
Registrado: abr 2007
Posts: 33
Poder: 0
Shadowless Va por buen camino
Muchas gracias por la ayuda !!!
Lamento ho haber contestado antes pero es que no he tenido internet en un tiempo.
Probaré el método que me dices semptrion, que parece interesante, aunque he utilizado el ejemplo de roman y ya he podido resolver un poco el problema.
Una pequeña duda y ya dejo de incordiar.
Cómo puedo introducir una variable de control para limitar el número de campos que se pueden crear mediante un método ?
Muchas gracias de antemano.
Responder Con Cita
  #5  
Antiguo 13-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.141
Poder: 36
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
Empezado por Shadowless
Cómo puedo introducir una variable de control para limitar el número de campos que se pueden crear mediante un método ?
Siguiendo el código fuente de Román podríamos añadir algo como esto:

Código PHP:
<script type='text/javascript'>

/**
 * Máximo número de miembros
 */
MAX_MIEMBROS 4;

/**
 * Número total de miembros
 */
totalMiembros 0;

function 
docLoad()
{
  
/**
   * Guardamos una referencia a la lista de miembros
   */
  
oDivMiembros document.getElementById("miembros");
}

function 
agregarMiembro()
{
  
/**
   * Si el número de campos supera el máximo no continuamos
   */
  
if(totalMiembros >= MAX_MIEMBROS){
    
alert('Superaste el número máximo de miembros');
    return 
false;
  }

  
/**
   * Creamos un objeto input para un nuevo miembro
   */
  
var oInput document.createElement('input');
  
  
/**
   * Asignamos propiedades
   */
  
oInput.type 'text';
  
oInput.name 'miembros[]';

  
/**
   * Insertamos el objeto input en la lista de miembros
   */
  
oDivMiembros.appendChild(oInput);
  
  
/**
   * Incrementamos la variable para el "control" del número de miembros
   */
  
totalMiembros++;

  
/**
   * Ponemos el foco del teclado en el cuadro de texto insertado
   */
  
oInput.focus();
}
</script> 
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 14-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A lo apuntado por dec, sólo añadiría que además de la restricción por javascript, deberemos hacer la propia en el script php que reciba los datos. Saltarse el javascript puede ser relativamente fácil, y si la restricción en el límite de elementos es importante para tu sistema, no debes confiar en lo que venga del cliente y hacer tus propias comprobaciones del lado del servidor.

// Saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 02:24:11.


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