• Lunes 23 de Diciembre de 2024, 00:46

Autor Tema:  Filtrar Un Select  (Leído 5438 veces)

saito

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Filtrar Un Select
« en: Domingo 21 de Mayo de 2006, 07:01 »
0
hola foro soy nuevo usando php y me urge hacer un filtrado de datos en dos selects, pues tengo dos tablas una departamentos y otra municipios, y necesito que cuando se seleccion un departamento se refresque el otro select solo con los municipios pertenecientes a ese departamento, estoy usando mysql..........
alguien S.O.S :(

ya intente hacerlo de la siguiente forma pero como que no es buena porque solo recivo el contenido completo de la tabla.... no se recomiendenme algo que pueda hacer ya sea en mejora de este metodo o con otro nuevo....

archivo que contiene el primer select

<html>
<head>
<title></title>
</head>

<body>
<form name="prueba" method="post" action="form2.php">
  <p>nombres
    <input name="nombres" type="text" id="nombres" />
</p>
  <p>apellidos
    <input name="apellidos" type="text" id="apellidos" />
</p>
  <p>departamento
   <select name="dpto" id="dpto" onchange="document.prueba.submit();">
   <option selected>-----</option>
   <?
   //onchange='document.prueba.submit();
   echo "<option selected>-----</option><b></b>";
   $host="localhost" ;/*pero aki puede ir una ip*/
   $user="";/*aki el usuario pero como en mi caso no tengo contraseña en la db por eso no es nada*/
   $pass="";/*igual ke el anterior*/
   $conexion=mysql_connect($host,$user,$pass);
   mysql_select_db("prueba",$conexion);
   if ($conexion==true){
   echo "funciona";
   $consulta=mysql_query("SELECT departamento FROM dptos", $conexion);
   while ($row = mysql_fetch_array($consulta)) {
         echo "<option>".$row["departamento"]."</option>";}
         mysql_free_result($consulta);
         mysql_close($conexion);
         }
         else
         {echo "no funciona";}
   ?>
   </select>
   

   <!--window.location.href="procesa.php?valor="+valor_javascript;

   formulario.edad.options[formulario.edad.selectedIndex].value-->

  <p>
    <input type="submit" name="Submit" value="Enviar" />
    <input type="reset" name="Submit2" value="limpiar" />
  </p>
</form>
</body>
</html>


scrit que recibe supuestamente el valor del primer select (form2.php)
<?
     
$dpto=$_POST['dpto'];

     $host="localhost" ;/*pero aki puede ir una ip*/
   $user="";/*aki el usuario pero como en mi caso no tengo contraseña en la db por eso no es nada*/
   $pass="";/*igual ke el anterior*/
   $conexion=mysql_connect($host,$user,$pass);
   mysql_select_db("prueba",$conexion);
   if ($conexion==true){
   $consulta=mysql_query("SELECT municipios.municipio FROM dptos,municipios WHERE dptos.departamento='".$dpto."'",$conexion);
   echo "<form>"."<select>";
   while ($municipio= mysql_fetch_array($consulta))
   {
         echo "<option>".$municipio['municipio']."</option>";
         
   }
         mysql_free_result($consulta);
         mysql_close($conexion);
   echo "</select>"."</form>";
   }      

   else
   {echo "no funciona";}   
  ?>
"El verdadero hombre inteligente es el que aparenta ser tonto, ante un tonto que aparenta ser inteligente......."

marlon

  • Miembro MUY activo
  • ***
  • Mensajes: 153
    • Ver Perfil
Re: Filtrar Un Select
« Respuesta #1 en: Lunes 22 de Mayo de 2006, 15:28 »
0
"No trates de inventar la rueda... Si algo ya esta hecho, solo tómalo, analízalo, entiéndelo, adáptalo y úsalo..."
Marlon Chacon Herrera
[/i]

saito

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Filtrar Un Select
« Respuesta #2 en: Lunes 22 de Mayo de 2006, 22:00 »
0
gracias por el link lo voy a leer para mejorar lo que he hecho, pues ya lo hice de alguna forma verdad pero considero que no esta bien hecho y tengo unas dudas.
bueno les cueto primero que hice pues lo que termine haciendo una pequeña funcion en javascript para mandar el valor obtenido por el value que le pongo al objeto cuando imprimo la lista, entonces cuando lo mando al script en el evento onchange ya me manda la variable por el url y hago la consulta adecuadamente y presto!!! el combo(selct) esta filtrado lo malo es que me voy a otro script y lo que yo necesto hacer es mandar estos datos a guardar a la base de datos.
entonces como es un formulario con varias partes y este filtrado es una parte no se como hacer para mandar esta variable al mismo formulario sin que cambien lo ya seleccionada escoger el departamento y luego guardar.

les pongo una imagen de mi formulario para tratar de darme a entender mejor porque no se si me captan la idea.

http://cableado.webcindario.com/consulta.html

Gracias.
"El verdadero hombre inteligente es el que aparenta ser tonto, ante un tonto que aparenta ser inteligente......."

saito

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Re: Filtrar Un Select
« Respuesta #3 en: Domingo 4 de Junio de 2006, 19:04 »
0
hola foro... hombre mas de 64 visitas me parece y solo una respuesta..... wueno de todos modos logre hacer lo que queria.... gracias de todos modos... &lt;_&lt; .... igual publico mi codigo para que si alguien se topa con este problema le sirva..... y por lo menos se pueda tomar una idea para lo que necesite

<html>
<head>
<link href="hoja_estilo.css" rel="stylesheet" type="text/css"/>
<title>Centros Educativos</title>
<script>
var municipio=new Array();
<?
include ("conexion-fis.php");
$r=mysql_query("select * from dptos ORDER BY departamento ASC");
$contador=0;
while($c=mysql_fetch_array($r)) {
?>   
municipio[<? echo $contador?>]=new Array();
<?
$m=mysql_query("select * from municipios where iddpto='".$c['iddpto']."'"."ORDER BY municipio ASC");
$con_m=0;
while ($mu=mysql_fetch_array($m)) {
?>
municipio[<? echo $contador?>][<? echo $con_m?>]=new Option("<? echo $mu['municipio']?>","<? echo $mu['iddpto']?>");
<?
$con_m++;
}
$contador++;
}
?>
function sel_municipio(indice) {
      document.getElementsByName("municipio")[0].length=0;
      obj=document.getElementsByName("municipio")[0];
      n=indice-1;
      longitud=municipio[n].length;
      for (i=0;i<longitud;i++) {
         obj.options=municipio[n];
      }               
}
</script>
</head>
<body>
<form name="ce" method="post" action="metida_ceducativo.php">
  <table width="616" height="443" border="0">
    <tr>
      <td height="35" class="datos" colspan="2"><center>INFORMACIÓN DE CENTROS EDUCATIVOS</center></td>
    </tr>
    <tr>
      <td height="35" class="datos" colspan="2"></td>
    </tr>
    <tr>
      <td width="180" height="48" valign="top" class="datos">Codigo Centro Educativo</td>
      <td width="363" valign="top">
     <?
           include ("conexion-fis.php");
         $consulta=mysql_query("SELECT idCE FROM centroeducativo", $conexion);
         $total=mysql_num_rows($consulta)+1;
         echo "<h3>".$total."</h3>";
         echo "<input name='idce' type='hidden' size='4' value='$total'/>";
         mysql_free_result($consulta);
     ?>     </td>
    </tr>
    <tr>
      <td height="46" class="datos">Nombre Centro Educativo </td>
      <td><input name="nombrece" type="text" class="inputbox" id="nombrece" size="51" /></td>
    </tr>
    <tr>
      <td height="44" valign="top" class="datos">Sector</td>
      <td><select name="sector" class="inputbox" id="sector">
        <option>Público</option>
        <option>Privado</option>
      </select>
      </td>
    </tr>
    <tr>
      <td height="44" valign="top" class="datos">Departamento</td>
      <td><select name="dpto" class="inputbox" onChange=sel_municipio(this.selectedIndex);>
   <option>[Elija departamento]</option>
   <?
   $r=mysql_query("select *from dptos ORDER BY departamento ASC");
   while ($c=mysql_fetch_array($r)) {
   ?>
   <option value="<? echo $c['iddpto']?>"><? echo $c['departamento']?></option>
   <?
   }mysql_close($conexion);
   ?>
</select>
      </td>
    </tr>
    <tr>
      <td height="44" valign="top" class="datos">Municipio</td>
      <td><select name="municipio" class="inputbox" id="municipio">
     </select>
      </td>
    </tr>
    <tr>
      <td height="44" valign="top" class="datos">Ubicación</td>
      <td><textarea name="ubicacion" cols="38" class="inputbox" id="ubicacion"></textarea></td>
    </tr>
    <tr>
      <td height="32" colspan="2"> </td>
    </tr>
    <tr>
      <td height="49" colspan="2"><div align="center">
        <input name="guardar" type="submit" class="button" id="guardar" value="Guardar" />
         
       
       
      <input name="limpiar" type="reset" class="button" id="limpiar" value="Limpiar" />
      </div></td>
    </tr>
  </table>
</form>
</body>
</html>

 :comp:  :lightsabre:
"El verdadero hombre inteligente es el que aparenta ser tonto, ante un tonto que aparenta ser inteligente......."