Problema con Select

Hola como estas, mira tengo esto:
<?
include 'db.php';
$sSQL="SELECT * FROM idnum";
echo "<select name=id_descrip>";
if (($rst=mysql_query($sSQL))==TRUE)
{
while ($reg=mysql_fetch_row($rst))
{
echo "<option value=$reg[0]>$reg[1]</option>";
}
}
echo "</select>";
?>
Es un menu que tengo de una base de datos, es decir me muestra los registros como ejemplo:
MARÍTIMO, AÉREO, TERRESTRE, bueno mi pregunta es la siguiente:
Ya tengo hecho una página el cual ingreso datos, supongamos que ingresé una
cotización numero 1 y en esa cotización elija la opción AÉREO, bueno al
momento de editar la cotización numero 1 me sale otra ves el menu a elegir AÉREO, MARÍTIMO etc..
Lo que quiero es que me salga directamente en el menu el registro que elegí en este caso AÉREO, porque
me sale otra ves para elegir cualquiera... ¿me explique bien?

1 Respuesta

Respuesta
1
La idea es la que te comenté antes. A la hora de crear un select, en las distintas opciones, una de ellas tiene que aparecer como SELECTED. Un ejemplo de cómo debería quedar tu menú en html es el siguiente:
<SELECT name=id_descrip>
<option value='Maritimo'> Maritimo </option>
<option value='Aereo' SELECTED> Aereo </option>
<option value='Terrestre'> Terrestre </option>
</SELECT>
Cuando seleccionas una opción y envías el comtenido a php, obtienes la variable $_POST['id_descript'] y su valor sería 'Aereo'.
En la base de datos almacenas esa opción. A la hora de volver a crear el menú tienes las opciones en una tabla y la opción seleccionada en el menú en otra tabla. Comienzas a rellenar el <select> con <option> pero en el momento que detectas que la opción que vas a poner es la misma que la que tienes seleccionada, le añades el atributo SELECTED.
Si sigues teniendo problemas ponme la base de datos con sus tablas y campos, y el valor que almacenas en cada uno.
Esa es una característica bastante agradable en un sitio web, y además es muy sencillo de hacer.
En tu ejemplo, la tabla idnum tiene MARÍTIMO, AÉREO, TERRESTRE. Y tienes otra tabla llamada por ejemplo Cotizaciones en la que almacenas ese valor que voy a llamar Medio. Por tanto, aparece la primera vez los campos para rellenar la primera cotización. Se rellena y se selecciona AÉREO. Se almacena en la base de datos, en el registro Cotización=1 y Medio=AEREO. Ahora quieres mostrar los datos de esa cotización y en el select te tiene que aparecer seleccionado el medio que está almacenado en la base de datos. El código que tendrías que poner sería:
<?
include 'db.php';
$coti = "SELECT * FROM Cotizaciones WHERE Cotizacion=1";
$datos = mysql_query($coti);
if ($datos) {
// Aqui mostrarías todos los datos de la cotización
$sSQL="SELECT * FROM idnum";
echo "<select name=id_descrip>";
if (($rst=mysql_query($sSQL))==TRUE)
{
while ($reg=mysql_fetch_row($rst))
{
if ($reg[1] == mysql_result($datos, 0, 'Medio') ) {
echo "<option value=$reg[0] SELECTED>$reg[1]</option>";
} else {
echo "<option value=$reg[0]>$reg[1]</option>";
}
}
}
echo "</select>";
}
?>
Es un poco difícil ponerte un ejemplo sin tener los campos de la base de datos, por eso me los he inventado. Pero como ves no es difícil. La clave es poner la opción SELECTED a la hora de crear el select, en la opción que coincida con la que tengas almacenada en la base de datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas