Como rellenar un listbox con php

Quiero comentar que apenas estoy entrando al lenguaje de php y estoy construyendo un sitio, en cual tiene un formulario y dentro de ese formulario tengo algunos combo box, como por ejemplo uno que se llama "cmbestados" que sirve para que el usuario seleccione el estado donde se ubica su ciudad, otro que se llama "cmbmateria" y también esta cargado con una lista de materias posibles, etc etc.

Mi duda es la siguiente:

Cuando presiono el botón "enviar" y falto algún dato por llenar entonces si el usuario ya había hecho su selección de algún combo, esta selección se pierde.

Como puedo hacer para que el combo respete la selección que había hecho el usuario, es decir que si ya había escogido por ejemplo "Sonora" en los estados, que el combo se ponga en "Sonora" y no que se vaya de nuevo a la primera opción, ¿en este caso "Aguas calientes"?

Y también como puedo con el valor de una variable, como puedo dejar al combo seleccionando el valor que tiene la variable, es decir que en la variable ya tengo "Zacatecas" como hago para que el combo se ponga en esa selección.

1 respuesta

Respuesta
1

Lo que sucede es que cuando haces submit al formulario toda la información que está ingresada se va a la página que tienes con el action y se guarda en un array llamado $_POST o $_GET (en función de la propiedad method que hayas dejado en ese formulario).

Como la ejecución de php se hace en el lado "servidor" no en el lado cliente la información de ese formulario "salta" a una nueva página por lo que el formulario aparece vacío.

Existen dos opciones. La primera es validar el formulario con javascript (jquery tiene muy buenos complementos para validar formularios sin necesidad de hacerlos enviar al servidor).

La segunda opción es validar los datos en el array $_POST o $_GET y entregar esos resultados en la propiedad value de cada elemento de formulario.

Para poder marcar un listbox con un valor anteriormente seleccionado se realiza lo siguiente.

¿
<?php
//Se realiza la conexion a la base de datos y se guarda la conexion
$con=conexión();
//se realiza la query a la tabla con los valores
$res=mysql_query("select id, nombre from tabla",$con);
?>
<select id="cont" name="continente" onchange="load(this.value)">
<option value="">Seleccione</option>
<?php
// se recorre el array completo
while($fila=mysql_fetch_array($res)){
//pregunto si el valor viene desde post
if($fila['id']==$_POST['id']){
?>
<option value="<?php echo $fila[id]; ?>" checked><?php echo $fila[nombre]; ?></option>
<?php 
}else{ 
?>
<option value="<?php echo $fila[id]; ?>" checked><?php echo $fila[nombre]; ?></option>
<?php } ?>
</select>

De esta forma se le asigna la propiedad checked al elemento que se había seleccionado anteriormente

Muchas gracias por tu amable respuesta, pero no me funciono el código, ya que se sigue reseteando el select, me podrías decir como le puedo hacer con javascript y si es que le afecta en algo???

Saludos y muchas gracias por todo.

Yo personalmente uso <a>http://jqueryvalidation.org/</a>

Los demo están acá

<a>http://jqueryvalidation.org/files/demo/</a>

El ejemplo de implementación está acá

<a>http://jqueryvalidation.org/documentation/</a>

Ojo! Funciona con jquery, tienes que entender e instalar esta librería previamente.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas