Foros del Web » Programando para Internet » PHP »

arrays pasados por post

Estas en el tema de arrays pasados por post en el foro de PHP en Foros del Web. estoy hecho un lío, a ver. He visto este código en un tutorial para pasar arrays por post: Código: <html> <head> <title>Array en Forma :: ...
  #1 (permalink)  
Antiguo 18/08/2009, 14:18
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
arrays pasados por post

estoy hecho un lío, a ver. He visto este código en un tutorial para pasar arrays por post:

Código:
 <html>
<head>
    <title>Array en Forma :: PHP</title>
<head>
<body>
 <br />
<b>Selecciona tus postres favoritos:</b><br /><br />
<form method="post" action="<?= $_SERVER['PHP_SELF'] ?>">
<input name="postre[]" type="checkbox" value="Helado de Vainilla">Helado de vanilla<br />
<input name="postre[]" type="checkbox" value="Pastel de Chocolate">Pastel de Chocolate<br />
<input name="postre[]" type="checkbox" value="Pay de elote">Pay de elote<br />
<input name="postre[]" type="checkbox" value="Bubulubu">Bubulubu<br />
<input name="postre[]" type="checkbox" value="Duraznos en almibar">Duraznos en almibar<br />
<input name="postre[]" type="checkbox" value="Fresas con crema">Fresas con crema<br />
<input name="send" type="submit" id="send" value="Enviar!">
</form>

<?php
if (isset($_POST['postre']))
{
   $postre = $_POST['postre'];
   $n        = count($postre);
   $i        = 0;

   echo "Tus postres favoritos son: rn" .
        "<ol>";
   while ($i < $n)
   {
      echo "<li>{$postre[$i]}</li> rn";
      $i++;
   }
   echo "</ol>";
}
?>

</body>
</html>
Yo quiero hacer algo similar para rellenar una tabla mediante un formulario. Por ahora estoy intentando llenar sólo el primer campo aunque el formulario recoja más datos. Este es mi código:

Código:
<?php

if (isset($_POST['dato'])){
    echo "me ha llegado <br> ";
      
}
    else{
     echo "no me ha llegado";   
    }
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$repetido=mysql_query("select count(*) from autores where nick=POST['nick']");
if ($repetido){
    echo "ya está en uso";
    echo "<form action ='formregistro.html'><BR>";
    echo"<input type='submit' value='ACEPTAR'><br>";
}
else{
    $datos=$POST['dato'];
    echo $datos[0];
    mysql_query("Insert into autores(nick) VALUES('$datos[0]')",$link);
    echo "registrado corréctamente";
    
    echo "<form action ='opciones.php'><BR>";
    echo"<input type='submit' value='ACEPTAR'><br>";
    }
?>
</html>
Y este es el código del formulario

Código:
<html>
<form action= "registro.php" method= "POST">
Usuario: <input type ="text" name ="dato[]"><br>
Contraseña: <input type= "text" name="dato[]"><br>
Nombre: <input type= "text" name="dato[]"><br>
Apellidos: <input type= "text" name="dato[]"><br>
Centro: <input type= "text" name="dato[]"><br>
Provincia: <input type= "text" name="dato[]"><br>
Población: <input type= "text" name="dato[]"><br>
Número de colegiado: <input type= "text" name=""dato[]"><br> 
<input type ="submit" value ="LOG IN">
</form>
</html>
Si no pongo un array sino que pongo variables normales, funciona, pero de este modo me dice lo siguiente:

me ha llegado
registrado corréctamente

Es decir, no me escribe el nombre del usuario. Tampoco me actualiza la base de datos. Yo no veo diferencia con el código del tutorial. He probado a sustituir el 0 por un $i para ponerlo igual que el del tutorial y nada.
  #2 (permalink)  
Antiguo 14/09/2009, 00:42
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: arrays pasados por post

Hola
Bueno, en primera si te fijas el ej de los sabores hace eso sobre un UNICO elemento, es decir, sobre un grupo de checkbox

Ahora, lo que tu quieres se puede hacer, pero cambia un poco la manera en que recibes tus datos, pues por ej para ver tus datos harias algo asi

asumo que el html que pusiste es de una pagina llamada formulario.html o formulario.php o como se llame y ese viaja a otro archivo llamado registro.php

Ahora, en el archivo registro.php puse esto
//Dato 0 es el campo usuario del formulario
echo $_POST['dato'][0];

if (isset($_POST['dato'][0])){
echo "me ha llegado <br> ";

}
else{
echo "no me ha llegado";
}

Si te fijas, como hiciste tu formulario con todos los campos con el elemento name = dato[], el te envía los datos en orden pues va a manejar dato como un array, asi entonces $_POST['dato'][1] sera la contraseña y asi sucesivamente
Espero eso sea lo que necesitabas
Saludos
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 00:17.