Foros del Web » Programando para Internet » PHP »

problema con checkbox

Estas en el tema de problema con checkbox en el foro de PHP en Foros del Web. hola migos ..... tengo unproblema con este codigo que lo que quiero hacer es modificar los permisos de los usuarios y no entiendo como funciona ...
  #1 (permalink)  
Antiguo 24/10/2005, 00:46
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 19 años, 5 meses
Puntos: 1
problema con checkbox

hola migos ..... tengo unproblema con este codigo que lo que quiero hacer es modificar los permisos de los usuarios y no entiendo como funciona y tengo este codigo pero no se donde hace el insert en la bd porq no modificada nada en los permisos.
lo que yo quiero hacer es que apararesca le funcion ya sea agreagar .... y si lo deja marcado el checkbox q esta al lado cierto, que se modifique en la bd cuando preciona el boton modificar y si no esta marcado que lo saque en la bd. con este codigo q les pongo ahy porfa digamne si esta bein encaminado y lo que me faltaria porfa para tratar de hacerlo gracias... aqui esta los check

<?php
session_start();
session_register('LOGIN');
$LOGIN;
$enlace = mysql_connect("localhost", "root", "") or die("No pudo conectarse : " . mysql_error());
mysql_select_db("hospital") or die("No pudo seleccionarse la BD.");

echo"<html>\n";
echo"<head>\n";
echo"<title>Modificacion de Permisos .</title>\n";
echo"</head>\n";
echo"<body>\n";
echo"<div align='center'>\n";
$sql_busca_funcion="";
$sql_busca_funcion.="SELECT NOMBRE,FUNCION,permiso.ID_FUNCION FROM permiso,funcion WHERE NOMBRE='$paso' AND permiso.ID_FUNCION=funcion.ID_FUNCION";
$res_busca_funcion= mysql_query($sql_busca_funcion) or die("La consulta fall&oacute;: " . mysql_error());
$cant_funcion=mysql_numrows($res_busca_funcion);
echo"$cant_funcion";
for($i=0;$i<$cant_funcion;$i++)
{
$nom_fun=mysql_result($res_busca_funcion,$i,"FUNCI ON");
$nom_user=mysql_result($res_busca_funcion,$i,"NOMB RE");

}
$paso=strtoupper($paso);
echo"<h1><strong>Modificacion de Permisos de $paso</strong></h1>\n";
echo"<p>&nbsp;</p>\n";
echo"<p>&nbsp;</p>\n";
echo"<form method='post' action='$_SERVER'>\n";
echo"<table width='135' border='1'>\n";
echo"<tr>\n";
echo"<td width='46'><input name='chk_ver' type='checkbox' value='checkbox'></td>\n";
echo"<td width='73'><strong>Visualizar</strong></td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td><input name='chk_agregar' type='checkbox' value='checkbox'></td>\n";
echo"<td><strong>Agregar</strong></td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td><input name='chk_modificar' type='checkbox' value='checkbox'></td>\n";
echo"<td><strong>Modificar</strong></td>\n";
echo"</tr>\n";
echo"<tr>\n";
echo"<td><input name='chk_eliminar' type='checkbox' value='checkbox'></td>\n";
echo"<td><strong>Eliminar</strong></td>\n";
echo"</tr>\n";
echo"</table>\n";
echo"<h4>\n";
echo"<input type='submit' name='btn_mod_permiso' value='Modificar_Permisos'>\n";
echo"</h4>\n";
echo"</form>\n";
echo"<p>&nbsp;</p>\n";
echo"</div>\n";
echo"<td width='250'><a href='lis_permiso.php'><strong>Actualizar</strong></td></a>\n";
echo"</body>\n";
echo"</html>\n";
?>
  #2 (permalink)  
Antiguo 24/10/2005, 06:43
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
no se donde hace el insert en la bd porq no modificada nada en los permisos
... si vaz a realmente modificar un registro de la BD no es un INSERT la sentencia que debes hacer; deberá de ser un UPDATE y debes ejecutarla al recibir un formulario (según medio entiendo tu situación).

Cita:
si lo deja marcado el checkbox q esta al lado cierto
¿cuál es el "lado cierto"?? ... jejeje, perdona pero me hizo gracia .

... procura expresarte mejor, realmente se te entiende poco... pero hago comentarios sobre tu código:

- Primero pedirte que ocupes las etiquetas para encerrarlo . Ve en mi firma...

Código PHP:
session_register('LOGIN'); 
session_register() es obsoleto, procura no ocuparlo. Maneja la variable superglobal $_SESSION. ve las FAQ sobre sesiones, están bien explicadas.

Código PHP:
$sql_busca_funcion.="SELECT NOMBRE,FUNCION,permiso.ID_FUNCION FROM permiso,funcion WHERE NOMBRE='$paso' AND permiso.ID_FUNCION=funcion.ID_FUNCION"
No sé ve que hayas definido $paso. Seguramente tienes register_globals en ON (por algo funciona session_register()), esto podría representarte un problema de seguridad. Supongo el dato proviene de un formulario, en tal caso usa $_POST; si lo recojes de la URL usa $_GET. Ve aquella FAQ que explica la diferencia entre usar $xxxx, $HTTP_XXXX_VARS y $_XXXX (así es el título).

Código PHP:
 for($i=0;$i<$cant_funcion;$i++)
{
$nom_fun=mysql_result($res_busca_funcion,$i,"FUNCI ON");
$nom_user=mysql_result($res_busca_funcion,$i,"NOMB RE");


¿cuál es la idea de ese ciclo??... porque lo que estás haciendo es reasignando el valor de las variables a cada rato... algo que, en principio, no suena a que este bien. Plantea el objetivo para decirte alternativas... ó el error...

Código PHP:
 echo"<form method='post' action='$_SERVER'>\n"
$_SERVER es una matriz... eso te arrojará "Array". Supongo querrás guardar el valor del archivo que estás ejecutando (solo adivino), eso lo haces con $_SERVER['PHP_SELF']. Ve la documentación oficial para otros valores: www.php.net/reserved.variables

Código PHP:
 $cant_funcion=mysql_numrows($res_busca_funcion); 
En realidad es mysql_num_rows()

Y bueno.. no es necesario hagas tantos echo()'s. Bien podrías manejar PHP dentro de HTML; trabajarías deuna forma más visual...
www.php.net/language.basic-syntax

Te recomiendo leas un tutorial de PHP. Suerte!

Edito:
En una de esas y te sirve: http://www.forosdelweb.com/f18/simple-duda-editar-borrar-valores-sql-desde-php-269685/ ... busca "editar" y/o lo demás que quieras hacer (borrar, modificar, eliminar).
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 24/10/2005 a las 06:50
  #3 (permalink)  
Antiguo 24/10/2005, 09:15
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 19 años, 5 meses
Puntos: 1
pero una pregunta se puede hacer que marcando el check despues del presionar el botn modificar valla y modifique la bd en este caso los permisos de usuario
  #4 (permalink)  
Antiguo 24/10/2005, 09:32
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Claro! . Solo verifica si el checkbox se envió (solo envia valor si esta seleccionado) y de ser así ejecutas la sentencia para modificar la BD:
Código PHP:
if(!empty($_POST['el_checkbox'])) { // vemos que haya sido enviado
   
mysql_query("UPDATE tabla SET campo = 'nuevo_valor'");
// obviamente antes te conectas, optienes ese "nuevo_valor" y demás...

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #5 (permalink)  
Antiguo 24/10/2005, 10:34
 
Fecha de Ingreso: noviembre-2004
Mensajes: 181
Antigüedad: 19 años, 5 meses
Puntos: 1
problema

mira entonces podria ser asi


$enlace = mysql_connect("localhost", "root", "") or die("No pudo conectarse : " . mysql_error());
mysql_select_db("hospital") or die("No pudo seleccionarse la BD.");
$nombre=$paso;//variable1 q paso por href
$id=$id_usuario;//variable2 q paso por href
echo"$nombre";
echo"$id";
echo"<html>\n";
echo"<head>\n";
echo"<title>Modificacion de Permisos.</title>\n";
echo"</head>\n";
echo"<body>\n";
echo"<div align='center'>\n";

if (isset($btn_mod_permiso))
{
if(!empty($_POST['chk_ver']))
{ // vemos que haya sido enviado
mysql_query("update permiso set ID_FUNCION='1',
ID_USUARIO='&id',
NOMBRE='$nombre'
WHERE ID_USUARIO='$id'");

// obviamente antes te conectas, optienes ese "nuevo_valor" y demás...
}
if(!empty($_POST['chk_ver']))&& (!empty($_POST['chk_agregar']))// esta bien si quiero verificar si hiso 2 click ej en ver y agregar pero hay un problema si es un modificar sierto va a solo modificar pero si el registro no esta y quiere ingresar me explico yo puedo tener una funcion solo ver y quiero cambiarla a ver y agregar mo me va a modificar el agregar po por q no existe como puedo solucionar este problema
{
mysql_query("update permiso set ID_FUNCION='1',
ID_USUARIO='&id',
NOMBRE='$nombre'
WHERE ID_USUARIO='$id'");

mysql_query("update permiso set ID_FUNCION='2',
ID_USUARIO='&id',
NOMBRE='$nombre'
WHERE ID_USUARIO='$id'");


}

}




else
{
.......
porfa dime si voy bien encaminado
  #6 (permalink)  
Antiguo 24/10/2005, 12:15
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por jam1138
- Primero pedirte que ocupes las etiquetas para encerrarlo
Reitero.
Cita:
Iniciado por blackrocha
$nombre=$paso;//variable1 q paso por href
$id=$id_usuario;//variable2 q paso por href
Reitero:
Cita:
Iniciado por jam1138
si lo recojes de la URL usa $_GET
Deberías (tampoco se te obliga ) recojer el dato de la siguiente forma:
Código PHP:
$nombre$_GET['nombre'];
$id$_GET['id_usuario']; 
Aunque... quizá también deberías de validar. Como sea, lo que haces antes no es más que pasarle el valor a una variable... si no vaz a usar variables superglobales ahorrate ese trabajo.

¿por qué usar variables superglobales?; Reitero:
Cita:
Iniciado por jam1138
Ve aquella FAQ que explica la diferencia entre usar $xxxx, $HTTP_XXXX_VARS y $_XXXX (así es el título).
Cita:
Iniciado por blackrocha
// esta bien si quiero verificar si hiso 2 click ej en ver y agregar pero hay un problema si es un modificar sierto va a solo modificar pero si el registro no esta y quiere ingresar me explico yo puedo tener una funcion solo ver y quiero cambiarla a ver y agregar mo me va a modificar el agregar po por q no existe como puedo solucionar este problema
... respira ondo. Existen algo llamado gramática, signos de puntuación y ortografía. Reitero:
Cita:
Iniciado por jam1138
... procura expresarte mejor, realmente se te entiende poco...
... aunque ahora entiendo menos. No te ofendaz pero sí te intereza conseguir ayuda interézate porque te entiendan. Igual me baso en tu código:
Código PHP:
if(!empty($_POST['chk_ver']))&& (!empty($_POST['chk_agregar']))
{
mysql_query("update permiso set ID_FUNCION='1',
ID_USUARIO='&id',
NOMBRE='$nombre'
WHERE ID_USUARIO='$id'"
);

mysql_query("update permiso set ID_FUNCION='2',
ID_USUARIO='&id',
NOMBRE='$nombre'
WHERE ID_USUARIO='$id'"
);



Lo que estás haciendo ahí es verificar que ambos checkboxes (no sé cuáles... son 2) hayan sido tíldados, entonces, sí y solo sí se cumple esa condición, se ejecutarán 2 sentencias.... pero por la naturaleza de esas sentencias creo no es lo que quieres hacer... ... Creo que lo que buscas es manejar condicionales separadas; un if() por cada checkbox como te lo mostré inicialmente...

Para no perder la costumbre, reitero lo del tutorial.

Todo en buen son. Paz!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 20:07.