Foros del Web » Programando para Internet » PHP »

acceder al atributo name y al valor de los elementos &_GET[]

Estas en el tema de acceder al atributo name y al valor de los elementos &_GET[] en el foro de PHP en Foros del Web. Hola estoy utilizando $_GET[] para crear una array con los elementos de un formulario, después utilizo un bucle foreach para acceder a cada uno de ...
  #1 (permalink)  
Antiguo 03/11/2011, 06:12
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
acceder al atributo name y al valor de los elementos &_GET[]

Hola estoy utilizando $_GET[] para crear una array con los elementos de un formulario, después utilizo un bucle foreach para acceder a cada uno de los elementos de esa array

Código PHP:
foreach($_GET[] as $key)
    {
        
    } 
ahora mi duda es la siguiente, dentro de ese bucle si llamo a $key lo que obtengo es el valor introducido en ese elemento del formulario no?
Yo necesitaría no sólo acceder a ese valor introducido si no también acceder a otro atributos de ese elemento, como podrían ser el atributo name u otros. ¿Cómo puedo hacer esto?
  #2 (permalink)  
Antiguo 03/11/2011, 06:29
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

A no se que los atributos de tu formulario, tengan el mismo nombre + un correlativo
te sera facil acceder a sus nombres y valores.
por ejemplo:

caja1
caja2

pero si son nombres distintos para cada elemento html, no le veo mucho uso a el foreach.

y para acceder al valor debes poner dentro del foreach

$key["elemento1"];
$key["elemento2"];
$key["elemento3"];
  #3 (permalink)  
Antiguo 03/11/2011, 06:34
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

cada elemento de mi formulario tiene su name, el bucle foreach está porque quiero enviar un email con el contenido del formulario, de la siguiente forma:
Por cada hmtl element del formulario escribir una linea que contenga su name y el valor introducido por el usuario
  #4 (permalink)  
Antiguo 03/11/2011, 06:56
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

La verdad no me queda muy clara tu idea...
Si pudieras comentar más, de seguro que llegaremos a una solucion ;)
  #5 (permalink)  
Antiguo 03/11/2011, 07:17
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Voy intentar poner un ejemplo a ver si logro aclararlo:

Supongamos que dentro de un formulario tenemos los siguientes elementos:
<input type="text" name="teléfono" />
<input type="text" name="edad" />

Esto creará dos textbox donde el usuario podrá introducir datos.

con esta función obtengo una matriz con todo los elementos html del formulario:

foreach($_GET[] as $key)
{
$prueba=$key;
}

En la variable prueba creo que estará el texto introducido en cada textbox, bien pues lo que necesito es acceder no sólo al texto de la textbox sino también al atributo name de esa textbox es decir en nuestro ejemplo la primera sería "teléfono"
  #6 (permalink)  
Antiguo 03/11/2011, 07:42
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Yap mira,

Para capturar todo lo que venga por GET debes usarlo asi...

foreach($_GET as $nombre_html => $valor_html){
echo $nombre_html."--".$valor_html."<br>";
}

Espero te sirva, hice la prueba local y me funciono!

Con foreach tienes 2 formas de usarlo:

foreach (array_expression as $key => $value)
te permite acceder al indice del arreglo y su valor.

foreach (array_expression as $value)
Te permite acceder directo al valor.

Saludos

Última edición por prcarreno; 03/11/2011 a las 07:48
  #7 (permalink)  
Antiguo 03/11/2011, 08:39
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Cual es la función de => en el ejemplo que has puesto? me gustaría entenderlo para aprender a manejarlo
  #8 (permalink)  
Antiguo 03/11/2011, 08:49
Avatar de informacionsys  
Fecha de Ingreso: mayo-2011
Ubicación: Bogota D.C
Mensajes: 793
Antigüedad: 13 años, 6 meses
Puntos: 76
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

si quieres capturar todo lo que venga por metodo GET

pues capturalo con la funcion extract....

asi:

extract($_GET);

para llamar los datos simplemente llamas o imprimes el nombre del campo.

entonces si en tu form ahi por ejemplo un campo llamado usuario

lo llamas asi:

$usuario.

vale
  #9 (permalink)  
Antiguo 03/11/2011, 08:59
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Cita:
Iniciado por prcarreno Ver Mensaje
Yap mira,

Para capturar todo lo que venga por GET debes usarlo asi...

foreach($_GET as $nombre_html => $valor_html){
echo $nombre_html."--".$valor_html."<br>";
}

Espero te sirva, hice la prueba local y me funciono!

Con foreach tienes 2 formas de usarlo:

foreach (array_expression as $key => $value)
te permite acceder al indice del arreglo y su valor.

foreach (array_expression as $value)
Te permite acceder directo al valor.

Saludos
He hecho la prueba con esto y el servidor me da error justo en la línea

foreach($_GET as $nombre_html => $valor_html)

el error es el siguiente:
Fatal error: Cannot use [] for reading in email.php on line 8
  #10 (permalink)  
Antiguo 03/11/2011, 09:00
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

buen aporte informacionsys ;)

No conocia la funcion extract :D

Jor1980, no sabria explocarte tecnicamente el foreach, solo se que al usar la sintaxis larga, me permite acceder al indice y valor del arreglo.

Para mas info puede buscar en el manual de php.net


Saludos!
  #11 (permalink)  
Antiguo 03/11/2011, 09:03
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 10 meses
Puntos: 81
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

A ver, eso es algo simple, el bucle es asì:

Código:
  foreach ($array as $clave => $valor) {
    
  }
=> sirve para separar la clave del valor, nada más.
  #12 (permalink)  
Antiguo 03/11/2011, 09:11
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Que raro, a mi me funciona bien.

Sera la version de tu php? o le pusiste los corchetes [ ] al GET ??

A mi me da ese error si le pongo los corchetes al GET.
  #13 (permalink)  
Antiguo 03/11/2011, 09:15
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 13 años, 2 meses
Puntos: 29
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Amigo es sencillo sin complicarte la vida haz esto:
Código PHP:
Ver original
  1. foreach($_GET[] as $key=> $value)
  2.     {
  3.          
  4.     }
Donde $key es el nombre y $value es el valor
__________________
Visita a Publiventa donde compras y vendes de todo
  #14 (permalink)  
Antiguo 03/11/2011, 09:26
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Al final el código me quedó así:

Código PHP:
<?
$email
=$_GET['email'];
$teléfono=$_GET['teléfono'];



if(
$email $teléfono !="")
{
    
$message="";
    foreach(
$_GET as $nombre_html=> $valor_html)
    {
    echo 
$nombre_html."--".$valor_html."<br>";
    
$message+= $nombre_html.": ".$valor_html."<br>";    
    }
    
    
mail("[email protected]","prueba",$message);
}

?>
EL problema ahora es que al pulsar el botón enviar de mi formulario no recibo ningún email con el contenido.

El formulario lo inicié así:
<form action="email.php" method="post">

y el botón enviar tiene este código:

<input type="submit" name="enviar" onclick="" style="height:30px; width:150px; margin-top:15px; margin-left:15px;" value="Enviar datos"/>
  #15 (permalink)  
Antiguo 03/11/2011, 09:29
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Cambia esto:
<form action="email.php" method="post">

Por esto:
<form action="email.php" method="get">

Se supone que recibiras los datos por método GET.

Si quieres usar metodo POST para que no vean los datos, tendras que cambiar el GET por POST
en el archivo mail.php
  #16 (permalink)  
Antiguo 03/11/2011, 09:34
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 13 años, 2 meses
Puntos: 29
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

coincido con prcarreno porque estas enviando toda la informacion por el cuerpo y no por la url

$_GET = Recibe los valores por la URL
$_POST = Recibe los valores por el cuerpo de la pagina

Espero que te sirva
__________________
Visita a Publiventa donde compras y vendes de todo
  #17 (permalink)  
Antiguo 03/11/2011, 09:40
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Cambié el method del form a get y en la url se veían los datos del formulario, pero el email no se envió.

Ahora he cambiado todo a post pero sigue sin enviarse el email
  #18 (permalink)  
Antiguo 03/11/2011, 09:45
Avatar de gustavopino  
Fecha de Ingreso: septiembre-2011
Ubicación: venezuela
Mensajes: 152
Antigüedad: 13 años, 2 meses
Puntos: 29
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Amigo evalua esto aparte asi:

Código PHP:
Ver original
  1. if($email != "" && $teléfono !="")

A ver que resulta
__________________
Visita a Publiventa donde compras y vendes de todo
  #19 (permalink)  
Antiguo 03/11/2011, 11:17
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Cita:
Iniciado por gustavopino Ver Mensaje
Amigo evalua esto aparte asi:

Código PHP:
Ver original
  1. if($email != "" && $teléfono !="")

A ver que resulta
Ahora si me ha enviado el email, aunque como contenido del email sólo me aparece un 0.

Debería aparecer una cadena de texto, la contenida en la variable $message que contiene los name de los elementos html y sus valores. ¿A qué se debe esto?
  #20 (permalink)  
Antiguo 03/11/2011, 12:06
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Concatena con un punto.

$message .= $nombre_html.": ".$valor_html."<br>";
  #21 (permalink)  
Antiguo 03/11/2011, 12:11
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Concatenando así si me lo envía. El email no hace el salto de línea incluye directamente <br> como cadena de texto en el mensaje igual tengo que sustituir esto por \n
  #22 (permalink)  
Antiguo 03/11/2011, 12:13
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

cLaro!

Reemplaza <br> por \n ahi te hara el salto de linea.

Saludos,
  #23 (permalink)  
Antiguo 03/11/2011, 13:43
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Alguno caracteres especiales del texto del email se envían de forma errónea, esto tiene solución de algún tipo eligiendo el tipo de codificación o algo?
  #24 (permalink)  
Antiguo 03/11/2011, 14:28
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

a veces uso utf8_decode()

Por ejemplo si en la caja de texto escriben teléfono...
Esto no llegara bien en el cuerpo o mensaje del mail. y es ahi donde aplico el utf8_decode()

aunque en el asunto del mail, si lo envio tal cual viene de html llega bien.

Debes probar..
  #25 (permalink)  
Antiguo 03/11/2011, 14:41
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Voy a hacer pruebas con eso del utf decode
Ahora estaba pensando ver si es posible hacer un include en el documento del formulario del documento que envía el email y en vez de poner en el action de mi form action="email.php", llamar directamente la función que creé en email.php, algo así como action="mifuncionenviaremail();"
  #26 (permalink)  
Antiguo 13/11/2011, 14:19
 
Fecha de Ingreso: mayo-2011
Mensajes: 72
Antigüedad: 13 años, 6 meses
Puntos: 1
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

Hola, estuve haciendo unas pruebas y cambié varias veces mi código. Ahora después de una avería en mi servidor estoy probando el código que antes funcionaba y resulta que no manda emails. Podéis echarle un vistazo a ver si cambié algo sin querer o es un error interno de mi servidor

Código PHP:
<?

$email
=$_POST['email'];
$teléfono=$_POST['telefono'];


if(
$email $teléfono !=""


    
$message="";
    foreach(
$_POST as $nombre_html=> $valor_html)
    {
    
$message.= $nombre_html.": ".$valor_html."\n";    
    }
    
    
mail("[email protected]","solicitud de presupuesto",$message);
}
?>

Código HTML:
<form action="email.php" method="post" id="formulario" onsubmit="">
<p class="subtitulo">Datos del vehículo:</p>
<div class="grupoizquierda">

<div class="datos">
<label>Marca</label>
<input  type="text" name="marca"/>
</div>

<div class="datos">
<label>Versión</label>
<input type="text" name="version"/>
</div>

<div class="datos">
<label>Garaje</label>
<input type="checkbox" name="garaje"/>
</div>

<div class="datos">
<label>Compañía</label>
<input type="text" name="compania de seguros"/>
</div>

</div><!---final grupoizquierda--->

<div class="grupoderecha">

<div class="datos">
<label>Modelo</label>
<input type="text" name="modelo"/>
</div>

<div class="datos">
<label>CV</label>
<input type="text" name="cv"/>
</div>

<div class="datos">
<label>Código Postal</label>
<input type="text" name="codigo postal"/>
</div>

<div class="datos">
<label>Nº póliza actual</label>
<input type="text" name="poliza actual"/>
</div>

</div><!--final grupoderecha-->




<div class="grupocentro">


<p class="subtitulo">Datos de matriculación:</p>



<div class="datos">
<label>Año de matriculación</label>
<select name="matriculacion"><option>Seleccione</option><option>1990</option><option>1991</option><option>1992</option><option>1993</option><option>1994</option><option>1995</option><option>1996</option><option>1997</option><option>1998</option><option>1999</option><option>2000</option><option>2001</option><option>2002</option><option>2003</option><option>2004</option><option>2005</option><option>2006</option><option>2007</option><option>2008</option><option>2009</option><option>2010</option><option>2011</option><option>2012</option></select>
</div>

<div class="datos">
<label>Mes de matriculación</label>
<select name="mes matriculacion"><option>Seleccione</option><option>Enero</option><option>Febrero</option><option>Marzo</option><option>Abril</option><option>Mayo</option><option>Junio</option><option>Julio</option><option>Agosto</option><option>Septiembre</option><option>Octubre</option><option>Noviembre</option><option>Diciembre</option></select>
</div>


<p class="subtitulo">Datos del conductor:</p>


<div class="grupoizquierda">

<div class="datos">
<label>Nombre</label>
<input type="text" name="nombre"/>
</div>

<div class="datos">
<label>DNI</label>
<input type="text" name="dni" /> 
</div>

<div class="datos">
<label>Sexo</label>
<select name="sexo"><option>Seleccione</option><option>Hombre</option><option>Mujer</option> </select>
</div>

</div><!--end grupoizquierda de grupocentro-->


<div class="grupoderecha">

<div class="datos">
<label>Años de carnet</label>
<input type="text" name="anyos de carnet"/>
</div>

<div class="datos">
<label>Edad</label>
<input type="text" name="edad"/>
</div>

</div><!--end grupoderecha de grupo centro-->

<br />
<br />
<br />
<br />
<br />
<p class="subtitulo">Datos para recibir información solicitada:</p>

<div class="grupoizquierda">

<div class="datos">
<label>Email</label>
<input type="text" name="email"/>
</div>

</div><!--fin grupoizquierda-->

<div class="grupoderecha">

<div class="datos">
<label>Teléfono de contacto</label>
<input type="text" name="telefono"/>
</div>

</div><!--fin grupoderecha-->

<br />

<div class="datos">
<p style="font-size:18px">Observaciones:</p>
<textarea name="observaciones" style="height:80px;width:350px;" /></textarea>
</div>

<input type="submit" name="enviar" style="height:30px; width:150px; margin-top:15px; margin-left:15px;" value="Enviar datos"/>
<a href="#" id="politica" class="politica">Política de privacidad</a>
</div><!--final grupocentro-->



</form> 
  #27 (permalink)  
Antiguo 14/11/2011, 13:43
 
Fecha de Ingreso: noviembre-2011
Mensajes: 55
Antigüedad: 13 años
Puntos: 3
Respuesta: acceder al atributo name y al valor de los elementos &_GET[]

if($email & $teléfono !="") cambialo por

if($email != "" && $teléfono !="")

Etiquetas: elementos, formulario, atributos
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:31.