Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] selección combo box

Estas en el tema de selección combo box en el foro de PHP en Foros del Web. hola, tengo una pagina para editar registros y varios combo box en los que aparecen registros de mysql y quisiera que apareciera seleccionado el registro ...
  #1 (permalink)  
Antiguo 23/05/2014, 09:35
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
selección combo box

hola, tengo una pagina para editar registros y varios combo box en los que aparecen registros de mysql y quisiera que apareciera seleccionado el registro que tiene la persona y no el primero de la lista.

Código PHP:
Ver original
  1. <?php
  2.       $result = mysql_query("SELECT * FROM dir_adscripcion ORDER BY adscripcion ASC");
  3. ?>
  4.       Adscripcion
  5.      
  6. <select name="adscripcion" style="width: 300px;">
  7. <?php
  8. while($row = mysql_fetch_array($result)) {
  9.  
  10. $valor = $row["id_adscripcion"] ;
  11. $nom = $row["adscripcion"];
  12. echo "<option value=".$valor.">".$nom."</option>";
  13. }
  14. ?>
  15. </select>

tambien al insertar los combo box hizo que los cuadros para ingresar texto se fueran movieran a la derecha

Última edición por portal47; 23/05/2014 a las 10:22
  #2 (permalink)  
Antiguo 23/05/2014, 17:47
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: selección combo box

Necesitas agregar selected="selected" a la opción adecuada:

Código PHP:
Ver original
  1. while($row = mysql_fetch_array($result)) {
  2.     $sel = ($valor_actual == $row["id_adscripcion"]) ? ' selected="selected"' : '';
  3.     echo "<option value=\"{$row['id_adscripcion']}\"$sel>{$row['adscripcion']}</option>";
  4. }

Si tienes duda de cómo se hace la asignación de $sel busca info sobre asignación ternaria.

Por otra parte, no es necesario crear variables dentro del while, basta con saber usar correctamente las comillas para integrarlas en una cadena.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 24/05/2014, 19:30
 
Fecha de Ingreso: agosto-2013
Ubicación: Guatemala
Mensajes: 137
Antigüedad: 10 años, 8 meses
Puntos: 4
Respuesta: selección combo box

A ver si te entiendo en el formulario de edicion aparecen los datos del usuario o persona seleccionada?

bueno te daré un pequeño ejemplo de como es que hago yo

primero en mi tabla sería asi

Código MySQL:
Ver original
  1. TABLA DE USUARIOS
  2. ID | Nombre | Apellido | IDcurso |
  3. 1 | José | Campos | 1 |
  4. 2 | Miguel | Casas | 1 |
  5. 3 | Petunia | Rodas | 2 |
  6. 4 | Marisol | López | 1 |
  7.  
  8. TABLA CURSOS
  9. IDcurso | curso |
  10. 1 | Matematicas |
  11. 2 | Lenguaje |

La consulta sería
Código MySQL:
Ver original
  1. SELECT a.nombre, a.apellido, b.curso FROM usuarios a LEFT JOIN cursos b ON a.idcurso=b.idcurso WHERE a.id='$mi_variable'

Entonces para mostrar los resultados sería
Código PHP:
<?php while ($row=$sql->fetch_array()){ ?>
<input type="text" value="<?php echo $row['nombre'];?>">
<input type="text" value="<?php echo $row['apellido'];?>">
<select>
  <optgroup label="Curso Actual">
    <option value="<?php echo $row['idcurso'];?>"><?php echo $row['curso'];?></option>
  </optgroup>
  <optgroup label="Cambiar a">
    <option value="1">Matematicas</option>
    <option value="2">Lenguaje</option>
  </optgroup>
</select>
<?php ?>
si tenes una duda decime
  #4 (permalink)  
Antiguo 26/05/2014, 11:35
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: selección combo box

Cita:
Iniciado por Triby Ver Mensaje
Necesitas agregar selected="selected" a la opción adecuada:

Código PHP:
Ver original
  1. while($row = mysql_fetch_array($result)) {
  2.     $sel = ($valor_actual == $row["id_adscripcion"]) ? ' selected="selected"' : '';
  3.     echo "<option value=\"{$row['id_adscripcion']}\"$sel>{$row['adscripcion']}</option>";
  4. }

Si tienes duda de cómo se hace la asignación de $sel busca info sobre asignación ternaria.

Por otra parte, no es necesario crear variables dentro del while, basta con saber usar correctamente las comillas para integrarlas en una cadena.
lo intente pero no me aparece el elemento seleccionado, aparece el ultimo elemento de la lista

Última edición por portal47; 26/05/2014 a las 12:20
  #5 (permalink)  
Antiguo 26/05/2014, 12:41
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: selección combo box

Bueno, sin ver lo que hiciste es imposible saber qué anda mal... aunque tengo algunas teorías que me llevan a pensar que en todos los option hay un selected="selected"
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 26/05/2014, 12:42
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: selección combo box

lo intente asi:

Código PHP:
Ver original
  1. <td height="44">
  2.      
  3. <?php
  4.       $result = mysql_query("SELECT * FROM dir_titulo ORDER BY titulo ASC");
  5. ?>
  6.       Titulo:
  7.      
  8. <select name="titulo" style="width: 300px;">
  9. <?php
  10. while($row = mysql_fetch_array($result)) {
  11.  
  12. $valor = $row["id_titulo"] ;
  13. $nom = $row["titulo"];
  14. $sel = ($valor_actual == $row["id_titulo"]) ? ' selected="selected"' : '';
  15. echo "<option selected=".$sel." value=".$valor." >".$nom."</option>";
  16. }
  #7 (permalink)  
Antiguo 26/05/2014, 12:52
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: selección combo box

En html5 basta con usar selected para activar la opción, mientras que en versiones anteriores se requería selected="selected".

Desconozco qué versión de html estás trabajando, pero tener selected= en cada opción seguramente te generará problemas como el que tienes ahora.

Elimina lo que está en rojo y funcionará:

echo "<option selected=".$sel." value=".$valor." >".$nom."</option>";
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 26/05/2014, 12:59
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: selección combo box

ahora me selecciona el primer elemento
  #9 (permalink)  
Antiguo 26/05/2014, 13:28
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: selección combo box

Ok, ahora dime, dónde defines $valor_actual, porque se supone que debe contener la id del option a marcar como seleccionado.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 26/05/2014, 13:36
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: selección combo box

no me di cuenta, asi estaria bien?, porque tambien aparece el ultimo
Código PHP:
Ver original
  1. <?php
  2. while($row = mysql_fetch_array($result)) {
  3.  
  4. $valor = $row["id_titulo"] ;
  5. $nom = $row["titulo"];
  6. $sel = ($valor == $row["id_titulo"]) ? ' selected="selected"' : '';
  7. echo "<option ".$sel." value=".$valor." >".$nom."</option>";
  8. }
  9. ?>
  #11 (permalink)  
Antiguo 26/05/2014, 15:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: selección combo box

No, amigo, así como lo pusiste, todos los option van a marcarse como seleccionados; deberías tener algo como:

Código:
// 1- Lees el registro actual y de ahí obtienes el valor inicial
$elemento_actual = mysql_fetch_assoc($recurso_de_consulta);

// 2- Asignas la ID a la variable que usarás en la comparación
$valor_actual = $elemento_actual['id_titulo'];

// 3- Haces la consulta para leer todos los títulos e inicias el <select....>

// 4- Ejecutas el while
while($row = mysql_fetch_assoc($result)) {
        $sel = ($valor_actual == $row["id_adscripcion"]) ? ' selected="selected"' : '';
        // Aquí el resto de tu código
}

// 5- Fin del select: </select>
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 27/05/2014, 11:10
 
Fecha de Ingreso: abril-2014
Mensajes: 141
Antigüedad: 10 años
Puntos: 1
Respuesta: selección combo box

por fin quedo, muchas gracias

Código PHP:
Ver original
  1. <td><input size="70" name='id_titulo'  type='hidden' maxlength='90' value="<?php echo $id_titulo; ?>"></td>
  2.         </tr>
  3. <td height="44">
  4.      
  5. <?php
  6.       $result = mysql_query("SELECT * FROM dir_titulo ORDER BY titulo ASC");
  7.      
  8.  
  9. ?>
  10.     Titulo:
  11.      
  12. <select name="titulo" style="width: 300px;">
  13. <?php
  14. while($row = mysql_fetch_array($result)) {
  15.  
  16. $valor = $row["id_titulo"] ;
  17. $nom = $row["titulo"];
  18. $sel = ($id_titulo == $row["id_titulo"]) ? ' selected="selected"' : '';
  19. echo "<option ".$sel." value=".$valor." >".$nom."</option>";
  20. }
  21. ?>
  22. </select>
  23.  
  24. </td>

Última edición por portal47; 27/05/2014 a las 11:18

Etiquetas: box, combo, html
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 06:28.