Foros del Web » Programando para Internet » PHP »

campos textbox dinamicos

Estas en el tema de campos textbox dinamicos en el foro de PHP en Foros del Web. Hola amigos mi consulta es la siguiente. En un formulario tengo la opcion para indicar cuantos textos ingresar. de esta forma. <input name="cant_news" type="text" class="form1" ...
  #1 (permalink)  
Antiguo 09/08/2005, 10:44
Avatar de pablod  
Fecha de Ingreso: abril-2004
Ubicación: Santiago
Mensajes: 118
Antigüedad: 13 años, 8 meses
Puntos: 0
campos textbox dinamicos

Hola amigos mi consulta es la siguiente.

En un formulario tengo la opcion para indicar cuantos textos ingresar. de esta forma.

<input name="cant_news" type="text" class="form1" size="10">

Luego con el valor enviado desde el campo anterior, se crean dinamicamente los campos indicados por el usuario. Por ejemplo si indica 3 se crean los siguientes:
<input name="news1" type="text" class="form1" size="10">
<input name="news2" type="text" class="form1" size="10">
<input name="news3" type="text" class="form1" size="10">

Hasta ahi todo bien, ahora necesito insertar estos datos en una tabla y como son dinamicos no se como indicar en el insert cuantos registros son...
Ademas necesito saber como lo hago para rescatar estos campos con $_POST

Espero sus sugerencias

Gracias de antemano

Pablo.-
__________________
Pablod:-)
  #2 (permalink)  
Antiguo 09/08/2005, 10:52
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
Puedes hacer lo siguente en el script que recibe el formulario (aunque no sé si es la mejor opción)

Código PHP:
$num_de_news 0;
foreach ( 
$_POST as $indice=>valor )
     if ( ( 
ereg "news" $indice ) ) && ( is_numeric $indice{4} ) ) && $valor != "" )
     {
          
$num_de_news++; // esto sería por si quieres contar el numero de news enviadas
          // también podrías aqui ya hacer tu insert usando $valor
     

A ver si te sirve, salu2 ;)
__________________
[+]
[+]
  #3 (permalink)  
Antiguo 09/08/2005, 11:09
Avatar de pablod  
Fecha de Ingreso: abril-2004
Ubicación: Santiago
Mensajes: 118
Antigüedad: 13 años, 8 meses
Puntos: 0
Hola yoseman, gracias por tu respuesta

La verdad es que no entiendo mucho como funciona la funcion ereg, por otro lado esto me sirve si ademas de ese campo dinamico el formulrio tiene otros campos???

Saludos

Pablo.-
__________________
Pablod:-)
  #4 (permalink)  
Antiguo 09/08/2005, 11:39
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 14 años
Puntos: 5
Lo que hace ése ejemplo es lo siguiente:

- Va recorriendo con un foreach el array $_POST y a cada iteración obtienes el índice actual en $indice y su valor en $valor

- Para cada par $indice=>$valor evaluamos lo siguiente:

1. Que el índice actual contenga la palabra "news"
2. Que además en el índice el caracter que sigue a la 's' sea un número
3. Que el valor para el índice actual no sea nulo

- Si entramos en el if es que podemos hacer ya el INSERT en nuestra DB

Puedes hacerlo de otra forma si te resulta más sencillo. Se trata de nombrar los campos como un array directamente:
Código PHP:
<input name="news[1]" type="text" class="form1" size="10">
<
input name="news[2]" type="text" class="form1" size="10">
<
input name="news[3]" type="text" class="form1" size="10"
Y entonces luego el ereg ya no lo necesitas usar, simplemente recorres el array $_POST['news']
Código PHP:
 $num_de_news 0;
if ( 
is_array $_POST['news'] ) )
{
    foreach ( 
$_POST['news'] as $indice=>valor )
    if ( 
$valor != "" )
    {
        
// haces tu insert usando $valor
    


Ya depende de si por necesidad requieres nombrar los campos cómo news1, news2, news3, newsN
Por otra parte el ejemplo que te puse en el anterior mensaje te sirve tb si el formulario tiene otros campos, ya que a cada iteración del foreach comprueba que estamos en el campo que nos interesa.
Ya depende de cada uno, el usar una forma u otra

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 09/08/2005 a las 11:49
  #5 (permalink)  
Antiguo 09/08/2005, 11:56
Avatar de pablod  
Fecha de Ingreso: abril-2004
Ubicación: Santiago
Mensajes: 118
Antigüedad: 13 años, 8 meses
Puntos: 0
ok, mira he probado el siguiente codigo pero NO me da resultados

Pagina1: indico el numero de campos
<form name="form1" method="post" action="genera_campos.php">
Indique el numero de campos: <input name="ncampos" type="text" id="ncampos" size="5">
<br>
<input type="submit" name="Submit" value="Enviar">
</form>

Pagina2: procesa y genera los campos indicados
<form name="form1" method="post" action="ingresar.php">

<?
$cont = 1;
while($cont <= $num_campos) {
?>
Datos de la new: <input name="new[<? echo $cont ?>]" type="text" size="5"><br>
<?
$cont++;
}

?>
<input name="enviar" type="submit" value="Enviar">
</form>

Pagina3: procesar las news ingresadas e insertarlas a la tabla
$num_de_news = 0;
if ( is_array ( $_POST['news'] ) )
{
foreach ( $_POST['news'] as $indice => $valor )
if ( $valor != "" )
{
$num_de_news++; // esto sería por si quieres contar el numero de news enviadas
// también podrías aqui ya hacer tu insert usando $valor
echo $valor;
}
}


Esas son los tres script, en el tercero quiero imprimir el valor q trae la news para ver si funciona pero no imprime nada.....

Gracias por tu ayuda.-

Saludos Pablo.-
__________________
Pablod:-)
  #6 (permalink)  
Antiguo 09/08/2005, 12:05
Avatar de pablod  
Fecha de Ingreso: abril-2004
Ubicación: Santiago
Mensajes: 118
Antigüedad: 13 años, 8 meses
Puntos: 0
SIIIIII

Funciono gracias por tu ayuda yoseman

El problema q los campos se estaban generando con el nombre "new" y no "news".

Cada día se aprende algo nuevo

Saludos Pablo.-
__________________
Pablod:-)
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:38.