Volcar datos guardados en un combo.

Tengo un formulario con varios combos con una lista de valores procedente de una BD. Guardo el valor de estos combos en mi BD. Hasta aquí perfecto.
El problema surge cuando quiero volcar estos datos en el mismo formulario o uno similar. Es decir quiero que me aparezcan los combos con la lista de valores pero seleccionado el que he guardado, por si el usuario quiere modificarlo.
Lo único que he conseguido es que en el combo aparezca sólo el guardado, pero claro modificando la Where de la select.

1 Respuesta

Respuesta
1
Sin saber más sobre la estructura de la base de datos ni sobre las combos, se hace difícil contestar acertadamente.
Pero bueno, supongamos que tienes los valores de las combos en alguna tabla. Entonces a mi entender deberías hacer una SELECT para cada combo para recuperar esos valores y poder crear así las listas.
Además te hará falta otra SELECT para saber lo que el usuario seleccionó y dejar esas opciones como marcadas por defecto en las listas.
Hola David,
lo primero gracias por contestar. Voy a tratar de explicarme mejor aunque es más o menos lo que tu dices.
Tengo varios combos cuyos datos los obtengo con un select de una tabla. El usuario elige el valor en cada combo y guardo estos datos en otra tabla.
El siguiente paso es el que el usuario pueda modificar estos datos. Para ello sobre el mismo formulario o uno similar, lleno los combos igual que en el punto anterior con los datos de la tabla. Recupero el valor guardado de la otra tabla y quiero que aparezca este valor guardado en el combo de entre todos de la lista, lo que tu bien llamas por defecto.
Este es mi problema no se indicar en un combo un valor por defecto.
Este es código que utilizo para llenar los combos. He tratado de indicar el valor guardado en <option value= selected> pero nada.
<select name='Sustituto1' id='Sustituto1' value="Sustituto1">
<?
$resultado=mysql_query("SELECT CONCAT(Apellido1Sustituto, ' ', Apellido2Sustituto, ', ', NombreSustituto, ' (', NSustituto, ')') AS Nombrecompleto, NSustituto FROM Sustitutos ORDER BY Nombrecompleto DESC",$conexion);
while (list($Sustituto1)=mysql_fetch_array($resultado))
{
echo "<option value='$Sustituto1' selected>$Sustituto1</option>";
}?>
</select>
Pues ya lo tienes casi todo hecho. Pongamos que ya has averiguado cual es la opción que el usuario seleccionó y que la tienes en una variable, por ejemplo $defecto. Entonces:
while (list($Sustituto1)=mysql_fetch_array($resultado))
{
echo "<option value='$Sustituto1' ";
if ($Sustituto1 == $defecto)
    echo " selected";
echo ">$Sustituto1</option>";
}
Así sólo pones 'selected' en la opción que coincida con el valor por defecto.
Hola, creo que se por donde vas, pero no funciona, ya había probado algo parecido. Sólo aparece el valor por defecto, (el guardado en la tabla), no el resto de la lista, por lo que no podría modificar este combo.
Creo que tal vez no me haya explicado bien, lo que quiero es que aparezcan todos los valores en el combo, pero seleccionado el guardado.
while (list($Sustituto1)=mysql_fetch_array($resultado)) {
echo "<option value='$Sustituto1' ";
   if ($Sustituto1 == $defecto){
  echo " selected>$Sustituto1</option>";
  }
}
Ya te había entendido. El script funciona correctamente si lo que tienes en $resultado es el resultado de la SELECT que selecciona todos los campos de la combo y en $defecto tienes el valor seleccionado por el usuario.
Como no sé la estructura de tus tablas, no te puedo decir más. Sólo haz que $defecto tenga ese valor y que en $resultado estén todos los valores posibles.
Hola David, conseguido.
He modificado tu código y funciona. Básicamente he eliminado el value en el <option></option>y evalúo el campo con "If" y "else" según los muestra. De esta manera no repite el valor por defecto.
Dejo el código por si a alguien le sirve.
echo "<select name='campo1' id='campo1' value='campo1'>";
while (list($campo1)=mysql_fetch_array($resultado)) {
if ($campo1 == $defecto){
echo "<option selected>$defecto</option>";
}else{
echo "<option>$campo1</option>";}
}
echo "</select>";
Me alegro de que ya funcione.
Por favor, cierra la pregunta valorándola, sino permanece abierta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas