entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

AYUDA!! COMO UNIR O MAS BIEN ANIDAR 2 LISTA SELCT ...PHP DE UNA TABLA MSQL

HOLA amigos tengo una duda si me pueden ayudar tengo 2 lista select en un mismo archivo php donde la seleccion biene de una tabla msql donde en un select seleciono un campo llamado nombre y quiero q cuando selecione un nombre de la lista en el otro lista select me aparesca un mismo campo dela misma tabla pero relacionado a ese nombre por ejemplo en la tabla msql tengo 3 campos 1_nombre 2_direccion 3_año asi que si selecciono nombre en la lista en la otra lista select aparesca el año pero de ese mismo nombre en una consulta en el mismo archivo php .

espero me ayuden gracias x su tiempo!

0voto

white comentado

puedes incluir el codigo con el que realizas la consulta? y tambien la estructura de la(s) tabla(s). seria de gran ayuda para intuir cual es el problema.

0voto

Alan comentado

Hola white haha ok si mera este es mi primer lista select donde los datos los tomo de la Base de Datos pero estoy batallando para que me realize una consulta segun el valor seleccionado en BD solo tengo 3 campos nombre,apellido,año quiero seleccionar un nombre y me consulte su direccion y el año que estoy asiendo mal?:

<html>
</html></head>
<body>

<form method="post" action="consult.php">
<select name="select">
<option value="0">Seleccione</option>

<?php 

$sql = mysql_connect('localhost', 'prueba', '');
mysql_select_db('proyecto', $sql);

$sql=mysql_query("SELECT  DISTINCT nombre FROM meses");

//se obtiene los datos
$total = mysql_num_rows($sql);
while($row=mysql_fetch_array($sql)){
echo '<option value="'.$row['nombre'].'">'.$row['nombre'].'</option>';
}

?></select>

<input type="submit" name="mostrar" value="Mostrar">

</form>
</body>
</html>
<?php
/* -- CONECTANDO A LA BD -- */
$sql = mysql_connect('localhost', 'prueba', '');
mysql_select_db('proyecto', $sql);

if(isset($_POST['select']) && !empty($_POST['select'])){
    $select = $_POST['select'];

$sql="select *from meses";
$resultado=mysql_query($sql);
$total=mysql_num_rows($resultado);

echo"<table><tr><td>NOMBRE</td<td>MES</td</tr>";

while($row=mysql_fetch_array($resultado)){
    echo"<tr>";
echo "<td>".$row['nombre']."</td>"; 
echo "<td>".$row['direccion']."</td>";
echo "<td>".$row['año']."</td>";
echo"</tr>";
}

echo"</table>";

}
?>

0voto

Leonardo-Tadei comentado

Hola Alan,

te conviene poner este código en una nueva pregunta, así más miembros de la comunidad pueden verla y ayudarte...

0voto

Alan comentado

Hola leonardo ok me parece bien abrire la pregunta !!saludos

2 Respuestas

4votos

Leonardo-Tadei Puntos227010

Hola Alan,

si lo que querés es que al cambiar un select HTML otro también cambie, tenés que agregar un poco de código JavaScript para que se sincronicen las ambos select:

<!DOCTYPE html
<html>
<head>
<title>Select HTML</title>
<script type="text/javascript" >
function seleccionar(s){
   // cambia el SELECT anio al valor del SELECT nombre
    document.getElementById('anio').selectedIndex = s.selectedIndex;
}
</script>
</head>
<body>
Nombre:
<select id='nom' onchange="seleccionar(this);">
    <option value='0'>Seleccione</option>
    <option value='1'>Leo</option>
    <option value='2'>Carlos</option>
</select>
<br />
Año:
<select id='anio'>
    <option value='0'></option>
    <option value='1'>1972</option>
    <option value='2'>1988</option>
</select>
</body>
</html>

Con este código simpplemente al cambiar el SELECT del nombre, se selecciona el correspondiente SELECT del año.

Si lo que querés en cambio es que al cambiar el SELECT del nombre se cargue el otro SELECT que hasta ese momento estaba vacío, te dejo un enlace sobre cómo se haría:

http://codigojerry.blogspot.com.ar/2012/11/cargar-un-select-desde-otro-select-php.html

Por favor, sé lo más claro posible al describir qué es lo que querés conseguir y a dónde te quedaste trabado, cuidá tu ortografía todo lo que puedas y no abuses de las mayúsculas: se obtienen así mucho mejores respuestas ;-)

0voto

Alan comentado

Hola Leonardo muchas gracias por tu aporte probare tu ejemplo y si tengo mas dudas les comento vale ;)

0voto

Leonardo-Tadei comentado

Por nada Alan!
Si la respuesta te pareció que sirve para solucionar tu problema, seleccionala así el tema queda marcado como "solucionado".
Saludos cordiales!

2votos

Gust4v0x Puntos910

Puedes tener el mismo efecto con AJAX.

$("#select-one").on("change", function(e) {
    var selectedOpt = $("#select-one").val();
    var dataToSend = { name: "selectedOpt", value: selectedOpt};

    $.ajax(
        {
            url: "obtener-datos-select.php",
            dataType: "json",
            data: dataToSend,
            type: "GET"
        }
      )
      .done( function (data, textStatus, jqXHR) {
          // data = el json que envió "obtener-datos-select.php"
          // aquí haces el proceso de agregar a la lista los datos
      })
      .fail( function (jqXHR, textStatus, errorThrown) {
          alert("Ha ocurrido un error: "+jqXHR.responseText);
      })
      .always( function (jqXHR, textStatus, errorThorwn) {
      });
   }      
}

En tu archivo "obtener-datos-select.php", procesas la info enviada del select y devuelves los datos:

// hace una consulta para obtener los datos que necesitamos
$option = $_GET["selectedOpt"];
$query = /* Aquí la consulta que hace uso de "option" */
$rows= AlgoDAO::getInstance()->query( $query );

if ($rows!= null) {
  $data = new Array();
  while ($row = $rows->fetch_assoc()) {
      array_push($data, $row);
  }
  echo json_encode($data);
}

0voto

Alan comentado

Hola Gust4v0x probe tu ejemplo pero me marca un error trate de aregalarlo y ajustarlo a lo que necesitaba pero creeo que me atore mas de lo que estaba gracias por tu aporte !!saludos

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


Actividad Reciente

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta