Foros del Web » Programando para Internet » PHP »

Chexbox en php?

Estas en el tema de Chexbox en php? en el foro de PHP en Foros del Web. Hola amigos: estoy tratando de trabajar con chexbox en php, pero no me resulta: este es mi codigo con lo ke genero esta tabla: Código ...
  #1 (permalink)  
Antiguo 17/10/2003, 21:32
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
Pregunta Chexbox en php?

Hola amigos:

estoy tratando de trabajar con chexbox en php, pero no me resulta:

este es mi codigo con lo ke genero esta tabla:


Código PHP:
<?php

$host
="localhost";
$usuarioBD="xxx";
$contaseñaBD="xxx";
$base_de_datos="pruebas";
$tabla="test1";

$coneccion mysql_connect($host,$usuarioBD,$contraseñaBD) or die (mysql_error());

mysql_select_db($base_de_datos$coneccion) or die (mysql_error());

$resultado = ("SELECT nombre, pais FROM test1");

$resultado_final mysql_query($resultado$coneccion) or die (mysql_error());

//--------------------------------------------------------------



//--------------------------------------------------------------

echo "<table border='1'> \n";

echo 
"<tr> \n";

echo 
"<td></td> \n";

echo 
"<td><b>Nombre</b></td> \n";

echo 
"<td><b>Pais</b></td> \n";

echo 
"</tr> \n";

while (
$row mysql_fetch_row($resultado_final)){

echo 
"<tr> \n";

echo 
"<td><input type=\"checkbox\" name=\"$ver\" value=\"checkbox\"></td> \n";

echo 
"<td>$row[0]</td> \n";

echo 
"<td>$row[1]</td> \n";

echo 
"</tr> \n";

}

echo 
"</table> \n";

?>
Mi duda es la siguiente:

como puedo realizar una funcion, que al momento que el usuario selecione un chexbox, y los datos selecionados salgan de la tabla y se ingresen a una tabla nueva.

se me olvidaba, asi esta compuesta mi tabla de mi base de datos

Código PHP:
CREATE TABLE `test1` (
  `
idint(10NOT NULL auto_increment,
  `
nombrevarchar(20NOT NULL default '',
  `
paisvarchar(20NOT NULL default '',
  
PRIMARY KEY  (`id`)
TYPE=MyISAM AUTO_INCREMENT=
de antemano gracias por su ayuda

saludos
__________________
Practicando se Aprede
:-) :-)

Última edición por necu; 17/10/2003 a las 21:35
  #2 (permalink)  
Antiguo 17/10/2003, 22:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues lo primero es que generes un array de nombre fijo y de valor variable para tus checbox ..

Código PHP:
echo "<td><input type=\"checkbox\" name=\"seleccion[]\" value=\"$row['id']\"></td> \n"
El [] en el name de de ese checbox define que será un array para PHP .. y [] (sin indice) define que será autoincremental (comenzando en 0) a cada llamada que se haga de la misma variable (ejemplo en un bucle como ese while que se ecuentra ..))

(usa en $row['id'] el indice que le corresponda .. Te recomendaría trabajar con mysql_fetch_array o assoc para que puedas acceder a los indices del array entregado por esas funciones por su nombre asociativo .. así se vé más claro el código y se sabe de donde vienen los datos (de que nombre de campos) ..)

También te hace falta un formulario para meter todos tus checbox y su correspondiente botón de "enviar" (submint) ..

<form action="hacer_tal_cosa.php" method="post">
tu actual código donde generas tu checkbox ..

tu botón de submit ..
</form>

Así, en "hacer_tal_cosa.php" recibiras un array de nombre variable $seleccion (o mejor por $_POST['seleccion']) .. como array que es lo puedes recorrer con cualquier tipo de bucle (recomendable un foreach()) y a partir de ahí haces lo que requieras con ese ID de tu tabla ...

Si te das cuenta .. paso en los checkbox sólo el ID del registro a "mover" .. así puedo hacer consultas de "movimiento" tipo:

Obtener el registro a mover ("record set")..
SELECT * FROM tabla WHERE id='$id'

Y a continuación .. el INSERT correspondiente en la otra tabla con los $row[?] de esa tabla .. Y ... si son iguales (mismo número de campos y distribución en las tablas) puedes recorrer a su vez tus $row con un bucle (for .. foreach() ... etc) para insertarlos en tu otra tabla ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 17/10/2003 a las 22:11
  #3 (permalink)  
Antiguo 19/10/2003, 20:38
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
gracias cluster por tu ayuda pero me surgen dudas que son las siguientes:

Cita:
El [] en el name de de ese checbox define que será un array para PHP .. y [] (sin indice) define que será autoincremental (comenzando en 0) a cada llamada que se haga de la misma variable (ejemplo en un bucle como ese while que se ecuentra ..))

(usa en $row['id'] el indice que le corresponda .. Te recomendaría trabajar con mysql_fetch_array o assoc para que puedas acceder a los indices del array entregado por esas funciones por su nombre asociativo .. así se vé más claro el código y se sabe de donde vienen los datos (de que nombre de campos) ..)

esto es lo que no entiendo de tu respuesta...
__________________
Practicando se Aprede
:-) :-)
  #4 (permalink)  
Antiguo 20/10/2003, 06:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. es eso,

Un objeto de formulario que se indique nombre[] .. se tomará en PHP como un array (matriz, arreglo...) Y si no lleva indice (nombre[esto es el indice] ) .. se tomará como "autoincremental"; es decir, cada vez que llames a tu nombre[] se incrementará en una unidad el indice de ese array que se está creando, comenzando por el 0 y siendo un indice numérico.

El $row['id'] en el value del checkbox debe ser el identificador de ese checkbox .. Por ejemplo lo típico suele ser un "ID" que relaciona a ese registro y que lo identifica como único. En tu tabla test1 es tu campo id ..

Sólo pasaran en tu array seleccion[] los checkbox seleccionados y tomaran el valor que tenga su correspondiente "value".

Así que en el script.php recibiras un array de nombre $seleccion y que contiene los "ID" que marcastes; en tu caso del ejemplo que sólo tienes dos registros serán combinaciones tipo: 1,2 .. 1, 2, .. etc. Recuerda "sólo" los seleccionados.

En tu script.php sólo tendrás que recorrer ese array $seleccion para obtener tus ID's seleccionados y a partir de ahí hacer lo que tengas que hacer con ellos ..

Código PHP:
echo "ID's Seleccionados:<br>";
foreach (
$_POST['seleccion'] as $id){
   echo 
$id."<br>";

Por ejemplo .. en ese bucle (foreach) puedes usar algún DELETE (si quisieras borrar esos registros seleccionados) (con condicional WHERE id='$id') o similar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 20/10/2003, 10:13
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
cluster sabes ke no me entrega los valores en la otra pagina:

index.php:
Código PHP:
<?php

include("conexion.php");
echo 
"<form action=\"procesar.php\" method=\"post\"> \n";
echo 
"<table border='1'> \n";
echo 
"<tr> \n";
echo 
"<td></td> \n";
echo 
"<td><b>Nombre</b></td> \n";
echo 
"<td><b>Pais</b></td> \n";
echo 
"</tr> \n";
while (
$row mysql_fetch_array($resultado_final)){
echo 
"<tr> \n";
echo 
"<td><input type=\"checkbox\" name=\"seleccion[]\" value=\"$row[3]\"></td> \n";
echo 
"<td>$row[0]</td> \n";
echo 
"<td>$row[1]</td> \n";
echo 
"</tr> \n";
}
echo 
"<tr> \n";
echo 
"<td></td> \n";
echo 
"<td></td> \n";
echo 
"</tr> \n";

echo 
"<tr> \n";
echo 
"<td></td> \n";
echo 
"<td></td> \n";
echo 
"<td><input type=\"submit\" name=\"Submit\" value=\"Enviar\"></td> \n";
echo 
"</tr> \n";
echo 
"</table> \n";
echo 
"</form> \n";
?>

procesar.php
Código PHP:
<?php
include ("conexion.php");
echo 
"ID's Seleccionados:<br>";
foreach (
$_POST['seleccion'] as $id){
   echo 
$id."<br>";
}
?>
conexion.php
Código PHP:
<?php
$host
="localhost";
$usuarioBD="xx";
$contaseñaBD="xx";
$base_de_datos="xx";
$tabla="test1";
$coneccion mysql_connect($host,$usuarioBD,$contraseñaBD) or die (mysql_error());
mysql_select_db($base_de_datos$coneccion) or die (mysql_error());
$resultado = ("SELECT nombre, pais, id FROM test1");
$resultado_final mysql_query($resultado$coneccion) or die (mysql_error());
?>
el problema que tengo es ke en la pagina de pocesar.php no me muestra los resultados seccionados en la index.php, que puede ser????????
__________________
Practicando se Aprede
:-) :-)
  #6 (permalink)  
Antiguo 20/10/2003, 15:15
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Yo creo que si te los muestra, mira en "Ver codigo fuente" en tu navegador. Veras tantos <br> como casillas seleccionadas. Tambien te muestra el valor que has puesto en los value de los checkbox, mira tambien el "Ver codigo fuente" del navegador en index.php.

O por lo menos es asi si conexion.php es el que usas en index.php. Porque en esa consulta SQL solo pides 3 datos, y en el formulario estas poniendo en los value del checkbos el $row[3], es decir el CUARTO campo de la consulta. Es la mania que tenemos los programadores de empezar a contar desde 0. Asi que pone en tus value el $row[2].

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 20/10/2003, 15:25
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
gracias josemi

era por el row[3] uqe era el row[2] jejje , pero como hago ahora para que ese registro se cambie a otra tabla ????
__________________
Practicando se Aprede
:-) :-)
  #8 (permalink)  
Antiguo 20/10/2003, 16:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Haz un SELECT de ese ID que ya tienes y tu INSERT en tu nueva tabla..

SELECT * FROM tabla WHERE id='$id'

Y a continuación su respectivo INSERT en la otratabla con los $row[] (campos) de la tabla origen que necesites ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 20/10/2003, 16:12
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Bueno, depende de lo que entiendas por "mover a otra tabla".

Pero lo que tienes en $_POST['seleccion'] es un array con los id seleccionados. Haciendo un SQL:

.... WHERE id IN (1,4,5)

puedes seleccionar los registros cuyo id sea uno de la lista.

Haciendo:
Código PHP:
$lista='('.implode(',',$_POST['seleccion']).')'
Obtienes la lista de id seleccionados separados por comas y entre parentesis.

Si defines "mover" como insertar en la nueva tabla y borrar de la tabla antigua, las SQL serian:

INSERT ... SELECT ... (http://www.mysql.com/doc/en/INSERT.html)

DELETE FROM ... (http://www.mysql.com/doc/en/DELETE.html)

En ambos casos usando el WHERE id IN $lista.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 20/10/2003, 16:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Me estoy haciendo mayor xDD .. la de veces que he mencionado el "IN" de Msyql .. y hoy se me pasó .. Una vez más gracias Josemi jeje.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 21/10/2003, 13:25
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
Gracias a todos por su ayuda, gracias a ustedes logre lo ke keria hacer jejejej.

ahora me funcina como lo keria, pero me surge una mueva duda, es ke queria realizar una actualizacion a mi script en vez que en la otra pagina me entrege el valor de ID ahora quiero que me aparesca el nombre y el pais

foreach ($_POST['seleccion'] as $ID){
echo $ID. "<br>";
}

en esta parte del codigo ke tendria que hacer para ke me imprima el nombre y el pais.
__________________
Practicando se Aprede
:-) :-)
  #12 (permalink)  
Antiguo 21/10/2003, 14:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
¿El "nombre y pais" de los registros seleccionados .. te refieres?

Si es así .. en lugar el "DELETE ... IN(....)" usa SELECT .. pero siempre con la condicion campo IN (lista de Id's...)

Código PHP:
<?
// Conecta a tu BD .. selecciona la BD ..etc

//Preparas la consulta SQL
$lista='('.implode(',',$_POST['seleccion']).')';
$sql="SELECT * FROM tabla WHERE id IN $lista";

//La ejecutas
$consulta=mysql_query($sql);

// y tu bucle para acceder a los registros/campos de tu "recor-set"
while ($row=mysql_fetch_array($consulta)){
  echo 
$row['nombre']."--> ".$row['pais']."<br>";

}
?>
Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 21/10/2003 a las 14:39
  #13 (permalink)  
Antiguo 21/10/2003, 15:40
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
cluster me referia a ke con :
Código PHP:
echo "ID's Seleccionados:<br>";
echo 
"<br>";
foreach (
$_POST['seleccion'] as $id){
    echo 
$id"<br>";

solo me entrega en la otra pagina:
Código PHP:
IDs Seleccionados:


etc... segun los chexbox selecionados

lo ke decia yo era ke me entrege los valores asi
Código PHP:
IDs Seleccionados:

ID:1
Nombre
Nombre
Pais
Pais 
me entiendes ahora.......
__________________
Practicando se Aprede
:-) :-)

Última edición por necu; 21/10/2003 a las 15:42
  #14 (permalink)  
Antiguo 21/10/2003, 17:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues ya te puse el código que debes usar .. es un SELECT normal y corriente bajo tu WHERE id ...

Lo vistes? .. ademas al usar IN (lista) de Msyql .. podrás ver los registros que marcases (no sólo uno ..sino todos los que seleciones)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #15 (permalink)  
Antiguo 23/10/2003, 09:39
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
Gracias amigos:

sin la ayuda de ustedes no lo ubiese logrado,

agradecido hasta la muerte jejejejejee
__________________
Practicando se Aprede
:-) :-)
  #16 (permalink)  
Antiguo 05/11/2003, 18:17
 
Fecha de Ingreso: noviembre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
help

hola tengo una conculta acercar del tema si utilizamos un formulario y el metodo POST pues todo funciona a la perfeccion pero si no deseo utilizar ni formulario ni metodo POST ni GET cual seria la solucion?

alguien me podria ayudar... se lo agradeceria....
  #17 (permalink)  
Antiguo 05/11/2003, 19:04
 
Fecha de Ingreso: abril-2003
Ubicación: 127.0.0.1
Mensajes: 359
Antigüedad: 14 años, 8 meses
Puntos: 0
bueno el metodo POST

se utiliza para recoger la variable selecionada, no se si funcionara sin utilizar este tipo de metodo...... pero este metodo es necesario para el trabajo con array..

Bye
__________________
Practicando se Aprede
:-) :-)
  #18 (permalink)  
Antiguo 05/11/2003, 19:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues entonces explica que es lo que "tienes" y que pretendes hacer. Si dices que no usas formulario .. ni método GET o POST (supongo que te refieres al method en sí del formulario) .. mm no sé que tendrás .. pero, de alguna forma has de "recolectar" esos datos para enviarlos al servidor y .. la forma más simple es con un formulario; ahora, que el "submit" se pueda hacer automático .. o que los elementos no sean "checkbox" sino por ejemplo campos hidden . .OK.

En ese caso hay más javascript que PHP .. tendrías que resolver priméro el problema en el "cliente" (con javascript, HTML .. etc) y saber que es lo que estás enviando al servidor como para poder recogerlo en tu script PHP como corresponda.

Un saludo,

PD: Sería recomendable que hicieras la aclaración pertinente en un nuevo mensaje.
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #19 (permalink)  
Antiguo 05/11/2003, 19:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
(en el formulario .. method= POST o GET es indiferente .. sólo hay que recoger las variabels por su método $_POST o $_GET, pero la técnica es la misma: formulario .. name's como arrays[] y poco más ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #20 (permalink)  
Antiguo 06/11/2003, 09:29
 
Fecha de Ingreso: noviembre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
funciona si realizo todo mediante un botton submit (y claro ya tengo todo contenido en un formulario) pero el problema surge que no utilizo un botton submit sino q utilizo una libreria donde contengo la imagenes para la funcion en este caso una que sea eliminar (doy click sobre la imagen y borrara los seleccionados) esta imagen esta en un archivo php para ser mas especifico en una funcion...

y su codigo de creacion es este:

<td width="17%"><div align="center"><a href="procesoeli.php"><img src="img/eliminar.bmp" alt="dan" border=0 align=center valign=bottom height = 15 width = 100</td> </a>
</div>

si utilizo esto en vez de un submit cual seria la solucion para q el array funcione?
  #21 (permalink)  
Antiguo 06/11/2003, 12:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
nockard

La solución de tu problema no es con PHP .. es con Javascript .. Empezando por el própio "submit" .. si ahora no tienes un botón de formulario y tienes una imagne (con link) ..deberás lanzar el evento "submit" de ese formulario (que debe contener tus checkbox) (onClick=... submit ...) Pero esto es cosa de Javscript.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #22 (permalink)  
Antiguo 06/11/2003, 15:11
 
Fecha de Ingreso: noviembre-2003
Mensajes: 7
Antigüedad: 14 años, 1 mes
Puntos: 0
ok gracias, creo q voy a tener q intentar con java....
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 16:45.