Foros del Web » Programando para Internet » PHP »

Enviar ID de varios campos Checkbox

Estas en el tema de Enviar ID de varios campos Checkbox en el foro de PHP en Foros del Web. Bueno estoy armando un sistema para poder subir noticias a mi web, esa parte ya funciona perfecto, pero ahora me falta una manera de poder ...
  #1 (permalink)  
Antiguo 16/08/2010, 15:23
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Enviar ID de varios campos Checkbox

Bueno estoy armando un sistema para poder subir noticias a mi web, esa parte ya funciona perfecto, pero ahora me falta una manera de poder editar o borrar esas noticias, y no se como hacerlo.

La tabla donde guardo las noticias tiene las siguientes columnas:
ID, Fecha, Titulo, Noticia

entonces lo que fue que con un llamado a la base de datos me de todas las noticias, el valor de cada checkbox es su ID, y estan en un form, en dos campos hidden envio la cantidad de noticias que hay y el id de cada una (en un array), y mi pregunta es: Se pueden enviar arrays por el metodo post? Porque cuando recibo el valor de ese campo y leo todos los datos de ese array me aparece como si los datos de ese array fueran array (letra por letra)

Es decir para que se entienda mejor, en el formulario tengo lo siguiente:
Código PHP:
Ver original
  1. echo '<input type="hidden" value="'.$id.'" name="id">';

$id es una array que tiene el id de cada noticia $id[0] tiene por ej. la primer noticia que es la de ID 13, $id[1] tiene la ID 15 y asi (las ID no necesariamente son consecutivas ni empiezan desde la numero 1 ya que eh borrado algunas manualmente de la base de datos).

Y le hice un echo al array y me tira los datos bien, pero cuando interpreto los datos en la otra pagina que te lleva el form (luego de apretar en submit) tengo:
Código PHP:
Ver original
  1. $id= $_POST["id"];
  2.  
  3. echo $id[0]."---";
  4. echo $id[1]."----";echo $id[2]."---";echo $id[3]."---";echo $id[4]."---";echo $id[5]."---";echo $id[6]."---";

Y eso me da como resultado lo siguiente : A---r----r---a---y---------

Algo hice mal o es que no se pueden enviar arrays por el metodo post o get?

Cual es la manera en la que se deberia hacer? Porque mi problema es saber cuales son los ID de los checkboxes para despues comprobar si fueron marcados o no.

Última edición por aguila_393; 16/08/2010 a las 15:52
  #2 (permalink)  
Antiguo 16/08/2010, 17:56
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Enviar ID de varios campos Checkbox

No, no es posible mandar arreglos por post, y por get menos xD

lo único que hace PHP, es entender que es un arreglo, por eso te imprime eso.. lamentablemente no es tan simple pasarlos.. y lo que yo hago generalmente es asignarlos a una variable de sessión, utilizarla y después destruirla..

saludos.
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #3 (permalink)  
Antiguo 16/08/2010, 18:11
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por silvanha Ver Mensaje
No, no es posible mandar arreglos por post, y por get menos xD

lo único que hace PHP, es entender que es un arreglo, por eso te imprime eso.. lamentablemente no es tan simple pasarlos.. y lo que yo hago generalmente es asignarlos a una variable de sessión, utilizarla y después destruirla..

saludos.
Podrias pasarme parte del codigo? Es que aun no manejo bien lo de las sesiones y no me doy mucha idea.

Saludos y gracias.

Si alguien sabe de alguna otra forma que me diga ;).
  #4 (permalink)  
Antiguo 16/08/2010, 18:27
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Enviar ID de varios campos Checkbox

en tu manual de PHP hay más info, pero de manera general.

al principio de tu código inicia sesión, y después asignale a una variable lo que necesitas..

Código PHP:
Ver original
  1. <?php
  2. $_SESSION["id"] = $id;
  3. ?>

y en donde lo vayas a utilizar, que sería la otra página, vuelves a iniciar sesión, y utilizas el valor como desees..

Código PHP:
Ver original
  1. $id= $_SESSION["id"];
  2. unset($_SESSION["id"];)

después de asignarla para usarla la destruimos.. además como tip básico, iniciar sesión, siempre debe ser lo primero que hagas y tomar en cuenta que una variable de sesión es globlal, y la puedes utilizar en cualquier parte de tu script =)

saludos!
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #5 (permalink)  
Antiguo 16/08/2010, 18:28
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Enviar ID de varios campos Checkbox

Cita:
<input type="hidden" value="'.$id.'" name="id">
aki segun tu pasas el id?? el nombre deberias de colocarcelo
Código PHP:
Ver original
  1. <input type="hidden" value="'.$id.'" name="id[]">
y lo recibes por medio de un foreach asi
Código PHP:
Ver original
  1. foreach ($_POST['id'] as $key=>$valor){
  2.    echo "el indice es ".$key." el valor es ".$valor;
  3. }
es un ejemplo claro de como trabaja el foreach y pasas los datos de un formulario como si fueran un array suerte
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #6 (permalink)  
Antiguo 16/08/2010, 18:35
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por carlos_belisario Ver Mensaje
aki segun tu pasas el id?? el nombre deberias de colocarcelo
Código PHP:
Ver original
  1. <input type="hidden" value="'.$id.'" name="id[]">
y lo recibes por medio de un foreach asi
Código PHP:
Ver original
  1. foreach ($_POST['id'] as $key=>$valor){
  2.    echo "el indice es ".$key." el valor es ".$valor;
  3. }
es un ejemplo claro de como trabaja el foreach y pasas los datos de un formulario como si fueran un array suerte
Probe tal cual dijiste y no funciona, dice esto:

el indice es 0 el valor es ArrayArray
  #7 (permalink)  
Antiguo 16/08/2010, 18:40
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por silvanha Ver Mensaje
No, no es posible mandar arreglos por post, y por get menos xD
si es posible de echo lo esta haciendo por eso le indica array, lo que debe de hacer es recorrerlo con un foreach, while, do ... while, de echo si le haces un var_dump($id) te mostrara el contenido del array
Código PHP:
Ver original
  1. $id= $_POST["id"];
  2. foreach($id as $k => $v) echo $v.'</br>';
es un ejemplo, espero y te sirva, saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #8 (permalink)  
Antiguo 16/08/2010, 18:44
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Enviar ID de varios campos Checkbox

llegue tarde en el post anterior .

no entiendo el porque de un campo oculto, si dice que son checkbox solo es hacer esto
Código HTML:
Ver original
  1. <input type="checkbox" name="id[]" value="1" />
  2. <input type="checkbox" name="id[]" value="2" />
  3. <!-- ... etc. -->
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #9 (permalink)  
Antiguo 16/08/2010, 18:52
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por aguila_393 Ver Mensaje
Probe tal cual dijiste y no funciona, dice esto:

el indice es 0 el valor es ArrayArray
has un print_r de tu codigo para ver como telo recibe

Cita:
Iniciado por eits Ver Mensaje
llegue tarde en el post anterior .

no entiendo el porque de un campo oculto, si dice que son checkbox solo es hacer esto
Código HTML:
Ver original
  1. <input type="checkbox" name="id[]" value="1" />
  2. <input type="checkbox" name="id[]" value="2" />
  3. <!-- ... etc. -->
y yo tampoco entendi xq un campo oculto pero bue
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #10 (permalink)  
Antiguo 16/08/2010, 18:54
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por eits Ver Mensaje
llegue tarde en el post anterior .

no entiendo el porque de un campo oculto, si dice que son checkbox solo es hacer esto
Código HTML:
Ver original
  1. <input type="checkbox" name="id[]" value="1" />
  2. <input type="checkbox" name="id[]" value="2" />
  3. <!-- ... etc. -->
De esa manera se iria completando el array automaticamente? El codigo de lo que estaba armadno es este:
Código PHP:
Ver original
  1. $connect= mysql_connect ("xxxxxxx", "xxxxxxx", "xxxxxxxx")or die ("Problema 1 : No se pudo conectar con la base de datos ".mysql_error());
  2.           mysql_select_db("Noticias",$connect) or die ("Problemas al seleccionar la base de datos".mysql_error());
  3.           $query= "select ID, title from news";
  4.           $news=mysql_query($query, $connect) or die ("Problema al acceder a los datos ".mysql_error());
  5.  
  6.           echo "<table width='200'>";
  7.           $cantidad = 0;
  8.           while ($reg = mysql_fetch_array($news))
  9.           {
  10.             echo "<tr><td><input type=\"checkbox\" value=\"".$reg['newID']."\" /></td><td>".stripslashes($reg['title'])."</td>";
  11.             $i++;
  12.             $id[]=$reg[newID];      ---- ACA ES DONDE ARMO EL ARRAY PARA DESPUES PASARLO
  13.           }
  14.  
  15.           echo "</table>";
  16.           mysql_close($connect);
  17.           echo "<input type=\"hidden\" value=\"".$i."\" name=\"i\" />";
  18.           echo '<input type="hidden" value="'.$id.'" name="id[]">';
  19.           for ($e=0; $e<=$i; $e++){
  20.             echo $id[$e];
  21.             echo "---".$e."----";
  22.           }

Y lo recibo de la siguiente manera:

Código PHP:
Ver original
  1. $id= $_POST["id"];
  2. $cantidad = $_POST["cantidad"];
  3.  
  4. connect= mysql_connect ("xxxx", "axxxxx", "xxxxxxx")or die ("Problema 1 : No se pudo conectar con la base de datos ".mysql_error());
  5.         mysql_select_db("a1968458_cManage",$connect) or die ("Problemas al seleccionar la base de datos".mysql_error());
  6.         $query= "delete from news where newID=$id[$e]";
  7.         $news=mysql_query($query, $connect) or die ("Problema al acceder a los datos ".mysql_error());
  8.         echo $id[$e];
  #11 (permalink)  
Antiguo 16/08/2010, 18:57
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Enviar ID de varios campos Checkbox

solo debes de colocar el mismo nombre al check y el resto es como te mencionamos antes
Código PHP:
Ver original
  1. echo '<tr><td><input type="checkbox" value="'.$reg['newID'].'" /></td><td>'.stripslashes($reg['title']).'</td>';
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #12 (permalink)  
Antiguo 16/08/2010, 19:16
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por eits Ver Mensaje
solo debes de colocar el mismo nombre al check y el resto es como te mencionamos antes
Código PHP:
Ver original
  1. echo '<tr><td><input type="checkbox" value="'.$reg['newID'].'" /></td><td>'.stripslashes($reg['title']).'</td>';
saludos.
Se me acaba de ocurrir, no seria mas facil hacer que el nombre de cada checkbox sea el numero que le corresponde a la cantidad para luego llamarlos y ya poder saber si estan tildados o no?

Seria algo asi:

<input type="checkbox" value=$reg['newID'] name=$cantidad>
$cantidad++

Y despues recuperarlos:

$cantidad=$_POST["cantidad"];

for ($i = 0 , $i<=$cantidad, $i++){
$id = $_POST["$i"];
if ($id){
Borrar noticia
}
}

Se podria hacer de esa manera? Para comprobar si esta marcado el checkbox es asi? O como se hace?

Gracias por la mano que me estan dando ;).
  #13 (permalink)  
Antiguo 16/08/2010, 19:48
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por eits Ver Mensaje
si es posible de echo lo esta haciendo por eso le indica array, lo que debe de hacer es recorrerlo con un foreach, while, do ... while, de echo si le haces un var_dump($id) te mostrara el contenido del array
Código PHP:
Ver original
  1. $id= $_POST["id"];
  2. foreach($id as $k => $v) echo $v.'</br>';
es un ejemplo, espero y te sirva, saludos.


he vivido engañada un buen rato de mi vida jjajajajaja gracias!! =)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #14 (permalink)  
Antiguo 16/08/2010, 19:49
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por silvanha Ver Mensaje


he vivido engañada un buen rato de mi vida jjajajajaja gracias!! =)
Creo que tambien se puede hacer como comente en el post anterior. Ahora voy a probar..
  #15 (permalink)  
Antiguo 16/08/2010, 19:51
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por aguila_393 Ver Mensaje
Creo que tambien se puede hacer como comente en el post anterior. Ahora voy a probar..
Bueno sucede que para manejar checkbox si o si los manejas como arreglos ( ya no seeee jajaja) eso si lo he manejado, pero el tener un arreglo extra, no como parte del formulario y anexarlo en un campo hidden.. eso si es nuevo para mi.. :P
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #16 (permalink)  
Antiguo 16/08/2010, 19:56
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por silvanha Ver Mensaje
Bueno sucede que para manejar checkbox si o si los manejas como arreglos ( ya no seeee jajaja) eso si lo he manejado, pero el tener un arreglo extra, no como parte del formulario y anexarlo en un campo hidden.. eso si es nuevo para mi.. :P
Solo tenes que poner un campo hidden con la cantidad de elementos que mostras, y a cada uno le asignas su valor correspondiente en la cantidad.

Por ej. si son 10 el primero seria 0, el segundo 1, y asi sucesivamente. Despues en la parte de codigo donde recibis los datos haces un

Código PHP:
Ver original
  1. for ($i=0, $i<=$cantidad, $i++){
  2. $id = $_POST[$i];
  3. }

Y ahi mismo podes hacerle un if y elegir lo que queres hacer con cada uno.
  #17 (permalink)  
Antiguo 16/08/2010, 19:57
Avatar de silvanha  
Fecha de Ingreso: marzo-2006
Ubicación: En mi mundo de sueños
Mensajes: 653
Antigüedad: 18 años, 1 mes
Puntos: 65
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por aguila_393 Ver Mensaje
Solo tenes que poner un campo hidden con la cantidad de elementos que mostras, y a cada uno le asignas su valor correspondiente en la cantidad.

Por ej. si son 10 el primero seria 0, el segundo 1, y asi sucesivamente. Despues en la parte de codigo donde recibis los datos haces un

Código PHP:
Ver original
  1. for ($i=0, $i<=$cantidad, $i++){
  2. $id = $_POST[$i];
  3. }

Y ahi mismo podes hacerle un if y elegir lo que queres hacer con cada uno.
y termine siendo yo la instruida jajajajajaja si, ya vi los ejemplos que te han puesto, gracias por tu explicación ;)
__________________
●•· No hay nada imposible..
●•· Vico-X.. ;)
  #18 (permalink)  
Antiguo 16/08/2010, 20:14
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Enviar ID de varios campos Checkbox

Cita:
Iniciado por silvanha Ver Mensaje
y termine siendo yo la instruida jajajajajaja si, ya vi los ejemplos que te han puesto, gracias por tu explicación ;)
Para eso estamos
  #19 (permalink)  
Antiguo 16/08/2010, 21:22
Avatar de aguila_393  
Fecha de Ingreso: septiembre-2007
Ubicación: Argentina
Mensajes: 406
Antigüedad: 16 años, 6 meses
Puntos: 1
Respuesta: Enviar ID de varios campos Checkbox

Probe haciendolo como se me habia ocurrido y funciono perfecto :D Ya estoy progresando, y gracias amigos por ayudarme

Etiquetas: campos, checkbox, enviar
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 09:00.