Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/03/2015, 12:36
Avatar de kahlito
kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 9 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.