Foros del Web » Programando para Internet » PHP »

Problema con los checkbox (también yo)

Estas en el tema de Problema con los checkbox (también yo) en el foro de PHP en Foros del Web. Hola de nuevo!! He leído y releído todo lo que hay en las FAQ's sobre los checkbox y no encuentro solución a mi problema, estoy ...
  #1 (permalink)  
Antiguo 11/05/2005, 14:58
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Problema con los checkbox (también yo)

Hola de nuevo!!

He leído y releído todo lo que hay en las FAQ's sobre los checkbox y no encuentro solución a mi problema, estoy seguro de que es muy simple pero yo no lo se hacer, lo explico a continuación:

Idea: Crear un Interface web (tipo phpMyAdmin, pero más simple) para gestionar una base de datos MySQL.

Hecho hasta ahora: Inserta los registros, los muestra en una tabla, hasta ahí bien.

Problema: al mostrar los registros en la tabla, pongo un checkbox para seleccionar el registro de esta forma:
Código PHP:
<input type='checkbox' name='id' value='$row[0]'
Pero al enviarlo no me envía los datos del registro, es decir, no muestra nada en la página de destino, imagino que no selecciona nada.

El envío se hace a otra página (Con POST) que se supone tiene que mostrar otro formulario con los datos del registro seleccionado para poder cambiar o añadir lo que sea y al enviar este form lo actualiza en la base de datos.

Pregunta: ¿Cómo puedo conseguir que se seleccione el registro completo y se muestren los datos en la página de destino? Creo que lo de mostrarlo lo tengo claro pero primero debo seleccionar el registro y no se como. ¿Alguien se atreve con esto? Si lo completamos lo podemos postear para que lo usen todos los que quieran como el Autentificator de Cluster, que por cierto, está ¡¡GENIAL!!

Muchas gracias de antemano por la ayuda
  #2 (permalink)  
Antiguo 11/05/2005, 15:44
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Debe de ser más complicado de lo que pensaba, en 1 hora no ha respondido nadie

Y yo desquiciado intentando resolverlo, pero no hay forma, faltan conocimientos
  #3 (permalink)  
Antiguo 11/05/2005, 16:00
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
A ver si entiendo:
1- Ya hiciste la parte en que se meten los datos y se guarda hasta alli todo bien.
2- Ahora lo que haces es desplegar los resultados pero quieres que para poder editar esos resultados seleccion la linea que quieran por medio de un checkbox, luego den click a editar o borrar y haga y te mande a la pagina que se solicite, ejemplo editar.

Aqui debes tomar en cuenta que los checkbox deberan ponerle nombre de manera de array porque llevaran el mismo nombre pero con valores distintos si seleccionan varios.

Esto se hace asi:
<input type="checkbox" name="id[]" value="<?php echo $row[0]?>";

Y en la pagina editar entonces manejas los valores como array ya que te vendra la variable $id pero como array.
Te daras cuenta cuantos registros trae con:
echo count($id);
  #4 (permalink)  
Antiguo 11/05/2005, 16:22
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Hola dwaks!!

Muchas gracias por responder No me quejaba de la "tardanza", lo que pasa es que se me hacía raro que nadie hubiera respondido ni leído.

He probado lo que me decías:
Código:
<input type=\"checkbox\" name=\"id[]\" value=\"$row[0]\">
y en la página de editar pongo
Código:
echo count($id);
y me da el número de los checkbox que selecciono (que debería ser sólo uno, aunque eso habrá que verlo después, creo que con js se puede hacer) pero no me muestra los datos en el form donde deberían estar para editarlos, creo que es porque no se selecciona el registro, pero no se como hacerlo y se que tiene que ser algo muy simple porque lo he visto en muchos sitios pero aún así, no hay manera.

¿Me puedes ayudar? Muchas gracias, de verdad. Es para una web de un cliente y me estoy retrasando por tonto (debería saber cómo se hace esto...)
  #5 (permalink)  
Antiguo 11/05/2005, 16:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No te desesperes . y antes de nada .. mira las FAQ's .. tal vez por eso no te responden .. por qué está allá resuelto el tema:

http://www.forosdelweb.com/f18/faqs-php-530600-post518710/

Un saludo,
  #6 (permalink)  
Antiguo 11/05/2005, 16:27
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Ahora lo que debes hacer es verificar si seleccionaste 2 o mas imprimir en pantalla que los valores los tiene, esto verifica que no vengan vacios y reciba el valor correcto de $row[0].
en editar pon esto
<?php
for($i=0;$i<count($id);$i++){
echo $id[$i]."<br>";
}
?>

Esto debe mostrarte la lista de los id que se selecciono.
Si te los muestra entonces ya sabes como recibirlos.
  #7 (permalink)  
Antiguo 11/05/2005, 16:31
Avatar de SAGITARIO  
Fecha de Ingreso: febrero-2005
Ubicación: Huancayo
Mensajes: 108
Antigüedad: 12 años, 9 meses
Puntos: 0
Es el camino

Hola amigo...

dwaks tiene razon por ahi va la cosa.

Cita:
Problema: al mostrar los registros en la tabla, pongo un checkbox para seleccionar el registro
Bueno lo que tienes que hacer es crear un checkbox por cada registro que se va encontrando en tu TABLA y nombrarlo como ARRAY .

Código PHP:
//  todo el encabezado
$resul=mysql_query("select * from tabla");
$nfilas=mysql_num_rows($resul);            
     if (
$nfilas<1)
{
 echo 
"No hay Registros";
}
else
// zona cuando hay registros
{            
 while(
$campo=mysql_fetch_array($resul))
       {
       
// puedes  ingresar los datos a una TABLA  si deseas 
      //  <table>    </table>  
       
<input type='checkbox' name='id[]' value='$campo[0]'
        }
}            

//// para saber cual de los  registros de la  tabla  fue seleccionado:

foreach($id as $n)
{
echo 
$n."<BR>";

Bueno espero que te ayude en algo.

Salu2.
  #8 (permalink)  
Antiguo 11/05/2005, 16:31
Avatar de ignacio_giri  
Fecha de Ingreso: febrero-2003
Ubicación: Argentina, Rosario
Mensajes: 585
Antigüedad: 14 años, 9 meses
Puntos: 0
la solución de las FAQ's a mi no me gusta, aunque la base es la misma, este tiene esta un poco más explicado:

http://php.apsique.com/node/383/trackback

el ejemplo que hace es para borrar multiples registros con checkbox pero con la misma idea y usando un foreach podras hacers Inserts Updates y lo demás.

yo hice un back-end todo de esas simpaticas cajitas (checkboxs) y es simple, es solo de imaginarse un poco la solución...

y tener mucho cuidado porque al trabajar con muchos valores puede saturar el servidor... por lo tanto deberás optimizar muy bien tu base de datos.
__________________
Ignacio
  #9 (permalink)  
Antiguo 11/05/2005, 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
La solución de las FAQ's propone ambos métodos para seleccionar registros o borrar . es decir . .hacer consultas SQL tipo "IN" y la del bucle foreach() para hacer las operaciones una por una.

Ahora .. usar como indices "asociativos" .. bueno .. depende del caso así te hará falta. Por lo demás .. sobre "gustos no hay nada escrito" .. Las propuestas ahí están.

Un saludo,
  #10 (permalink)  
Antiguo 11/05/2005, 17:49
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Lo primero muchas gracias a todos por responder

Ahora, por partes...

Cluster, sobre la Faq, estoy un poco tonto pero es que no la entiendo

dwaks, he probado lo que me dices y sí me muestra el id que he seleccionado, pero te equivocas en una cosa, (nooo, es broma, no te equivocas tú, lo que pasa es que soy muy novato en PHP) bueno, el caso es que no se como recibirlos llevo una "empanada" mental que ya no me aclaro, vamos a ver, tengo el id que quiero editar en la página que lo quiero tener, pero ¿como hago para mostrar el resto de los datos en el formulario? bueno, creo que para mostrarlos en el form ya sabré me parece que es con <input value="<?php echo "lo que sea"?>">, la cuestión es ¿a qué equivale ese "lo que sea"?

En cuanto a lo que dices, SAGITARIO, así es como lo estoy haciendo para mostrar los registros en pantalla con el checkbox, el problema es lo que viene después...

Y la solución que propones, ignacio_giri, la verdad es que no la entiendo, la he probado pero no consigo que salga nada, me da error todo el tiempo (seguro que estoy poniendo algo mal...)

En fin, como decía, estoy un poco más adelante pero aúno no lo tengo claro, vamos, que no se como seguir ¡¡ayuda porfa!!

Muchas gracias.
  #11 (permalink)  
Antiguo 11/05/2005, 17:59
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
Información

Bueno ya que tienes los id osea que te llegan por medio del array entonces como te dije se hace un bucle para ver los contenidos del array.

El metodo que te propongo es que mientras el bucle este activo recorriendo el array entonces dentro pongas las consulta a la base de datos y lo muestre en pantalla, asi escribes el formulario y el codigo lo replica:

Te dare un ejemplo teniendo en cuenta que tienes en la tabla 3 campos que son id,nombre,apellido. Y ya tienes una coneccion abierta a la base de datos.
Ejemplo:
Código PHP:
<form action="cgi_editar.php" method="post">
<?php
foreach($id as $boxID){
 
$sql "Select * from tabla where id = '".$boxID."'";
 
$rs mysql_query($sql,$coneccion);
 while(
$result=mysql_fetch_array($rs)){
?>
<input type="text" name="nombre[]" value="<?php echo $result["nombre"]?>"><br>
 <input type="text" name="apellido[]" value="<?php echo $result["apellido"]?>"><br>
<input type="hidden" name="id[]" value="<?php echo $result["id"]?>">
<hr>
<?php
 
}
}
?>
<input type="submit" name="submit" value="Editar">
</form>
Aclaro que ese ejemplo es un pequeño manual del metodo que propongo, ya despues metes todo ordenado en tablas y celdas y dentro de tu diseño web.
  #12 (permalink)  
Antiguo 11/05/2005, 19:33
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
Hola de nuevo dwaks!!

Pues resulta que no funciona, antes me mostraba el form sin los datos pero ahora no me muestra nada, sólo la estructura html que está hecha con includes, tal que así, primero la que muestra la tabla:

Código PHP:
<? include("includes/head1_corp.php"); ?>
<meta name="title" content="Ver base de datos">
<meta http-equiv="title" content="Ver base de datos">
<title>Ver base de datos</title>
<? include("includes/head2_corp.php"); ?>
<span class="title">Ver base de datos</span>
<? include("includes/body1_corp.php"); ?>
<? 
/* Los includes sólo contienen HTML*/
include("includes/conectar.php");

$nombre_tabla $_POST["tabla_form"];

conectar();


// Hago una petición para que me muestre todos los registros de la tabla
// y lo guardo en un variable     
$query "SELECT * from $nombre_tabla";
$result mysql_query($query);

// Preparo la Tabla

echo "<center>\n<div align=\"center\">\n<table width=\"700\" border= \"0\" align =\"center\" cellpadding =\"5\"  cellspacing =\"3\">\n";
echo 
"<form action=\"editar.php\" method=\"POST\" name=\"modificacion\">\n";

echo 
"<tr class=\"55\">\n";

// Parte fija de la tabla
echo "<td width=\"5\" align=\"center\">&nbsp;</td>\n";
echo 
"<td width=\"5\" align=\"center\">Nº</td>\n";
echo 
"<td width=\"130\" align=\"center\">Nombre</td>\n";
echo 
"<td width=\"300\" align=\"center\">Apellidos</td>\n";
echo 
"<td width=\"50\" align=\"center\">Teléfono</td>\n";
echo 
"<td width=\"130\" align=\"center\">E-mail</td>\n";
echo 
"<td width=\"50\" align=\"center\">País</td>\n";
echo 
"<td width=\"30\" align=\"center\">Nº Único</td>\n";

// Parte dinámica de la tabla

while ($row=mysql_fetch_row($result))
{
echo 
"<tr bgcolor=\"#FFFFFF\">\n";
echo 
"<td width=\"5\" align=\"center\"><input type=\"checkbox\" name=\"id_clientes[]\" value=\"$row[0]\"></td>\n";
echo 
"<td width=\"5\" align=\"center\">$row[0]</td>\n";
echo 
"<td width=\"130\" align=\"left\">$row[1]</td>\n";
echo 
"<td width=\"200\" align=\"left\">$row[2]</td>\n";
echo 
"<td width=\"50\" align=\"right\">$row[3]</td>\n";
echo 
"<td width=\"130\" align=\"left\">$row[4]</td>\n";
echo 
"<td width=\"50\" align=\"left\">$row[5]</td>\n";
echo 
"<td width=\"30\" align=\"left\">$row[6]</td>\n";
echo 
"</tr>\n";
}

echo 
"<tr bgcolor=\"#FFFFFF\">\n<td align=\"center\" colspan=\"8\">\n";
echo 
"<input type=\"submit\" name=\"boton\" id=\"boton\" value=\"Ver\"></td>\n</tr>\n";

echo 
"</form>\n</table>\n</div>\n</center>";
?>


<? include("includes/body2_corp.php"); ?>

&nbsp;

<? include("includes/pie1_corp.php"); ?>
Y aquí la que debería editarla:

Código PHP:
<? include("includes/head1_corp.php"); ?>
<meta name="title" content="Editar registros">
<meta http-equiv="title" content="Editar registros">
<title>Editar registros</title>
<? include("includes/head2_corp.php"); ?>
<span class="title">Editar registros<br>
<?php echo count($id_clientes)."<br>";
for(
$i=0;$i<count($id_clientes);$i++){
echo 
$id_clientes[$i]."<br>";
}
?>
</span>

<? include("includes/body1_corp.php");
include(
"includes/conectar.php");

conectar(); // esto es una función que está en conectar.php, lo único que hace es la conexión a la BD

$boton $_POST["boton"];

foreach(
$id as $boxID){ 
$sql "Select * from clientes where id_clientes = '".$boxID."'"
$rs mysql_query($sql,$link); 
while(
$result=mysql_fetch_array($rs)){ 
?> 

<div align="center">
<center>
<table border="0" cellpadding="3" cellspacing="3" width="500">
<form action="editar.php" method="POST" name="editar">
<tr>
<td align="right">Nº: </td>
<td><input type="text" name="id_clientes[]" value="<?php echo $result["id_clientes"]?>" size="5" readonly></td>
</tr>
<tr>
<td align="right">Nombre: </td>
<td><input type="text" name="nombre[]" value="<?php echo $result["nombre"]?>" size="30"></td>
</tr>
<tr>
<td align="right">Apellidos: </td>
<td><input type="text" name="apellidos[]" value="<?php echo $result["apellidos"]?>" size="50"></td>
</tr>
<tr>
<td align="right">Teléfono: </td>
<td><input type="text" name="telefono[]" value="<?php echo $result["telefono"]?>" size="13"></td>
</tr>
<tr>
<td align="right">E-mail: </td>
<td><input type="text" name="email" value="<?php echo $result["email"]?>" size="50"></td>
</tr>
<tr>
<td align="right">País: </td>
<td><input type="text" name="pais" value="<?php echo $result["pais"]?>" size="35"></td>
</tr>
<tr>
<td align="right">Número Único: </td>
<td><input type="text" name="numero_unico" value="<?php echo $result["numero_unico"]?>" size="20"></td>
</tr>
<tr>
<td align="center" colspan="2">
<input type="submit" name="boton" value="Editar"></td>
</tr>
</form>
</table>
</center>
</div>
<?php 

}


include(
"includes/body2_corp.php"); ?>

&nbsp;

<? include("includes/pie1_corp.php"); ?>

Pero el problema es que no muestra el form, sólo la parte de HTML
  #13 (permalink)  
Antiguo 12/05/2005, 08:29
Avatar de rbczgz  
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.209
Antigüedad: 14 años
Puntos: 148
No hay nadie? Estoy perdido del todo, no consigo que funcione...
  #14 (permalink)  
Antiguo 12/05/2005, 08:54
Avatar de dwaks  
Fecha de Ingreso: agosto-2002
Ubicación: Panamá
Mensajes: 962
Antigüedad: 15 años, 4 meses
Puntos: 15
E leido este faq tuyo y todas las respuestas que te brindaron y no encuentro como aun no entiendes el concepto.

Ya que manejas otras cosas en tu codigos y no entiendes el concepto que se te da, asi que te invito a que visites los links que te dieron y veas los conceptos que te di leelos muchas veces si es necesario ya que alli esta la respuesta, solo que noto que quieres hacer es copy y paste de lo que te den aqui y listo caso solucionado y de verdad sino entiendes que fue lo que se hizo entonces en que quedo el avanze que deberias tener con respecto a esto?

Despues te encontraras con lo mismo y regresaras aqui a pedir las mismas respuesta.

Tomate tu tiempo lee los links y conceptos y despues me agradeceras el consejo.
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 18:56.