Foros del Web » Programando para Internet » PHP »

como envio un array desde mi formulario

Estas en el tema de como envio un array desde mi formulario en el foro de PHP en Foros del Web. necesito enviar un array desde un formulario, he intentado con un campo oculto pero la variable no me llega, o mas bien no se como ...
  #1 (permalink)  
Antiguo 13/09/2004, 12:55
Avatar de CRISMA  
Fecha de Ingreso: julio-2004
Ubicación: Caracas
Mensajes: 69
Antigüedad: 13 años, 4 meses
Puntos: 0
como envio un array desde mi formulario

necesito enviar un array desde un formulario, he intentado con un campo oculto pero la variable no me llega, o mas bien no se como trabajarla en el script.php correspondiente

primero creo el array con los valores (codigos) que quiero enviar

y luego:

<input name="list[]" type="hidden" value="<? $lista ?>">

pero cuando consulto la variable $list en el escrip donde lo envio me da error...

alguien puede ayudarme please
__________________
Que mas queda... tener Paciencia :-D
  #2 (permalink)  
Antiguo 13/09/2004, 13:53
 
Fecha de Ingreso: marzo-2003
Ubicación: Son Galego ¡¡¡¡Galiza ceibe!!!
Mensajes: 77
Antigüedad: 14 años, 9 meses
Puntos: 0
Hola
¿Como referencias la matriz?.Si pones el error en el post mejor.
Supongo que para acceder a ella pondras
Código PHP:
<?php
$_POST
["list"][indice];
?>
__________________
:risa:
RAPI91
:)
  #3 (permalink)  
Antiguo 13/09/2004, 15:33
Avatar de CRISMA  
Fecha de Ingreso: julio-2004
Ubicación: Caracas
Mensajes: 69
Antigüedad: 13 años, 4 meses
Puntos: 0
bueno puse:
<? echo $_POST[$list[$i]] ?>
y tambien:
<? echo $list[$i] ?>
<? echo $list ?>

esa era mi duda la referencia...
__________________
Que mas queda... tener Paciencia :-D
  #4 (permalink)  
Antiguo 13/09/2004, 15:38
Avatar de CRISMA  
Fecha de Ingreso: julio-2004
Ubicación: Caracas
Mensajes: 69
Antigüedad: 13 años, 4 meses
Puntos: 0
bueno lo que pasa es que en el array paso codigos de una tabla (BD) y lo que pretendo hacer son cosas como esta:

$SQL = "DELETE FROM sugerencia WHERE idEnc=".$list[$i]."";
$SQLresult = mysql_query($SQL,$conexion);

osea, lo que quiero es ir recorriendo el array y hacer modificaciones a la BD
__________________
Que mas queda... tener Paciencia :-D
  #5 (permalink)  
Antiguo 13/09/2004, 15:51
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Saludos.

Si lo quieres correr, coloca la Instrucción DELETE dentro de un for

for ($i=0; $i<=$count($list); $i++) {
$SQL = "DELETE FROM sugerencia WHERE idEnc=".$list[$i]."";
$SQLresult = mysql_query($SQL,$conexion);
---ect
}

No que no entiendo es porque estas pasando eso en un campo oculto del formulario. Entonces el formulario para que es??

Plantea lo que haces a ver si te podemos ayudar a mejorar la lógica que estas usando.

Suerte
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.

Última edición por José Molina; 13/09/2004 a las 15:56
  #6 (permalink)  
Antiguo 13/09/2004, 16:01
Avatar de CRISMA  
Fecha de Ingreso: julio-2004
Ubicación: Caracas
Mensajes: 69
Antigüedad: 13 años, 4 meses
Puntos: 0
coloque:

for($i=0;$i<=$nume;++$i)
{
echo $_POST["list"][$i];
}
y cuando corro el script no me muestra el valor (no sale nada)
__________________
Que mas queda... tener Paciencia :-D
  #7 (permalink)  
Antiguo 13/09/2004, 16:13
Avatar de José Molina  
Fecha de Ingreso: enero-2002
Ubicación: USA
Mensajes: 768
Antigüedad: 15 años, 11 meses
Puntos: 1
Para ti quien es $nume??

$nume debería ser la cantidad de elementos del arrecho $i.
__________________
José Molina
La marginalidad no esta en la incapacidad de calmar el hambre de un estómago sino en la incapacidad de calmar el hambre de la mente.
  #8 (permalink)  
Antiguo 13/09/2004, 16:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si usas un foreach() . .te puedes evitar el for() y el count() que te hace falta para recorrer dicho array:

Código PHP:
foreach ($_POST['list'] as $valor){
echo 
$valor."<br>";

Revisa esta FAQ al respecto:
http://www.forosdelweb.com/showthrea...710#post518710

Un saludo,
  #9 (permalink)  
Antiguo 13/09/2004, 16:18
Avatar de CRISMA  
Fecha de Ingreso: julio-2004
Ubicación: Caracas
Mensajes: 69
Antigüedad: 13 años, 4 meses
Puntos: 0
ok, a ver... esto es para un sistema de encuestas
son tres paginas.php:

la primera muestra un conjunto de chekboxs para que el usuario seleccione la encuesta que desea eliminar o solo borrar los resultados almacenados (la cantidad de encuestas es variable).

la segunda es para confirmar la accion de eliminar la encuesta y toma los valores provenientes de los chekboxs y los almacena en el array.

la tercera deberia tomar los valores del array y aplicar la sentencia SQL para eliminar del sistema la(s) encuesta(s) seleccionadas.

el codigo: (es extenso)

pagina 1: la llamo "vencuestas.php"

$SQL = "SELECT COUNT(*) FROM encuesta";
$SQLresult = mysql_query($SQL,$conexion);
$nume = mysql_fetch_array($SQLresult);
if($nume > 0)
{
echo"<form name=\"forme\" method=\"post\" action=\"eliminaE.php\" target=\"muestrae\">
<p align=\"center\">
<font color=\"#000080\" size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\"><strong>ENCUESTAS DE ALTA</strong></font>
</p>
<table width=\"90%\" align=\"center\" border=\"1\" cellspacing=\"1\" cellpadding=\"3\">
<tr>
<td width=\"6%\" bgcolor=\"#FFFFFF\">&nbsp;</td>
<td width=\"50%\" align=\"center\" bgcolor=\"#EFF1F8\">
<font size=\"2\" color=\"#000080\" face=\"Verdana, Arial, Helvetica, sans-serif\">CURSO</font>
</td>
<td width=\"25%\" align=\"center\" bgcolor=\"#EFF1F8\">
<font size=\"2\" color=\"#000080\" face=\"Verdana, Arial, Helvetica, sans-serif\">PLANTILLA</font>
</td>
<td width=\"15%\" align=\"center\" bgcolor=\"#EFF1F8\">
<font size=\"2\" color=\"#000080\" face=\"Verdana, Arial, Helvetica, sans-serif\">Aplicada en fecha</font>
</td>
</tr>";
$SQL = "SELECT * FROM encuesta";
$SQLresult = mysql_query($SQL,$conexion);
while($enc = mysql_fetch_array($SQLresult))
{
$SQL1 = "SELECT nombplantilla FROM plantilla WHERE nformato=$enc[2]";
$SQLresult1 = mysql_query($SQL1,$conexion);
$plantilla = mysql_fetch_array($SQLresult1);
// cambia el formato de la fecha
if($enc[3] != '0000-00-00')
{
$var = explode('-',$enc[3]);
$fecha = "$var[2]-$var[1]-$var[0]";
}
else{$fecha = "xx-xx-xxxx";}
$nombchk = "encuesta".$enc[0];
echo"<tr>
<td align=\"center\" bgcolor=\"#EFF1F8\">
<input name=\"".$nombchk."\" type=\"checkbox\" value=\"".$enc[0]."\">
</td>
<td bgcolor=\"#EAEAEA\">
<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">".$enc[1]."</font>
</td>
<td bgcolor=\"#EAEAEA\">
<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">".$plantilla[0]."</font>
</td>
<td align=\"center\" bgcolor=\"#EAEAEA\">
<font size=\"2\" face=\"Verdana, Arial, Helvetica, sans-serif\">".$fecha."</font>
</td>
</tr>";
}
echo"<tr>
<td>&nbsp;</td>
<td colspan=\"3\"><font size=\"-1\">Para la(s) encuesta(s) selecionada(s):</font></td>
</tr>
<tr>
<td>&nbsp;</td>
<td colspan=\"3\">
<input name=\"elimina\" type=\"submit\" value=\"Eliminar Encuesta\">&nbsp;Ó&nbsp;
<input name=\"elimina\" type=\"submit\" value=\"Eliminar Resultados\">
</td>
</tr>
</table>
</form>\n";
}


pagina 2: la llamo "eliminaE.php"

<?
switch($elimina)
{
case "Eliminar Encuesta":
$alert = "ESTA SEGURO DE ELIMINAR LA(S) ENCUESTA(S) PARA: ";

break;
case "Eliminar Resultados":
$alert = "ESTA SEGURO DE ELIMINAR LOS RESULTADOS DE: ";
break;
}
?>
<br><br>
<form name="forme2" method="post" action="sqlelimE.php">
<table align="center" width="80%" border="1" bordercolor="#FFFFFF" cellspacing="0" cellpadding="6">
<tr>
<td bordercolor="#005E8A" bgcolor\"#EFF1F8">
<p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><? echo $alert ?></font></p>
<?
include("../conect.php");
$conexion = Conectar("encusisp");
$SQL = "SELECT * FROM encuesta";
$SQLresult = mysql_query($SQL,$conexion);
$i = 0;
while($enc = mysql_fetch_array($SQLresult))
{
$nombchk = "encuesta".$enc[0];
if($_POST[$nombchk] == $enc[0])
{
$lista[$i] = $enc[0];
++$i;
echo"<p><font size=\"2\" color=\"#000080\" face=\"Verdana, Arial, Helvetica, sans-serif\">\"".$enc[1]."\"</font></p>";
}
}
?>
<p align="center"><a href="javascript:document.forme2.submit();"><font size="2" face="Geneva, Arial, Helvetica, sans-serif">Eliminar</font></a></p>
<p align="center"><a href="vencuestas.php" target="muestrae"><font size="2" face="Geneva, Arial, Helvetica, sans-serif">Cancelar</font></a></p>
</td>
</tr>
</table>
<input name="list[]" type="hidden" value="<? $lista ?>">
<input name="nume" type="hidden" value="<? echo ($i-1) ?>">
<input name="accion" type="hidden" value="<? echo $elimina ?>">
</form>


pagina 3: la llamo "sqlelimE.php"


<?
include("../conect.php");
$conexion = Conectar("encusisp");

switch($accion)
{
case "Eliminar Encuesta":
for($i=0;$i<=$nume;$i++)
{
$SQL = "DELETE FROM encuesta WHERE idenc=".$list[$i]."";
$SQLresult = mysql_query($SQL,$conexion);
$SQL = "DELETE FROM votos WHERE idEnc=".$list[$i]."";
$SQLresult = mysql_query($SQL,$conexion);
$SQL = "SELECT COUNT(*) FROM sugerencia WHERE idEnc=".$list[$i]."";
$SQLresult = mysql_query($SQL,$conexion);
$num = mysql_fetch_array($SQLresult);
if($num != 0) /* la encuestas pide sugerencias y tambien hay que eliminarlas */
{
$SQL1 = "SELECT * FROM sugerencia WHERE idEnc=".$list[$i]."";
$SQLresult1 = mysql_query($SQL1,$conexion);
while($file = mysql_fetch_array($SQLresult1))
{
$rutafile = "../comentarios/".$file[1].".txt";
if(file_exists($rutafile)&&is_file($rutafile))
{
unlink($rutafile);
}
}
$SQL = "DELETE FROM sugerencia WHERE idEnc=".$list[$i]."";
$SQLresult = mysql_query($SQL,$conexion);
}
}
$mensaje = "ENCUESTA(S) ELIMINADA(S) DEL SISTEMA";
break;
case "Eliminar Resultados": (analogo al anterior)



ojala se entienda y me puedan ayudar...
__________________
Que mas queda... tener Paciencia :-D

Última edición por CRISMA; 13/09/2004 a las 16:55
  #10 (permalink)  
Antiguo 13/09/2004, 16:48
Avatar de CRISMA  
Fecha de Ingreso: julio-2004
Ubicación: Caracas
Mensajes: 69
Antigüedad: 13 años, 4 meses
Puntos: 0
si josé, $nume contiene el numero de checkboxs seleccionados que es igual a la longitud del arreglo $list
__________________
Que mas queda... tener Paciencia :-D
  #11 (permalink)  
Antiguo 13/09/2004, 20:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No sé si leistes la FAQ que te hice mención en el link anterior .. pero sea como sea siempre tienes un grupo de checkbox que deberías tratar como array del tipo:

En lugar de:
<input name=\"".$nombchk."\" type=\"checkbox\" value=\"".$enc[0]."\">
(que generas checkbox de nombre variable1,varaible2,variableN

usar:
<input name=\"nombre[]\" type=\"checkbox\" value=\"".$enc[0]."\">

Para que con un simple foreach() puedas recorrer el array que obtendras en $_POST['nombre']

Un saludo,
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 07:22.