Foros del Web » Programando para Internet » PHP »

Diferenciar elementos creados con while

Estas en el tema de Diferenciar elementos creados con while en el foro de PHP en Foros del Web. Hola. Quiero hacer un formulario donde los campos de texto no sean estáticos, es decir, introducir un while y a partir de una opción anterior ...
  #1 (permalink)  
Antiguo 25/01/2011, 06:02
 
Fecha de Ingreso: enero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Diferenciar elementos creados con while

Hola.
Quiero hacer un formulario donde los campos de texto no sean estáticos, es decir, introducir un while y a partir de una opción anterior que haya 2 o 3 campos de texto.

Al crear los campos de texto con el while, como los identifico con un nombre diferente para luego recoger los datos de cada uno?
  #2 (permalink)  
Antiguo 25/01/2011, 06:16
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años
Puntos: 26
Respuesta: Diferenciar elementos creados con while

Te dejo un ejemplo muy simple de lo que pides:
Código PHP:
<? 
print_r
($_POST);
$x=0;
echo 
"<form method='post'>";
while(
$x<3){
    echo 
"<input type='text' name='texto_$x' /><br>";
    
$x++;
}
echo 
"<input type='submit' />";
echo 
"</form>";
?>
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #3 (permalink)  
Antiguo 26/01/2011, 05:00
 
Fecha de Ingreso: enero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Diferenciar elementos creados con while

Pero con el ejemplo que me has dado, como hago luego para recoger la información que le doy en el formulario, en ese textarea concreto?

Según el ejemplo yo recojo la información con:

Código PHP:
echo $_POST['texto_$x'] ; 
Pero al haber dos signos de variable me da un error. Obviamente ésa no es la manera de recoger los datos, pero no sé como.
  #4 (permalink)  
Antiguo 26/01/2011, 05:53
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años
Puntos: 26
Respuesta: Diferenciar elementos creados con while

Tu sabes que el 1º textarea se dirá $_POST['texto_0'], el 2º $_POST['texto_1'] y así succesivamente.

PD: Para eso te puse el print_r(). Para que vieras el nombre de la variable por post.
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #5 (permalink)  
Antiguo 26/01/2011, 06:25
 
Fecha de Ingreso: enero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Diferenciar elementos creados con while

Perdón, en vez de usar el código entero cogí solo la idea del texto_$x.

Ya había pensado en poner el número en el lugar de la variable, pero me da el error:
Notice: Undefined index: enunciat_resposta_0


Inserto las partes del código donde utilizo esto para que lo entiendas en contexto:
Código PHP:
<table width="100%"  border="0">
<?php  
$resp
=0;
while (
$resp<$n_resp) {
?>
<tr>
    <td><span class="Estilo1">
      <textarea name="enunciat_resposta_$resp" id="enunciat_resposta_$resp"></textarea>
    </span></td>
  </tr>
<?php $resp++;
?>
</table>
Código PHP:
echo $_POST['enunciat_resposta_0'] ; 
  #6 (permalink)  
Antiguo 26/01/2011, 06:36
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años
Puntos: 26
Respuesta: Diferenciar elementos creados con while

Ten en cuenta que cuando haces:
Código HTML:
<tr> 
    <td><span class="Estilo1"> 
      <textarea name="enunciat_resposta_$resp" id="enunciat_resposta_$resp"></textarea> 
    </span></td> 
  </tr> 
estas haciendo puro html, mientras que de por medio pones la variable $resp. Mírate ese trozo de código que es donde esta el error.
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #7 (permalink)  
Antiguo 26/01/2011, 06:45
 
Fecha de Ingreso: enero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Diferenciar elementos creados con while

Tienes razón. Luego la solución es:

Código HTML:
 <textarea name="enunciat_resposta_<?php echo $resp;?>" id="enunciat_resposta_<?php echo $resp;?>"></textarea> 
He probado un ejemplo rápido y me ha funcionado.

Gracias.
  #8 (permalink)  
Antiguo 27/01/2011, 04:16
 
Fecha de Ingreso: enero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Diferenciar elementos creados con while

Siguiendo con el mismo problema me he encontrado otro.

Al tener los textos como texto_0, texto_1, etc. si los quiero insertar en una base de datos necesito crear otro while con un contador de 0 a i para tantas i como textos tenga. Pero dentro del while ¿como le digo que es el texto_0 o el texto_1? Porque no se puede hacer:
Código PHP:
$texto_$i 
Había pensado en arrays, ya que supongo que sí se podria hacer:

Código PHP:
$texto[$i
Pero ahora el problema está en lo del inicio del post. ¿Como creo los textos con el while para obtener todos los datos en una array y no en variables diferentes?

Si no hace falta crear la array, entonces lo único que quiero es una solución para poder insertar todos estos textos en mi base de datos.
  #9 (permalink)  
Antiguo 31/01/2011, 03:51
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años
Puntos: 26
Respuesta: Diferenciar elementos creados con while

Más o menos seria esto lo que quieres, creo:
Código PHP:
<? 
print_r
($_POST);
echo 
"<br>".$_POST['array'][0]."<br>";
echo 
$_POST['array'][1]."<br>";
echo 
$_POST['array'][2]."<br>";
$x=0;
echo 
"<form method='post'>";
while(
$x<3){
    echo 
"<input type='text' name='array[]' /><br>";
    
$x++;
}
echo 
"<input type='submit' />";
echo 
"</form>";
?>
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #10 (permalink)  
Antiguo 15/02/2011, 06:05
 
Fecha de Ingreso: enero-2011
Mensajes: 6
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Diferenciar elementos creados con while

Solucionado.

Gracias.

Etiquetas: elementos
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 21:27.