Como realizar select dependientes en php

Que pena la molestia, tengo el siguiente código :

<?php include("seguridad.php");?>
<?php
$server = 'localhost'; //servidor
$username = 'root'; //usuario de la base de datos
$password = 'admin123'; //password del usuario de la base de datos
$database = 'parqueadero'; //nombre de la base de datos
$conexion = @new mysqli($server, $username, $password, $database);

if ($conexion->connect_error) //verificamos si hubo un error al conectar, recuerden que pusimos el @ para evitarlo
{
die('Error de conexión: ' . $conexion->connect_error); //si hay un error termina la aplicación y mostramos el error
}

$sql="SELECT * from clientes where estadocl = 2";
$result = $conexion->query($sql); //usamos la conexion para dar un resultado a la variable
if ($result->num_rows > 0) //si la variable tiene al menos 1 fila entonces seguimos con el codigo
{
$combobit="";
while ($row = $result->fetch_array(MYSQLI_ASSOC))
{
$combobit .=" <option value='".$row['nombre']."'>".$row['nombre']."</option>"; //concatenamos el los options para luego ser insertado en el HTML
$identificador = $row['ident'];
}
}
else
{
echo "No hubo resultados";
}

//echo "$identificador";

$conexion->close(); //cerramos la conexión
?>
<html>
<head>
<title>Llenar un Combobox/Select con registros de una tabla</title>
<link href="contactos.css" rel="stylesheet" type="text/css" />
<link href="/parqueo/favicon.ico" type="image/x-icon" rel="shortcut icon" />
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen"/>
<link rel="stylesheet" href="css/body.css" type="text/css" media="screen"/>
</head>
<script src="js/scripts.js" type="text/javascript"> </script>

<script>
</script>
<body>

<select name="nombrecl" id="nombrecl" onchange="cargatext();">
<?php echo $combobit;?>
</select>
</body>
</html>

Este código lo que hace es cargar los datos de en un combo, ahora lo que yo quiero hacer es que cuando yo seleccione el dato del combo se me cargue otro campo de la tabla en un text, como lo podría hacer.

1 respuesta

Respuesta
1

Ya lo he solucionado, el siguiente código consulta la base de datos y en un combo extrae el nombre, de acuerdo al nombre seleccionado en el combo extrae un id en un campo texto, el código es el siguiente:

</html>
<head>
<title>Ingreso tablas</title>
<META name='robot' content='noindex, nofollow'>
<link href="/parqueo/favicon.ico" type="image/x-icon" rel="shortcut icon" />
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen"/>
<link rel="stylesheet" href="css/body.css" type="text/css" media="screen"/>

</head>
<script src="js/scripts.js" type="text/javascript"> </script>
<body>
<a class="titu3">Ingreso Tablas</a>
<style>
body{
/*background:#333 url(bg2.jpg) repeat top left;*/
background:#333 url(bg3.jpg) repeat top left;
font-family:Arial;
}
</style>

<?php
include("seguridad.php");
// datos de conexión a la BD.
$servidor ="localhost"; // host
$usuario ="root";
$clave ="admin123";
$basedatos ="parqueadero"; // Indicar una Base de datos.
// si se ha pulsado el botón enviar ($enviado) se procesa el formulario ...
// Sino, se continua con el formulario y los nuevos valores de los Select ...
// OJO si se tienen más varibles (más <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 según 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());
if (isset($_POST['id_padre'])){
// Obtener el $id_padre del envío a sí mismo del formulario cuando selccionamos el nombre la variable id_padre secrea por lo cual se evalúa
$id_padre=$_POST['id_padre'];

}
// Inicio Formulario .. PHP_SELF enviamos a sí mismo (a este script).
echo "<form method=\"POST\">\n\n";
// Formar Selec "Padre".
echo "<a class='texto2' >Nombre: </a>";
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\" class='combo2' >\n";
echo "<option value=\"\"> Seleccione Nombre </option>\n";
$SQLconsulta_padre="SELECT * FROM clientes where estadocl = 2 and contrato = 2";
$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 que el $id_padre que recibimos si hemos cambiado el select hijo.
// Se selecciona en consecuencia (selected) la opción elegida.
if ($id_padre == $registro_padre['nombre']){
echo "<option value=\"".$registro_padre['nombre']."\" selected>".$registro_padre['nombre']."</option>\n";
} else {
echo "<option value=\"".$registro_padre['nombre']."\">".$registro_padre['nombre']."</option>\n";
}
}
echo "</select>\n\n";
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.
// Formar Select "Hijo"
/* original echo "<select name=\"id_hija\">\n";*/

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ninguna opción del select hijo
// se muestra el mensaje de "seleccine un item" (del select padre).
if (!empty($id_padre)){
$SQLconsulta_hija="SELECT * FROM clientes WHERE nombre='$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)){
/*original echo "<option value=\"".$registro_hija['ident']."\" class='combo2'>".$registro_hija['ident']."</option>\n";*/
echo "<a class='texto2' >Identificador: </a>";
echo "<input type='text' class='caja2' id='id_hija' name=\"id_hija\" size='40' value='".$registro_hija['ident']."' onfocus='this.blur()'> ";

}
} else {
echo "<option value=\"\"> No hay registros para este Item </option>";
}
} /*else {
/* original echo "<option value=\"\"> <-- Seleccione un Item </option>";*/
/* original }*/
// libera memoria cuando la varibale id_padre ha sido creada
/* original mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.*/

/* original echo "</select>\n\n";*/

echo "<br><input type=\"submit\" name=\"enviado\" value=\"Generar \" class='btn2'>\n\n";
echo "</form>\n";
}
?>
</body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas