Foros del Web » Programando para Internet » PHP »

Problemas con un ComboBox dinámico (Lista de menú desplegable)

Estas en el tema de Problemas con un ComboBox dinámico (Lista de menú desplegable) en el foro de PHP en Foros del Web. Buenos días. Estoy haciendo tres listas de menú desplegable: DEPARTAMENTO CIUDAD BARRIO El problema es el siguiente: Al seleccionar un departamento se carga la lista ...
  #1 (permalink)  
Antiguo 10/01/2013, 06:12
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Exclamación Problemas con un ComboBox dinámico (Lista de menú desplegable)

Buenos días.

Estoy haciendo tres listas de menú desplegable:
DEPARTAMENTO
CIUDAD
BARRIO

El problema es el siguiente:
Al seleccionar un departamento se carga la lista de ciudades de ese departamento hasta ahí funcionaba bien.
Cuando creé la lista de BARRIO con su consulta SQL respectiva , al seleccionar un departamento me sale error.
Y la idea es que me dejara seleccionar la ciudad para que cargara los barrios de la ciudad selecciona pero me sale el error al seleccionar un departamento.

Este es el código: y pueden ver su funcionamiento en este línk: http://www.inmobiliariaespaciolibre....arinmueble.php

<?php
mysql_select_db($database_conexinmo, $conexinmo);
$query_Departamento = "SELECT ID_DEP, DESCRIPCION_DEP FROM DEPARTAMENTO ORDER BY DESCRIPCION_DEP ASC";
$Departamento = mysql_query($query_Departamento, $conexinmo) or die(mysql_error());
$row_Departamento = mysql_fetch_assoc($Departamento);
$totalRows_Departamento = mysql_num_rows($Departamento);

$colname_Ciudad = "-1";
if (isset($_POST['ID_DEP'])) {
$colname_Ciudad = (get_magic_quotes_gpc()) ? $_POST['ID_DEP'] : addslashes($_POST['ID_DEP']);
}
mysql_select_db($database_conexinmo, $conexinmo);
$query_Ciudad = sprintf("SELECT ID_CIUD, DESCRIPCION_CIUD FROM CIUDAD WHERE ID_DEP = %s ORDER BY DESCRIPCION_CIUD ASC", $colname_Ciudad);
$Ciudad = mysql_query($query_Ciudad, $conexinmo) or die(mysql_error());
$row_Ciudad = mysql_fetch_assoc($Ciudad);
$totalRows_Ciudad = mysql_num_rows($Ciudad);

$colname_Barrio = "-1";
if (isset($_POST['ID_CIUD'])) {
$colname_Barrio = (get_magic_quotes_gpc()) ? $_POST['ID_CIUD'] : addslashes($_POST['ID_CIUD']);
}
mysql_select_db($database_conexinmo, $conexinmo);
$query_Barrio = sprintf("SELECT ID_BAR, DESCRIPCION_BAR FROM BARRIO WHERE ID_CIUD = %s ORDER BY DESCRIPCION_BAR ASC", $colname_Barrio);
$Barrio = mysql_query($query_Barrio, $conexinmo) or die(mysql_error());
$row_Barrio = mysql_fetch_assoc($Barrio);
$totalRows_Barrio = mysql_num_rows($Barrio);
?>

<form id="form1" name="form1" method="post" action="">
<p>Departamento
<select name="ID_DEP" id="ID_DEP" onChange="submit()">
<option value="" <?php if (!(strcmp("", $_POST['ID_DEP']))) {echo "selected=\"selected\"";} ?>>Departamento</option>
<?php
do {
?>
<option value="<?php echo $row_Departamento['ID_DEP']?>"<?php if (!(strcmp($row_Departamento['ID_DEP'], $_POST['ID_DEP']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Departamento['DESCRIPCION_DEP']?></option>
<?php
} while ($row_Departamento = mysql_fetch_assoc($Departamento));
$rows = mysql_num_rows($Departamento);
if($rows > 0) {
mysql_data_seek($Departamento, 0);
$row_Departamento = mysql_fetch_assoc($Departamento);
}
?>
</select>
</p>
<p>Ciudad
<select name="ID_CIUD" id="ID_CIUD" onChange="submit()">
<option value="" <?php if (!(strcmp("", $_POST['ID_CIUD']))) {echo "selected=\"selected\"";} ?>>Ciudad</option>
<?php
do {
?>
<option value="<?php echo $row_Ciudad['ID_CIUD']?>"<?php if (!(strcmp($row_Ciudad['ID_CIUD'], $_POST['ID_CIUD']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Ciudad['DESCRIPCION_CIUD']?></option>
<?php
} while ($row_Ciudad = mysql_fetch_assoc($Ciudad));
$rows = mysql_num_rows($Ciudad);
if($rows > 0) {
mysql_data_seek($Ciudad, 0);
$row_Ciudad = mysql_fetch_assoc($Ciudad);
}
?>
</select>
</p>
<p>Barrio
<select name="ID_BAR" id="ID_BAR">
<option value="" <?php if (!(strcmp("", $_POST['ID_BAR']))) {echo "selected=\"selected\"";} ?>>Barrio</option>
<?php
do {
?><option value="<?php echo $row_Barrio['ID_BAR']?>"<?php if (!(strcmp($row_Barrio['ID_BAR'], $_POST['ID_BAR']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Barrio['DESCRIPCION_BAR']?></option>
<?php
} while ($row_Barrio = mysql_fetch_assoc($Barrio));
$rows = mysql_num_rows($Barrio);
if($rows > 0) {
mysql_data_seek($Barrio, 0);
$row_Barrio = mysql_fetch_assoc($Barrio);
}
?>
</select></p>
</form>

<?php
mysql_free_result($Departamento);

mysql_free_result($Ciudad);

mysql_free_result($Barrio);
?>


Espero me puedan ayudar.

Muchas gracias.
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #2 (permalink)  
Antiguo 10/01/2013, 06:21
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Problemas con un ComboBox dinámico (Lista de menú desplegable)

Aquí les pongo el codigo mejor presentado.
Código PHP:
<?php
mysql_select_db
($database_conexinmo$conexinmo);
$query_Departamento "SELECT ID_DEP, DESCRIPCION_DEP FROM DEPARTAMENTO ORDER BY DESCRIPCION_DEP ASC";
$Departamento mysql_query($query_Departamento$conexinmo) or die(mysql_error());
$row_Departamento mysql_fetch_assoc($Departamento);
$totalRows_Departamento mysql_num_rows($Departamento);

$colname_Ciudad "-1";
if (isset(
$_POST['ID_DEP'])) {
  
$colname_Ciudad = (get_magic_quotes_gpc()) ? $_POST['ID_DEP'] : addslashes($_POST['ID_DEP']);
}
mysql_select_db($database_conexinmo$conexinmo);
$query_Ciudad sprintf("SELECT ID_CIUD, DESCRIPCION_CIUD FROM CIUDAD WHERE ID_DEP = %s ORDER BY DESCRIPCION_CIUD ASC"$colname_Ciudad);
$Ciudad mysql_query($query_Ciudad$conexinmo) or die(mysql_error());
$row_Ciudad mysql_fetch_assoc($Ciudad);
$totalRows_Ciudad mysql_num_rows($Ciudad);

$colname_Barrio "-1";
if (isset(
$_POST['ID_CIUD'])) {
  
$colname_Barrio = (get_magic_quotes_gpc()) ? $_POST['ID_CIUD'] : addslashes($_POST['ID_CIUD']);
}
mysql_select_db($database_conexinmo$conexinmo);
$query_Barrio sprintf("SELECT ID_BAR, DESCRIPCION_BAR FROM BARRIO WHERE ID_CIUD = %s ORDER BY DESCRIPCION_BAR ASC"$colname_Barrio);
$Barrio mysql_query($query_Barrio$conexinmo) or die(mysql_error());
$row_Barrio mysql_fetch_assoc($Barrio);
$totalRows_Barrio mysql_num_rows($Barrio);
?>

<form id="form1" name="form1" method="post" action="">
  <p>Departamento
    <select name="ID_DEP" id="ID_DEP" onChange="submit()">
      <option value="" <?php if (!(strcmp(""$_POST['ID_DEP']))) {echo "selected=\"selected\"";} ?>>Departamento</option>
      <?php
do {  
?>
      <option value="<?php echo $row_Departamento['ID_DEP']?>"<?php if (!(strcmp($row_Departamento['ID_DEP'], $_POST['ID_DEP']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Departamento['DESCRIPCION_DEP']?></option>
      <?php
} while ($row_Departamento mysql_fetch_assoc($Departamento));
  
$rows mysql_num_rows($Departamento);
  if(
$rows 0) {
      
mysql_data_seek($Departamento0);
      
$row_Departamento mysql_fetch_assoc($Departamento);
  }
?>
    </select>
</p>
  <p>Ciudad
    <select name="ID_CIUD" id="ID_CIUD" onChange="submit()">
      <option value="" <?php if (!(strcmp(""$_POST['ID_CIUD']))) {echo "selected=\"selected\"";} ?>>Ciudad</option>
      <?php
do {  
?>
      <option value="<?php echo $row_Ciudad['ID_CIUD']?>"<?php if (!(strcmp($row_Ciudad['ID_CIUD'], $_POST['ID_CIUD']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Ciudad['DESCRIPCION_CIUD']?></option>
      <?php
} while ($row_Ciudad mysql_fetch_assoc($Ciudad));
  
$rows mysql_num_rows($Ciudad);
  if(
$rows 0) {
      
mysql_data_seek($Ciudad0);
      
$row_Ciudad mysql_fetch_assoc($Ciudad);
  }
?>
    </select>
  </p>
  <p>Barrio
    <select name="ID_BAR" id="ID_BAR">
      <option value="" <?php if (!(strcmp(""$_POST['ID_BAR']))) {echo "selected=\"selected\"";} ?>>Barrio</option>
      <?php
do {  
?><option value="<?php echo $row_Barrio['ID_BAR']?>"<?php if (!(strcmp($row_Barrio['ID_BAR'], $_POST['ID_BAR']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Barrio['DESCRIPCION_BAR']?></option>
      <?php
} while ($row_Barrio mysql_fetch_assoc($Barrio));
  
$rows mysql_num_rows($Barrio);
  if(
$rows 0) {
      
mysql_data_seek($Barrio0);
      
$row_Barrio mysql_fetch_assoc($Barrio);
  }
?>
    </select></p>
  </form>

<?php
mysql_free_result
($Departamento);

mysql_free_result($Ciudad);

mysql_free_result($Barrio);
?>
  #3 (permalink)  
Antiguo 10/01/2013, 07:07
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Problemas con un ComboBox dinámico (Lista de menú desplegable)

Necesitas hacer un if antes de las consultas, preguntando si tienes el valor del select anterior. Igualmente para lo que quieres hacer seria mucho mejor que intentes usar ajax, existen librerias como jQuery que te simplifican la vida.

Ejemplo:

Código PHP:
Ver original
  1. if( isset($_POST['DEPARTAMENTO']) && !empty($_POST['DEPARTAMENTO'])){
  2.     //hago la consulta para las ciudades con ese departamento
  3. }
  4.  
  5. if( isset($_POST['CIUDAD']) && !empty($_POST['CIUDAD'])){
  6.     //hago la consulta para los barrios con esa ciudad
  7. }
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives

Última edición por h2swider; 10/01/2013 a las 07:13
  #4 (permalink)  
Antiguo 10/01/2013, 07:57
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: Problemas con un ComboBox dinámico (Lista de menú desplegable)

SOLUCIONADO
Gracias por responder.

la solución es colocar un if antes de la ultima consulta que era la que me generaba el error.

Adjunto el código arreglado:

Código PHP:
<?php
mysql_select_db
($database_conexinmo$conexinmo);
$query_Departamento "SELECT ID_DEP, DESCRIPCION_DEP FROM DEPARTAMENTO ORDER BY DESCRIPCION_DEP ASC";
$Departamento mysql_query($query_Departamento$conexinmo) or die(mysql_error());
$row_Departamento mysql_fetch_assoc($Departamento);
$totalRows_Departamento mysql_num_rows($Departamento);
?>

<form id="form1" name="form1" method="post" action="">
  <p>Departamento
    <select name="ID_DEP" id="ID_DEP" onChange="submit()">
      <option value="" <?php if (!(strcmp(""$_POST['ID_DEP']))) {echo "selected=\"selected\"";} ?>>Departamento</option>
      <?php
do {  
?>
      <option value="<?php echo $row_Departamento['ID_DEP']?>"<?php if (!(strcmp($row_Departamento['ID_DEP'], $_POST['ID_DEP']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Departamento['DESCRIPCION_DEP']?></option>
      <?php
} while ($row_Departamento mysql_fetch_assoc($Departamento));
  
$rows mysql_num_rows($Departamento);
  if(
$rows 0) {
      
mysql_data_seek($Departamento0);
      
$row_Departamento mysql_fetch_assoc($Departamento);
  }
?>
    </select>
</p>

<?php
$colname_Ciudad 
"-1";
if (isset(
$_POST['ID_DEP'])) {
  
$colname_Ciudad = (get_magic_quotes_gpc()) ? $_POST['ID_DEP'] : addslashes($_POST['ID_DEP']);
}
mysql_select_db($database_conexinmo$conexinmo);
$query_Ciudad sprintf("SELECT ID_CIUD, DESCRIPCION_CIUD FROM CIUDAD WHERE ID_DEP = %s ORDER BY DESCRIPCION_CIUD ASC"$colname_Ciudad);
$Ciudad mysql_query($query_Ciudad$conexinmo) or die(mysql_error());
$row_Ciudad mysql_fetch_assoc($Ciudad);
$totalRows_Ciudad mysql_num_rows($Ciudad);
?>

  <p>Ciudad
    <select name="ID_CIUD" id="ID_CIUD" onChange="submit()">
      <option value="" <?php if (!(strcmp(""$_POST['ID_CIUD']))) {echo "selected=\"selected\"";} ?>>Ciudad</option>
      <?php
do {  
?>
      <option value="<?php echo $row_Ciudad['ID_CIUD']?>"<?php if (!(strcmp($row_Ciudad['ID_CIUD'], $_POST['ID_CIUD']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Ciudad['DESCRIPCION_CIUD']?></option>
      <?php
} while ($row_Ciudad mysql_fetch_assoc($Ciudad));
  
$rows mysql_num_rows($Ciudad);
  if(
$rows 0) {
      
mysql_data_seek($Ciudad0);
      
$row_Ciudad mysql_fetch_assoc($Ciudad);
  }

?>
    </select>
  </p>
  
  <?php
  
  $aux
=$_POST['ID_CIUD'];
  if (
$aux 0){
  
  
$colname_Barrio "-1";
if (isset(
$_POST['ID_CIUD'])) {
  
$colname_Barrio = (get_magic_quotes_gpc()) ? $_POST['ID_CIUD'] : addslashes($_POST['ID_CIUD']);
}
mysql_select_db($database_conexinmo$conexinmo);
$query_Barrio sprintf("SELECT ID_BAR, DESCRIPCION_BAR FROM BARRIO WHERE ID_CIUD = %s ORDER BY DESCRIPCION_BAR ASC"$colname_Barrio);
$Barrio mysql_query($query_Barrio$conexinmo) or die(mysql_error());
$row_Barrio mysql_fetch_assoc($Barrio);
$totalRows_Barrio mysql_num_rows($Barrio);
}
?>

  
  <p>Barrio
    <select name="ID_BAR" id="ID_BAR">
      <option value="" <?php if (!(strcmp(""$_POST['ID_BAR']))) {echo "selected=\"selected\"";} ?>>Barrio</option>
      <?php
do {  
?><option value="<?php echo $row_Barrio['ID_BAR']?>"<?php if (!(strcmp($row_Barrio['ID_BAR'], $_POST['ID_BAR']))) {echo "selected=\"selected\"";} ?>><?php echo $row_Barrio['DESCRIPCION_BAR']?></option>
      <?php
} while ($row_Barrio mysql_fetch_assoc($Barrio));
  
$rows mysql_num_rows($Barrio);
  if(
$rows 0) {
      
mysql_data_seek($Barrio0);
      
$row_Barrio mysql_fetch_assoc($Barrio);
  }
?>
    </select></p>
  </form>

<?php
mysql_free_result
($Departamento);

mysql_free_result($Ciudad);

mysql_free_result($Barrio);
?>
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:

Etiquetas: combobox, lista, mysql, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:30.