PHP - Obtener contenido de un input sin saber su 'name'

 
Vista:

Obtener contenido de un input sin saber su 'name'

Publicado por sacrram (10 intervenciones) el 30/08/2008 15:04:11
Hola a todos,
os voy a explicar mi problema a ver si podeis darme una pista de como empezar...

Tengo una serie de DIVs cuyo número no puedo conocer porque dependerá del número de veces que pulse el usuario un botón (se van creando con javascript). Cada uno de los DIV que aparecen contiene un input text, un botón, un DIV y otro botón. El contenedor (el que engloba el input, los botones...) tendrá de identificador modulo_X... la X valdrá 0,1, 2,,,dependiendo de si es el primero, el segundo... El contenido de cada módulo tiene como identificador: los botones div_X y b_X respectivamente, el input tiene como name cap_X y el div tiene como identificador Cont_X...

Lo que necesito es que al pulsar el usuario un botón, obtener (mediante PHP) los valores de esos input text, el problema es que como habeis visto el nombre cambia, lo mismo es cap_0 que cap_1000.

EL problema es que la forma que se me ocurre de leer esos datos que necesito es con javascript, pero por lo que he leido, desde javascript no meter esa información en la base dse datos ni meterla en un documento que me cree...

RESÚMEN: (que me voy por las ramas) ¿Se puede obtener el valor de los inputs text creados con javascript, CON PHP, teniendo en cuenta que los 'name' no los sé?

Muchas gracias

---Por cierto he visto que en algunos casos la gente le pone identificadores a los input text, pero ¿es correcto? y ¿cómo podría acceder a esa información? Porque si tengo <input type="text" name="ejemplo" value="mostrar" id="cap_0"/>
con echo $ejemplo me devuelve el contenido, en este caso "mostrar", pero ¿y el identificador?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Obtener contenido de un input sin saber su 'na

Publicado por Juan (54 intervenciones) el 30/08/2008 16:27:27
Que tal!!!!!!!!!!, he mirado el problema y no me queda muy claro lo que se pretender hacer, mas o menos entendi esto:

El usuario va agregando input a medidad que pulsa un boton, luego esta informacion debe ser capturada y enviada a un script en php para que la procese.

Pues yo creeria que se puede intentar asi:

Cuando el usuario pulse el boton se llama a una funcion construida en javascript que tome todos los elementos por su tag, en otras palabras todos esos input.

Esta funcion ademas debe crear una cadena con esta informacion para enviarla por get a un script en php.

Este script en php recibe la informacion pasada en el get y con ella determina que hacer.

O tambien se puede mirar lo siguiente:

Sin tener en cuenta el javascript, mirar en el script cuando se reciba la informacion que se ha recibido asi:

foreach ($_POST as $value){
AQUI SE MIRA QUE SE HACE CON LA INFORMACION, COMO VERIFICAR
CAMPOS QUE TIPO DE DATOS SON Y OTRAS
}

Hay que recordar que en php siempre es necesario verificar que tipo de info se recibe, esto para envitar que nos ingresen codigos maliciosos a la base de datos.

Espero que sea de ayuda

suerte.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por sacrram (10 intervenciones) el 30/08/2008 20:20:23
Es la segunda vez que me equivovo contestando, porque lo he hecho como mensaje aparte, y como respuesta a mi propio mensaje (lo digo por si lo puedes leer...).
De todas formas ésta vez espero que la respuesta sea a lo que me has escrito...
Lo resumo por si acaso:
Juan, cuando dices:
"Esta funcion ademas debe crear una cadena con esta informacion para enviarla por get a un script en php."

Ésta cadena puede ser bidimensional?? cómo puedo buscar ejemplos de lo que me pones (lo dse enviar con get)??

Muchas graciassss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por Diego Romero (1450 intervenciones) el 30/08/2008 17:59:31
Entendí tu problema.

Cuando creas dinámicamente los inputs con JavaScript asignale a todos este "name":

name="datos[]"

Así, con los corchetes rectos.

Luego en PHP, para recoger los valores procede de esta manera (asumiendo que el method del form es "post"):

<?php
foreach ($_POST["datos"] as $key => $value) {
echo "El dato de ".$key." es: ".$value."<br>";
}
?>

El "truco" está en que cuando un grupo de inputs tiene un name como el mostrado finalizando con corchetes rectos, el navegador crea un array numérico que luego PHP convierte en un array dentro de $_POST. El foreach te sirve para recorrer el array dentro del array $_POST.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por sacrram (10 intervenciones) el 30/08/2008 20:24:30
Hola Diego, como le he puesto a Juan, me he equivocado dos veces, y la respuesta que os he escrito la he puesto como nuevo tema en el foro y como respuesta a mi propio tema (por si lo puedes leer).
De todas formas a tí te decís, que esa solución la he usado en otra parte de mi código porque eran chackbox y me valía, pero en mi caso de ahora, creo que no me vale, porque necesito que el name, o el id tengan el valor 'loquesea_X_X_X' para que una vez que tenga los valores, pueda saber a que corresponden...
Por favor si puedes lee la respuesta que os he escrito, que creo que me expliqué mejor.

Muchas graciasssss
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por sacrram (10 intervenciones) el 30/08/2008 19:21:48
Perdón que lo he puesto fuera jejeje es que es la primera vez que uso el foro jejejeje.

El problema de ambas soluciones, o eso creo, es que no podre saber desde php a qué input correspondían.
Necesito tener el identificador o 'name' como 'loquesea_X_X_X' (cambia a como lo he puesto antes), de ésta forma sabré que input depende de cual. Cuando el usuario va pulsando el botón, crea inputs de forma jerarquica, la primera vez, crea un input que se llama, loquesea_1, si teniendo el cursor en éste input pulsa el botón de nuevo, aparecerá el input 'loquesea_1_1' y si lo vuelve a pulsar aparecerá 'loquesea_1_2' ... yo necesito en php el 'name' del input y su contenido para poder crear un docuemento XML donde voy a poner una jerarquía mostrando los valores de los input, pero necesito saber cual depende de cual....
Espero haberme explicado mejor ahora, aunque creo que lo he liado más, porque antes intenté simplificarlo jejeje.
Lo de poner el mismo 'name' lo he usado en otro código y si que funciona bien, pero claro, en éste caso no puedo usarlo...o eso creo.
Lo de pasar la información en una variable...podría valerme ¿pero puede ser bidimensional? y ¿qué puedo buscar para encontrar ejemplos e informaciín de eso (de cómo crearla y cómo pasarla a un script php)?

Muchas gracias a los dos por contestar tan rápido!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por Diego Romero (1450 intervenciones) el 30/08/2008 20:25:59
Con mi solución eso es automático porque el array que se crea tiene índice numérico y consecutivo.

$_POST["datos"][0] <--- el primero
$_POST["datos"][1] <--- el segundo
$_POST["datos"][2] <--- el tercero
$_POST["datos"][3] <--- el cuarto...

... and so on
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por sacrram (10 intervenciones) el 30/08/2008 20:40:44
A lo mejor es mi problema, que no me entero bien de tu solución, pero sigo sin verla...

Tal y como tú lo pones yo tendría los inputs declarados así:

<input type="text" name="loquesea[]" />

De ésta forma yo tendría todos los contenidos de los inputs en PHP con un:

foreach($loquesea as $contenido)
echo $contenido

El problema es que a parte del contenido, necesito saber el name o identificador del input, para poder saber a qué input pertenece el contenido, vamos que tendría que declararlos como:

<input type="text" name="loquesea[]" id="loquesea_".$contador />

De ésta forma el identificador sería loquesea_1, loquesea_2 ..., pero claro en PHP no puedo acceder al identificador...

Muchas gracias de nuevo por contestar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por Diego Romero (1450 intervenciones) el 31/08/2008 08:20:24
Pero es que no lees o escribo en chino?.

foreach($loquesea as $name => $contenido) {
echo $contenido }

En $name tienes el NOMBRE!!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por sacrram (10 intervenciones) el 31/08/2008 13:49:28
Que lata te voy a dar...

¿Pero para poder hacer ese foreach, no tiene que ser el nombre igual para todos? Vamos que tendría que declarar los inputs con name="loquesea[]" , entonces en $name siempre devolverá 'loquesea' ¿no?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por Diego Romero (1450 intervenciones) el 31/08/2008 15:55:03
Se nota que no has probado el código que te pasé, si no, no harías la pregunta que me haces.

Tú ya sabes cuál es el nombre ("loquesea") y en $key (en mi código) obtienes el número que luego añadido a "loquesea" te da el nombre completo. Es todo lo que necesitas para resolver tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por sacrram (10 intervenciones) el 31/08/2008 16:10:00
Gracias de nuevo por contestar. He probado tu código, pero no es exactamente lo que quiero. Tú código me devuelve:

0 contenido0
1 contenido1
2 contenido2
.
.
.
Lo que pasa es que yo le tengo que dar como name o como id a cada input una forma así:
loquesea_X
loquesea_X_X
loquesea_X_X_X
Para que simule una jerarquía: Por ejemplo:

Capitulo_1
Capítulo_1_1
Capítulo_1_1_1
Capitulo_1_2
Capitulo_2
.
.
.
Y lo que tendría que obtener es ese name o id junto con el contenido del input....puedes ayudarme?

Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por Diego Romero (1450 intervenciones) el 31/08/2008 23:00:29
¿Por qué tiene que ser de esa forma?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por sacrram (10 intervenciones) el 01/09/2008 00:08:37
La verdad es que es porque no se me ocurre de otra...pero t cuento por si tu sabes una forma mejor...
La idea es que el usuario pueda crear una estructura, como si fuera un libro, con capítulos, subcapítulos, subcap´tilos de subcapítulos.... y a cada 'capítulo', subcapítulo...pueda añadirle o no un recurso. Ejemplos para que se entienda:
1. La historia de España
1.1 El siglo XIX --> documento.doc
1.2 El siglo XX
1.2.1 Primera mitad -->documento1.pdf
1.2.2 Segunda mitad
1.2.2.1 Los 60 --> documento2.doc
1.2.2.2 Los 70 --> documento3.txt
.
.
.
La estructura es como el usuario quiera.... Entonces he creado, y con muchos problemas y ayuda, una 'interfaz' con php y javascript, donde aparece un input text (que hará de título y que no puede tener ningún documento o archivo adjunto), y si sepulsa sobre él y le se da a un botón 'add_capitulo' aparece debajo (un poco a la derecha) otro input que haría de capítulo 1, dd el usuario va a darle el título del capítulo, un botón para borrarlo todo, un contenedor, donde el usuario va a poder arrastrar el documento, si es que quiere asociar un documento a ese capítulo, y un botón borrar que vacíe el contenedor, por si el usuario se ha equivocado de documento.
Ahora el usuario puede dejar pulsado el input título y seguir añadiendo capítulos, el siguiente aparecería debado del 1 y sería el 2, o puede pulsar en el capítulo creado (el input que acaba de aparecer) y crear debajo de ese, pero más a la derecha otra fila de input boton contenedor botón...y que como depende del primero, sería el capitulo 1.1...

Así sucesivamente.

Necesita que tenga esos nombre, porque cuando yo saque esa información, la tengo que meter en un xml, y tengo que saber qué depende de qué. El 1.2.1 y 1.2.2 dependen de 1.2, a su vez 1.2 y 1.1 dependen de 1 .....

Espero que se me haya entendido...que me explico un poco mal...

Según me puso Juan en su contestación, yo podría leer la información con javascript, y había pensado meterla en un vector bidimensional, que relacione identificador con contenido:
cap_1 historia de España
cap_1_1 El siglo XIX
cap_1_2 El siglo XX
.
.
.
Pero no sé si eso es muy correcto, porque luego tendría que pasar el vector a php para que mediante PHP pueda tratar esa información para escribir el XML, pero me gustaría obtener esa información directamente con PHP, pero claro no encuentro una forma de tratar con PHP los identificadores de los input text, sólopuedo a través del name, sacar el contenido. Lo que me gustaría es poder tener el mismo name para todos y así recorrerlo, pero luego dentro del foreach acceder al identificador de cada uno y tratar la información...

Espero que puedas ayudarme una vez más... Gracias de nuevo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por Diego Romero (1450 intervenciones) el 01/09/2008 02:48:52
Un dato que es impredecible, no se puede adivinar.

Yo te ofrezco una solución mejor. Por cada input tipo "text" que creas dinámicamente hazlo con el "name" que ya te dije, pero además crea junto a ese, otro input pero de tipo "hidden" cuyo value tomará el orden de la jerarquía de forma tal que te quedaría dinámicamente algo como esto:

<input type="text" name="titulo[]">
<input type="hidden" name="jerarquia[]" value="1">
<input type="text" name="titulo[]">
<input type="hidden" name="jerarquia[]" value="1_1">
<input type="text" name="titulo[]">
<input type="hidden" name="jerarquia[]" value="1_2">
<input type="text" name="titulo[]">
<input type="hidden" name="jerarquia[]" value="2">
<input type="text" name="titulo[]">
<input type="hidden" name="jerarquia[]" value="2_1">
<input type="text" name="titulo[]">
<input type="hidden" name="jerarquia[]" value="2_1_2">

De esta forma no tienes que "adivinar" ningún name. Porque sabes que un input siempre está acompañado de otro que se le corresponde.
En PHP puedes saber a que nivel de la estructura le pertenece un título en particular consultando el "value" del input hidden que le acompaña.

O sea:

$_POST["titulo"][1] se corresponde con $_POST["jerarquia"][1] donde
$_POST["titulo"][1] vale "Esto es el título", y $_POST["jerarquia"][1] vale "1" es el primer nivel.
$_POST["titulo"][2] vale "Esto es el subtítulo", y $_POST["jerarquia"][2] vale "1_1" es el primer subnivel del primer nivel.

and so on...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Obtener contenido de un input sin saber su 'na

Publicado por sacrram (10 intervenciones) el 04/09/2008 02:04:55
Muchas gracias Diego por tu tempo,
finalmente lo he cambiado para hacerlo cómo tú me decias, porque es más sencillo de hacer. No te he contestado antes porque lo he estado haciendo.
Muchas gracias de verdad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar