Foros del Web » Programando para Internet » PHP »

Problemas al querer mantener el valor de un select

Estas en el tema de Problemas al querer mantener el valor de un select en el foro de PHP en Foros del Web. Amig@s, tengo un problema y ya he visto las FAQ's y he googleado, no sé qué estoy haciendo mal, pero al querer modificar un registro ...
  #1 (permalink)  
Antiguo 27/04/2012, 09:41
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Pregunta Problemas al querer mantener el valor de un select

Amig@s, tengo un problema y ya he visto las FAQ's y he googleado, no sé qué estoy haciendo mal, pero al querer modificar un registro de mi base de datos, me muestra el último ROL de usuario.
Este es mi código:
Código PHP:
Ver original
  1. <?php
  2.                 $tablaroles = mysql_query("SELECT * FROM roles");
  3.                 ?>
  4.                 <select name="id_roles"  class="select" id="roles">
  5.                      <OPTION>-- Seleccione --</OPTION>
  6.                       <?php
  7.                            while ($roles = mysql_fetch_array($tablaroles))
  8.                             {
  9.                               if ($id_rol == $roles['id_rol'])
  10.                               ?>
  11.                      <OPTION selected='selected' VALUE='<?=$roles['id_rol']; ?>'><?php echo $roles['nombre']; ?></OPTION>                  
  12.                           <?php
  13.                              }
  14.                          ?>
  15.  
  16.             <?php
  17.             mysql_free_result($tablaroles);
  18.         ?>
  19.   </select>
Tengo una de usuarios, que paso por ID los datos a un FORM, pero si el usuario que selecciono tiene ROL 1, al hacer el clic en el form me muestra el último ID.
Una ayuda porfavor amig@s

Swab
  #2 (permalink)  
Antiguo 27/04/2012, 09:44
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Problemas al querer mantener el valor de un select

como recoges los valores y haces la siguiente consulta??
__________________
Tu álbum de cromos online!!
  #3 (permalink)  
Antiguo 27/04/2012, 09:56
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Hola santris, los valores los tomo así:
Código PHP:
Ver original
  1. $id_rol    = $_POST["id_rol"];

los demás datos de igual manera, pasan, me muestra todos los datos y no teno problema al realizar el UPDATE.
tengo una de ususarios que tiene como clave foranea id_rol.
Después como ves arriba comparo el valor que me pasó es el 1 lo comparo en el if.
Saludos
  #4 (permalink)  
Antiguo 27/04/2012, 10:09
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Problemas al querer mantener el valor de un select

Cita:
Iniciado por Swab Ver Mensaje
Hola santris, los valores los tomo así:
Código PHP:
Ver original
  1. $id_rol    = $_POST["id_rol"];
Cita:
<select name="id_roles"
el select se llama id_roles no id_rol
__________________
Tu álbum de cromos online!!
  #5 (permalink)  
Antiguo 27/04/2012, 10:29
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Amigo santris, he probado tomando el name del select, pero igual me muestra el último ID rol, tengo 6 valores de ROL y me muestra siempre el último, sin importar si los usuarios son 1, 2, 3, etc...
He buscado en las FAQ's, en google, no tienes un ejemplo que funcione que me puedas mostrar?, te lo agradecería.

Swab
  #6 (permalink)  
Antiguo 27/04/2012, 10:38
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Problemas al querer mantener el valor de un select

cuando lo veas ya en tu navegador , dale ver codigo fuente en el mismo y ve que es lo que te esta imprimiendo , probablemente estes poniendole selected a todos los options
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #7 (permalink)  
Antiguo 27/04/2012, 10:43
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Efectivamente amigo, vi y me salen todos como dices seleccionados... me estoy mareando, como podría ordenar eso?, cómo quedaría? ...
Mi código está al incio, ayuda porfavor.

Swab
  #8 (permalink)  
Antiguo 27/04/2012, 10:47
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Problemas al querer mantener el valor de un select

tienes un if pero no un else , que el else te dibuje el option sin estar seleccionado
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #9 (permalink)  
Antiguo 27/04/2012, 11:05
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Hago el else y me sigue pasando lo mismo, osea ahora entra en el else... no me muestra seleccionado nada.
pf
:(
  #10 (permalink)  
Antiguo 27/04/2012, 11:08
 
Fecha de Ingreso: enero-2011
Ubicación: DF
Mensajes: 898
Antigüedad: 13 años, 2 meses
Puntos: 155
Respuesta: Problemas al querer mantener el valor de un select

a ver pon el code por que quien sabe que fue lo que paso ahi XD
__________________
No me interesan ni las gracias ni los karmas , pero si que se genere conocimiento, si se dio con la respuesta por favor confirmalo
  #11 (permalink)  
Antiguo 27/04/2012, 11:13
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Código PHP:
Ver original
  1. <?php
  2. error_reporting(E_ALL & ~E_NOTICE);
  3. require("../config/conexion.php");
  4. require("../config/funciones.php");
  5.  
  6. $iduser  = getParam($_GET["id"], "-1");
  7. $accion    = getParam($_GET["accion"], "");
  8.  
  9. if ($accion == "editar") {
  10.     $iduser    = sqlValue($_POST["id"], "int");
  11.     $nombre    = sqlValue($_POST["nombre"], "text");
  12.     $apellido  = sqlValue($_POST["apellido"], "text");
  13.     $usuario   = sqlValue($_POST["usuario"], "text");
  14.     $password  = sqlValue($_POST["password"], "text");
  15.     $id_role   = sqlValue($_POST["id_roles"], "int");
  16.  
  17.    
  18.     $sql = "UPDATE usuarios SET nombre=".$nombre.", apellido=".$apellido.", user=".$usuario.", password=".$password.",id_rol=".$id_role."
  19.             WHERE id=".$iduser."";
  20.     mysql_query($sql, $conexion);
  21.     header("location: list_edit_usuarios.php");
  22. }
  23. $sql = "SELECT * FROM usuarios
  24.                  WHERE id = ".sqlValue($iduser, "int");
  25. $queUser = mysql_query($sql, $conexion);
  26. $rsUser = mysql_fetch_assoc($queUser);
  27. $total = mysql_num_rows($queUser);
  28. if ($total == 0) {
  29.     header("location: list_edit_usuarios.php");
  30.     exit;
  31. }
  32. ?>
  33. <html>
  34. <head>
  35. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
  36. <script src="../js/jquery-1.3.1.min.js" type="text/javascript"></script>
  37. <script src="../js/jquery.validate.min.js" type="text/javascript"></script>
  38. <script type="text/javascript">
  39. $(document).ready(function() {
  40.     $("#editFrm").validate();
  41. });
  42. </script>
  43. <link href="../css/styles.css" rel="stylesheet" type="text/css" />
  44. </head>
  45. <body>
  46. <fieldset id="form">
  47. <fieldset id="form">
  48. <legend>Editar Usuario</legend>
  49. <form method="post" id="editFrm" name="editFrm" action="edit_usuarios.php?accion=editar">
  50. <ol>
  51.         <li>
  52.     <label for="nombre">Nombre</label>
  53.     <input type="text" id="nombre" name="nombre" class="required" value="<?php echo $rsUser["nombre"]; ?>" />
  54. </li><li>
  55.     <label for="apellido">Apellido</label>
  56.     <input type="text" id="apellido" name="apellido" value="<?php echo $rsUser["apellido"]; ?>" />
  57. </li><li>
  58.     <label for="usuario">Usuario</label>
  59.     <input type="text" id="usuario" name="usuario" value="<?php echo $rsUser["user"]; ?>" />
  60. </li><li>
  61.     <label for="password">Password</label>
  62.     <input type="text" id="password" name="password" value="<?php echo $rsUser["password"]; ?>" />
  63. </li>
  64.               <li>
  65.             <label>Privilegios</label>
  66.             <?php
  67.                 $tablaroles = mysql_query("SELECT * FROM roles");
  68.                 ?>
  69.                 <select name="id_roles"  class="select" id="id_roles">
  70.                      <OPTION>-- Seleccione --</OPTION>
  71.                       <?php
  72.                            while ($roles = mysql_fetch_array($tablaroles))
  73.                             {
  74.                               if ($id_roles == $roles['id_rol']){
  75.                               ?>
  76.                              <OPTION VALUE='<?=$roles['id_rol']; ?>' selected='selected'><?php echo $roles['nombre']; ?></OPTION>                  
  77.                             <?php
  78.                             }else{
  79.                             ?>
  80.                             <OPTION VALUE='<?=$roles['id_rol']; ?>'><?php echo $roles['nombre']; ?></OPTION>                   
  81.                             <?php
  82.                             }
  83.                             ?>
  84.                           <?php
  85.                              }
  86.                          ?>
  87.  
  88.             <?php
  89.             mysql_free_result($tablaroles);
  90.         ?>
  91.   </select>
  92.              </li>
  93.     <p align="center"><input type="submit" class="btn" value="Actualizar">&nbsp;&nbsp;
  94.           <input type="reset" name="limpiar" value="Limpiar" class="btn" /></p>
  95. <p align="center"><a href="JavaScript:window.close()"><input type="button" value="Cerrar" class="btn"></a></p>
  96.     <input type="hidden" id="id" name="id" value="<?php echo $rsUser["id"]; ?>" />
  97.    </ol>
  98.     </form>
  99. </fieldset>
  100. </fieldset>
  101. </body>
  102. </html>

Ahí está todo el código...
Arriba hago la consullta a usuarios y usuarios tiene como FK la PK de roles, el id_rol, que es el que actualizo después.
Abajo antes del select hago la consulta a roles para que me los liste todos.
Saludos y garcias
  #12 (permalink)  
Antiguo 27/04/2012, 11:16
 
Fecha de Ingreso: diciembre-2008
Mensajes: 8
Antigüedad: 15 años, 4 meses
Puntos: 1
Respuesta: Problemas al querer mantener el valor de un select

es porque en tu línea:

Cita:
<OPTION selected='selected' VALUE='<?=$roles['id_rol']; ?>'><?php echo $roles['nombre']; ?></OPTION>
estas poniendo el selected='selected' a todos los registros que estás recorriendo, tienes que comparar el registro que quieres mostrar seleccionado, osea hacer un if al $roles['id_rol'] con $id_rol


saludos
  #13 (permalink)  
Antiguo 27/04/2012, 11:22
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Creo que por ahí no va el camino amigo... gracias de todos modos, se supone que hay un if y luego un else. Y compara con el $id_roles que es el nombre de mi select, no?, por qué sería $id_rol?.

Saludos
  #14 (permalink)  
Antiguo 27/04/2012, 11:40
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Problemas al querer mantener el valor de un select

Primero abogo por escribir código en minúsculas, ustedes vieron a Machado escribir en mayusculas salvo en ocasiones muy concretas???

Luego por simplificar y estructurar bien el cógigo:

Código PHP:
<select name="id_roles"  class="select" id="id_roles">
    <option>-- Seleccione --</option>
    <?php
    
while ($roles mysql_fetch_array($tablaroles)){
        if (
$id_roles == $roles['id_rol'])$seleccionado "selected='selected'"; else $seleccionado '';
        
?>
            <option value='<?php echo $roles['id_rol']; ?><?php echo $seleccionado;?> ><?php echo $roles['nombre']; ?></option>                  
        <?php
    
}
    
mysql_free_result($tablaroles);
    
?>
</select>
y solventado este problema pasamos a otra cosa...
__________________
Tu álbum de cromos online!!
  #15 (permalink)  
Antiguo 27/04/2012, 11:52
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Gracias por toda la ayuda santris, ahora no me selecciona nada, en fin.
Dejemos el tema hasta acá creo, ya es mucha pérdida de tiempo, no crees?, con lo que me muestras pasa directamente al else... me muestra -- Seleccione --
Gracias a todos

Swab
  #16 (permalink)  
Antiguo 27/04/2012, 12:22
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Problemas al querer mantener el valor de un select

Cita:
Iniciado por Swab Ver Mensaje
Gracias por toda la ayuda santris, ahora no me selecciona nada, en fin.
Dejemos el tema hasta acá creo, ya es mucha pérdida de tiempo, no crees?, con lo que me muestras pasa directamente al else... me muestra -- Seleccione --
Gracias a todos
Swab
Hombre!! no quise decir que sea perdida de tiempo; te digo que un código es más legible si está bien estructurado y si pasa al else directamente será porque la condición no se cumple; antes era todo de un color y ahora es de otro, simplemente!!

prueba ha hacer esto fuera del select:

Código PHP:
echo $id_roles."=".$roles['id_rol']; 
si se cumple la codición el option debería de aparecer seleccionado, a no ser que haya cometid algún error de picaje, que es posible..

y reitero, para mi no es perdida de tiempo

Edito: aunque veo que la variable es $id_role no id_roles
__________________
Tu álbum de cromos online!!
  #17 (permalink)  
Antiguo 27/04/2012, 12:32
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Código PHP:
Ver original
  1. <?php
  2.                 $tablaroles = mysql_query("SELECT * FROM roles");
  3.                 ?>
  4.                 <select name="id_roles"  class="select" id="id_roles">
  5.     <option>-- Seleccione --</option>
  6.     <?php
  7.     while ($roles = mysql_fetch_array($tablaroles)){
  8.         if ($id_roles == $roles['id_rol'])$seleccionado = "selected='selected'"; else $seleccionado = '';
  9.         ?>
  10.             <option value='<?php echo $roles['id_rol']; ?>' <?php echo $seleccionado;?> ><?php echo $roles['nombre']; ?></option>                  
  11.         <?php
  12.     }
  13.     mysql_free_result($tablaroles);
  14.     ?>
  15. </select>
  16.   <?php
  17.   echo $id_roles."=".$roles['id_rol'];  
  18.   ?>

Quedando de esa manera el código, pasa al else... :s
Gracias santris.
PD: no existirá un ejemplo funcionando que conozcas...
  #18 (permalink)  
Antiguo 27/04/2012, 12:43
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Problemas al querer mantener el valor de un select

edité mi post anterior porque ví que estabas comparando una variable que no existe:

Cita:
Edito: aunque veo que la variable es $id_role no id_roles
lo de:

Código PHP:
echo $id_roles."=".$roles['id_rol']; 
es simplemente para comprobar, puedes quitarlo no es necesario.

remplaza esta linea de código:
Código PHP:
if ($id_roles == $roles['id_rol'])$seleccionado "selected='selected'"; else $seleccionado ''
por esta:
Código PHP:
if ($id_role == $roles['id_rol'])$seleccionado "selected='selected'"; else $seleccionado ''
__________________
Tu álbum de cromos online!!
  #19 (permalink)  
Antiguo 27/04/2012, 12:50
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

sabes que ya lo había probado eso, y nada, jajajaja... es muy extraño... no está entrando al if, donde comparo, por alguna extraña razón que no me doy cuenta, esto me tiene de ayer así, eliminé todo el código y comencé de nuevo, pero llego al mismo problema.
Ya no sé que más hacer, he buscado en google algo y no encuentro nada como para poder adaptarlo y ya... no puedo estar tanto tiempo en esto, estoy haciendo mi proyecto de tesis, me queda como 25 días y esta tontería que me tiene acá es una pequeña parte.
ufff....

Saludos y nuevamente gracias
  #20 (permalink)  
Antiguo 27/04/2012, 13:00
Avatar de santris  
Fecha de Ingreso: agosto-2009
Ubicación: Sant Feliu de Llobregat
Mensajes: 955
Antigüedad: 14 años, 8 meses
Puntos: 66
Respuesta: Problemas al querer mantener el valor de un select

solo te puedo decir que depures el código delimitándolo, reporta el valor de cada variable hasta encontrar donde está el error.

echo $_POST['lo que sea '] etc....
__________________
Tu álbum de cromos online!!
  #21 (permalink)  
Antiguo 27/04/2012, 13:15
Avatar de Swab  
Fecha de Ingreso: agosto-2008
Ubicación: Chiloé
Mensajes: 92
Antigüedad: 15 años, 8 meses
Puntos: 5
Respuesta: Problemas al querer mantener el valor de un select

Gracias Santris,
muchas gracias por todo el apoyo

Swab

Etiquetas: mysql, registro, select, tabla, usuarios
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 01:41.