Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Mantener valor seleccionado en un option desde una consulta mysql

Estas en el tema de Mantener valor seleccionado en un option desde una consulta mysql en el foro de PHP en Foros del Web. Hola. Estoy intentando mantener seleccionado el valor de un option select dentro de un formulario en el que envío datos pero que si tiene algún ...
  #1 (permalink)  
Antiguo 17/03/2015, 06:34
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 8 meses
Puntos: 65
Mantener valor seleccionado en un option desde una consulta mysql

Hola.

Estoy intentando mantener seleccionado el valor de un option select dentro de un formulario en el que envío datos pero que si tiene algún campo vacío o incorrecto no se envía y que mantenta los campos rellenos hasta el momento.

Si lo hago como edición lo logro sin problema ya que solo tengo que comparar el id_etiqueta de la tabla noticias que muestra el formulario con el id_etiqueta de la tabla etiqueta y listo, pero claro al enviar aún no tiene el id_etiqueta y no logro conseguirlo.

Lo intento de esta manera pero al final siempre salta al último valor y lo marca como seleccionado.

Código PHP:
Ver original
  1. <select name="id_etiqueta">
  2.                         <!-- <option value="1">Música</option> -->
  3.                         <?php
  4.                         //Busco todas las etiquetas en la tabla etiquetas para mostrar en el select                    
  5.                         $c_etiqueta_n = "Select id_etiqueta from etiquetas";                       
  6.                         $r_etiqueta_n = mysql_query($c_etiqueta_n);
  7.                         echo "<option name=\"\" value=\"\">Elija una etiqueta</option>";
  8.                         //Mientras que lea las id_etiqueta de la tabla etiqueta
  9.                         while($fila_etiqueta=mysql_fetch_array($r_etiqueta_n))
  10.                         {
  11.                             echo "<option ";
  12.                             //Si el id_etiqueta existe y no es igual a vacio.                                              
  13.                             if (isset($_POST["id_etiqueta"]) && ($_POST["id_etiqueta"] != "")) {
  14.                                 //$fila_etiqueta["id_etiqueta"])
  15.                                 echo " selected";
  16.                             }
  17.                             //Muestro el valor del id_etiqueta de la tabla etiqueta y el nombre de la etiqueta de la tabla etiqueta recibido desde la función recibir_etiqueta.                        
  18.                             echo " value=\"".$fila_etiqueta["id_etiqueta"]."\">".recibir_etiqueta($fila_etiqueta["id_etiqueta"])."</option>";
  19.                         }
  20.                         mysql_free_result($r_etiqueta_n);
  21.                         ?>
  22.                     </select>

¿Cómo podría arregrarlo?
  #2 (permalink)  
Antiguo 17/03/2015, 08:31
 
Fecha de Ingreso: marzo-2015
Ubicación: Peru
Mensajes: 34
Antigüedad: 9 años, 8 meses
Puntos: 6
Respuesta: Mantener valor seleccionado en un option desde una consulta mysql

creo que deberias hacer asi:

echo "<option ";
//Si el id_etiqueta existe y no es igual a vacio.
if ($_POST["id_etiqueta"]==$fila_etiqueta["id_etiqueta"]) {
echo " selected";
}

echo " value=\"".$fila_etiqueta["id_etiqueta"]."\">".recibir_etiqueta($fila_etiqueta["id_etiqueta"])."</option>"
  #3 (permalink)  
Antiguo 17/03/2015, 09:09
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 14 años, 9 meses
Puntos: 12
Respuesta: Mantener valor seleccionado en un option desde una consulta mysql

Considerando que el metodo que usas sea POST tambien puedes usar

echo "<option ";
echo ($_POST["id_etiqueta"]==$fila_etiqueta["id_etiqueta"]) ? " selected" : "";
echo " value=\"".$fila_etiqueta["id_etiqueta"]."\">".recibir_etiqueta($fila_etiqueta["id_etiqueta"])."</option>"

que es lo mismo que jluishuaman te recomienda pero usando condiciones ternarias.

Saludos
  #4 (permalink)  
Antiguo 17/03/2015, 12:36
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 8 meses
Puntos: 65
Respuesta: Mantener valor seleccionado en un option desde una consulta mysql

Cita:
Iniciado por jluishuaman Ver Mensaje
creo que deberias hacer asi:

echo "<option ";
//Si el id_etiqueta existe y no es igual a vacio.
if ($_POST["id_etiqueta"]==$fila_etiqueta["id_etiqueta"]) {
echo " selected";
}

echo " value=\"".$fila_etiqueta["id_etiqueta"]."\">".recibir_etiqueta($fila_etiqueta["id_etiqueta"])."</option>"
Hola jluishuaman, lo he probado añadiendo un isset a tu ejemplo y listo ya que al cargar la página la primera vez me daba un indice no definido de id_etiqueta:

Código PHP:
Ver original
  1. <select name="id_etiqueta">
  2.                         <!-- <option value="1">Música</option> -->
  3.                         <?php
  4.                         //Busco todas las etiquetas en la tabla etiquetas para mostrar en el select                    
  5.                         $c_etiqueta_n = "Select id_etiqueta from etiquetas";                       
  6.                         $r_etiqueta_n = mysql_query($c_etiqueta_n);
  7.                         echo "<option name=\"\" value=\"\">Elija una etiqueta</option>";
  8.                         //Mientras que lea las id_etiqueta de la tabla etiqueta
  9.                         while($fila_etiqueta=mysql_fetch_array($r_etiqueta_n))
  10.                         {
  11.                             echo "<option ";
  12.                             //Si id_etiqueta existe                    
  13.                             if(isset($_POST["id_etiqueta"])){
  14.                                 //Si id_etiqueta es igual a id_etiqueta
  15.                                 if ($_POST["id_etiqueta"] == $fila_etiqueta["id_etiqueta"]) {
  16.                                     echo " selected";
  17.                                 }
  18.                             }
  19.                             //Muestro el valor del id_etiqueta de la tabla etiqueta y el nombre de la etiqueta de la tabla etiqueta recibido desde la función recibir_etiqueta.                        
  20.                             echo " value=\"".$fila_etiqueta["id_etiqueta"]."\">".recibir_etiqueta($fila_etiqueta["id_etiqueta"])."</option>";                                      
  21.                         }
  22.                         mysql_free_result($r_etiqueta_n);
  23.                         ?>
  24.                     </select>


Cita:
Iniciado por wilmer30 Ver Mensaje
Considerando que el metodo que usas sea POST tambien puedes usar

echo "<option ";
echo ($_POST["id_etiqueta"]==$fila_etiqueta["id_etiqueta"]) ? " selected" : "";
echo " value=\"".$fila_etiqueta["id_etiqueta"]."\">".recibir_etiqueta($fila_etiqueta["id_etiqueta"])."</option>"

que es lo mismo que jluishuaman te recomienda pero usando condiciones ternarias.

Saludos
Hola wilmer30, tu ejemplo me va perfectamente aunque nunca había escuchado o leído lo de condiciones ternarias, ¿qué es exactamente?

Código PHP:
Ver original
  1. <select name="id_etiqueta">
  2.                         <!-- <option value="1">Música</option> -->
  3.                         <?php
  4.                         //Busco todas las etiquetas en la tabla etiquetas para mostrar en el select                    
  5.                         $c_etiqueta_n = "Select id_etiqueta from etiquetas";                       
  6.                         $r_etiqueta_n = mysql_query($c_etiqueta_n);
  7.                         echo "<option name=\"\" value=\"\">Elija una etiqueta</option>";
  8.                         //Mientras que lea las id_etiqueta de la tabla etiqueta
  9.                         while($fila_etiqueta=mysql_fetch_array($r_etiqueta_n))
  10.                         {                          
  11.                             echo "<option ";
  12.                             echo ($_POST["id_etiqueta"]==$fila_etiqueta["id_etiqueta"]) ? " selected" : "";
  13.                             echo " value=\"".$fila_etiqueta["id_etiqueta"]."\">".recibir_etiqueta($fila_etiqueta["id_etiqueta"])."</option>";                                      
  14.                         }
  15.                         mysql_free_result($r_etiqueta_n);
  16.                         ?>
  17.                     </select>


Muchas gracias a ambos por la ayuda.

Etiquetas: formulario, mysql, option, seleccionado, select, sql, tabla, valor
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:26.