Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] no puedo recorrer post con foreach pra obtener sus indices y valores

Estas en el tema de no puedo recorrer post con foreach pra obtener sus indices y valores en el foro de PHP en Foros del Web. Tengo el siguiente formulario en html @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < form action = "procesar.php" method = "post" name = "form" > < ...
  #1 (permalink)  
Antiguo 01/10/2014, 10:20
 
Fecha de Ingreso: septiembre-2014
Mensajes: 13
Antigüedad: 10 años, 1 mes
Puntos: 0
Pregunta no puedo recorrer post con foreach pra obtener sus indices y valores

Tengo el siguiente formulario en html
Código HTML:
Ver original
  1. <form action="procesar.php" method="post" name="form">
  2. <section class="formaulario">
  3. <table class="form">
  4.     <tr><td><p>Nombre<td><input type="text" name="nombre" placeholder="Introduzca Su Nombre" title="Nombre"></p></td></tr>
  5.     <tr><td><p>Apellido<td><input type="text" name="apellido" placeholder="Introduzca Su Apellido"></p></td></tr>
  6.     <tr><td><p>CI<td><input type="text" name="ci" placeholder="Introduzca Su C.I"></p></td></tr>
  7.     <tr><td><p>Direccion<td><input type="text" name="direccion" placeholder="Introduzca Su Direccion"></p></td></tr>
  8.     <tr><td><p>Telefono<td><input type="text" name="nombre" placeholder="Introduzca Su Telefono" font size="11"></p></td></tr>
  9.     <tr><td><p>Sexo<td><select><option>Femenino</option><option>Masculino</option></select></p></td></tr>
  10.     <tr><td><p>Correo Electronico<td><input type="text" name="correo" placeholder="Introduzca Su Email"></p></td></tr>
  11.    
  12.     <tr><td colspan="2"><input class="boton" type="submit" name="registrar" value="REGISTRAR">
  13.         <input class="boton" type="submit" name="buscar" value="BUSCAR">
  14.     <input class="boton" type="submit" name="actualizar" value="ACTUALIZAR">
  15. <input class="boton" type="submit" name="ELIMINAR" value="ELIMINAR"></td></tr>

y en php esto:

Código PHP:
Ver original
  1. <?php
  2. include_once("conexion.php");
  3.  
  4. function metodo()
  5. {
  6. $tmp=false;  
  7.  
  8.     foreach ($_POST as $key => $valor)
  9.     {  
  10.        
  11.     if ((isset($_POST[$valor])) && (!empty($_POST[$valor])))
  12.     {
  13. //      $tmp=true;
  14.         echo "el campo " . $_POST[$valor] . " contiene :" . $_POST[$key];
  15.         }
  16.     else
  17.         {
  18.     //  $tmp=false;
  19.         echo "el campo " . $_POST[$valor] . " contiene :" . $_POST[$key];
  20.         }
  21.     }
  22.     return $tmp;
  23. }
  24.  
  25. metodo();
  26. ?>

el problema es que no me sale algo como:

el campo nombre contiene: raul no entiendo, sera el foreach
  #2 (permalink)  
Antiguo 01/10/2014, 10:31
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: no puedo recorrer post con foreach pra obtener sus indices y valores

Esa usando el foreach() completamente al revés.

Se supone que tienes un array, y debes acceder a cada elemento por su clave, no por su valor.

Código PHP:
Ver original
  1. foreach ($_POST as $key => $valor) {
  2.  echo $_POST[$key] . ' === ' . $valor . "<br>\n";
  3. }

¿Se entiende la diferencia?

Es decir, $_POST[$valor] jamás va a funcionar porque $valor no es ningún índice.

Ya tienes el valor en $valor, valga la redundancia, y el índice en $key.

Por favor consulta el manual al respecto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 02/10/2014, 06:45
 
Fecha de Ingreso: julio-2013
Mensajes: 87
Antigüedad: 11 años, 4 meses
Puntos: 9
Respuesta: no puedo recorrer post con foreach pra obtener sus indices y valores

Para que te funcione tienes que hacer lo siguiente:

Código PHP:
Ver original
  1. function metodo(){
  2.     foreach ($_POST as $key => $valor){  
  3.         echo "el campo " . $key . " contiene :" . $valor;
  4.     }
  5. }
  #4 (permalink)  
Antiguo 02/10/2014, 12:25
 
Fecha de Ingreso: septiembre-2014
Mensajes: 13
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: no puedo recorrer post con foreach pra obtener sus indices y valores

De verdad muchas gracias ccliment me funciono bien, el codigo que necesitarba era este:


Código PHP:
Ver original
  1. <?php
  2. include_once("conexion.php");
  3.  
  4.  
  5. function metodo()
  6. {
  7. $tmp=false;  
  8.  
  9.     foreach ($_POST as $key => $valor)
  10.     {  
  11.        
  12.     if ((isset($valor)) && (!empty($valor)))
  13.     {
  14.         $tmp=true;
  15.         //echo "<br>el campo " . $key . " contiene :" . $valor;
  16.         }
  17.     else
  18.         {
  19.         $tmp=false;
  20.                 break;
  21.         //echo "el campo " . $key. " contiene :" . $valor;
  22.         }
  23.     }
  24.     return $tmp;
  25.  
  26. }
  27.  
  28.  
  29. if(metodo())
  30. {
  31.  
  32. $conexion=mysql_connect($host,$user,$password) or die ("No se ha conectado al host");
  33. mysql_select_db($bd,$conexion) or die ("No se ha conectado al la bd");
  34.  
  35. mysql_query("INSERT INTO practica (nombre,apellido,ci,direccion,telefono,sexo,correo)
  36. VALUES ('$_POST[nombre]','$_POST[apellido]','$_POST[ci]','$_POST[direccion]','$_POST[telefono]','$_POST[sexo]','$_POST[correo]')",$conexion);
  37. echo "datos insertado correctamente";
  38. }
  39. else
  40. {
  41.     echo "Tienes algun campo vacio";
  42. }
  43.  
  44.  
  45. metodo();
  46. ?>

Yo al llamar el campo colocaba $_POST y solo era $key o valor

Gracias pateketrueke me di cuenta pero ese fue que me puse a practicar tanto y deje eso si pero el problema es que no encontraba el indice.

Muchas gracias.

Última edición por principalcount2013; 02/10/2014 a las 12:26 Razón: me falto una palabra

Etiquetas: foreach, formulario, html, indices, post, select
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 08:26.