![Antiguo](http://static.forosdelweb.com/fdwtheme/images/statusicon/post_old.gif)
30/09/2006, 21:57
|
| | Fecha de Ingreso: septiembre-2006
Mensajes: 196
Antigüedad: 18 años, 4 meses Puntos: 0 | |
Combo k se llena segun otro combo casi listo hola a todos, buscando en este foro encontre este scprit muy weno para llenar un comobo a partir de otro. pero tiene un problema al escojer el primer combo en vez de cargarse el segundo con algun dato, los 2 combos vuelven a kedar como selecione..., pense k podia ser el PHP_SELF k cargaba nuevamente los combos y no dejaba ver los valores, pero lo sake y seguia =. ojla alguien lo revise y pueda encontrar la solucion para que todos lo usemos
saLU2
combos.php Código PHP: <?
// datos de conexion a la BD.
$servidor ="localhost"; // host
$usuario ="";
$clave ="";
$basedatos =""; // Indicar una Base de datos.
// si se ha pulsao el boton enviar ($enviado) se procesa el formulario ..
// Sino, se continua con el formulario y los nuevos valores de los Select ..
// OJO si se tienen mas varibles (mas <input> ) se van a perder sus valores a no ser
// que los obtengamos y se les de como valor inicial en el value= de cada uno segun corresponda.
if (!empty($_POST['enviado'])){
// Procesar el formulario ...
echo "Procesando formulario:<br>";
echo "Recibido id_tabla_padre: ".$_POST['id_padre']."<br>";
echo "Recibido id_tabla_hija: ".$_POST['id_hija'];
} else {
// Conexión a la BD
$conexion = mysql_connect($servidor, $usuario, $clave) or die(mysql_error());
mysql_select_db($basedatos, $conexion) or die(mysql_error());
// Obtener el $id_padre del envio a si mismo del formulario ..
$id_padre=$_POST['id_padre'];
// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n";
// Formar Selec "Padre".
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";
echo "<option value=\"\"> Seleccione un Item </option>\n";
$SQLconsulta_padre="SELECT * FROM tabla_padre";
$consulta_padre = mysql_query($SQLconsulta_padre,$conexion) or die(mysql_error());
While ($registro_padre=mysql_fetch_assoc($consulta_padre)){
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
// Se selecciona en consecuencia (selected) la opción elegida.
if ($id_padre == $registro_padre['id']){
echo "<option value=\"".$registro_padre['id']."\" selected>".$registro_padre['item_texto']."</option>\n";
} else {
echo "<option value=\"".$registro_padre['id']."\">".$registro_padre['item_texto']."</option>\n";
}
}
echo "</select>\n\n";
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.
// Formar Select "Hijo"
echo "<select name=\"id_hija\">\n";
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_padre)){
$SQLconsulta_hija="SELECT * FROM tabla_hija WHERE id_padre='$id_padre'";
$consulta_hija = mysql_query($SQLconsulta_hija,$conexion) or die(mysql_error());
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
if (mysql_num_rows($consulta_hija) != 0){
While ($registro_hija=mysql_fetch_assoc($consulta_hija)){
echo "<option value=\"".$registro_hija['id']."\">".$registro_hija['item_texto']."</option>\n";
}
} else {
echo "<option value=\"\"> No hay registros para este Item </option>";
}
} else {
echo "<option value=\"\"> <-- Seleccione un Item </option>";
}
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.
echo "</select>\n\n";
echo "<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
echo "</form>\n";
}
?> TABLAS
Código:
CREATE TABLE tabla_hija (
id tinyint(3) unsigned NOT NULL auto_increment,
id_padre tinyint(3) unsigned DEFAULT '0' NOT NULL,
item_texto varchar(255) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO tabla_hija VALUES ( '1', '1', 'tabla_hija - Item grupo 1 bla bla bla');
INSERT INTO tabla_hija VALUES ( '2', '2', 'tabla_hija - grupo 2 item 1');
INSERT INTO tabla_hija VALUES ( '3', '2', 'tabla_hija - grupo 2 item 2');
INSERT INTO tabla_hija VALUES ( '4', '3', 'tabla_hija - grupo 3 item probando');
INSERT INTO tabla_hija VALUES ( '5', '1', 'tabla_hija - item grupo 1 noseq pner');
CREATE TABLE tabla_padre (
id tinyint(3) unsigned NOT NULL auto_increment,
item_texto varchar(255) NOT NULL,
PRIMARY KEY (id)
);
INSERT INTO tabla_padre VALUES ( '1', 'Grupo 1');
INSERT INTO tabla_padre VALUES ( '2', 'Grupo 2');
INSERT INTO tabla_padre VALUES ( '3', 'Grupo 3');
INSERT INTO tabla_padre VALUES ( '4', 'Grupo 4');
|