Foros del Web » Programando para Internet » PHP »

combobox dinamico no vincula

Estas en el tema de combobox dinamico no vincula en el foro de PHP en Foros del Web. Estimados, estoy haciendo un combobox con dreamweaver, pero no logro que el segundo box se relacione con el primero. Por favor una manito para termianrlo... ...
  #1 (permalink)  
Antiguo 13/12/2011, 12:17
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 5 meses
Puntos: 0
combobox dinamico no vincula

Estimados, estoy haciendo un combobox con dreamweaver, pero no logro que el segundo box se relacione con el primero. Por favor una manito para termianrlo...

Código PHP:
<?php require_once('../Connections/dboptchile.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}


mysql_select_db($database_dboptchile$dboptchile);
$query_regiones "SELECT * FROM regiones ORDER BY REGION_ID ASC";
$regiones mysql_query($query_regiones$dboptchile) or die(mysql_error());
$row_regiones mysql_fetch_assoc($regiones);
$totalRows_regiones mysql_num_rows($regiones);

$colname_comunas "-1";
if (isset(
$_POST['REGION_ID'])) {
  
$colname_comunas $_POST['REGION_ID'];
}
mysql_select_db($database_dboptchile$dboptchile);
$query_comunas sprintf("SELECT COMUNA_ID, COMUNA_NOMBRE FROM comunas WHERE REGION_ID = %s ORDER BY COMUNA_ID ASC"GetSQLValueString($colname_comunas"int"));
$comunas mysql_query($query_comunas$dboptchile) or die(mysql_error());
$row_comunas mysql_fetch_assoc($comunas);
$totalRows_comunas mysql_num_rows($comunas);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>

<body>
<form method="post" name="prueba" id="prueba" lang="es" onchange='submit();'>
  <p>
    <label for="region_id"></label>
    <select name="region_id" id="region_id">
      <option value="" <?php if (!(strcmp(""$_POST['region_id']))) {echo "selected=\"selected\"";} ?>>Selecciona una Región</option>
      <?php
do {  
?>
      <option value="<?php echo $row_regiones['REGION_ID']?>"<?php if (!(strcmp($row_regiones['REGION_ID'], $_POST['region_id']))) {echo "selected=\"selected\"";} ?>><?php echo $row_regiones['REGION_NOMBRE']?></option>
      <?php
} while ($row_regiones mysql_fetch_assoc($regiones));
  
$rows mysql_num_rows($regiones);
  if(
$rows 0) {
      
mysql_data_seek($regiones0);
      
$row_regiones mysql_fetch_assoc($regiones);
  }
?>
    </select>
  </p>
  <p>
    <label for="comuna_id"></label>
    <select name="comuna_id" id="comuna_id">
      <option value="" <?php if (!(strcmp(""$_POST['comuna_id']))) {echo "selected=\"selected\"";} ?>>Selecciona una Comuna</option>
      <?php
do {  
?>
      <option value="<?php echo $row_comunas['COMUNA_ID']?>"<?php if (!(strcmp($row_comunas['COMUNA_ID'], $_POST['comuna_id']))) {echo "selected=\"selected\"";} ?>><?php echo $row_comunas['COMUNA_NOMBRE']?></option>
      <?php
} while ($row_comunas mysql_fetch_assoc($comunas));
  
$rows mysql_num_rows($comunas);
  if(
$rows 0) {
      
mysql_data_seek($comunas0);
      
$row_comunas mysql_fetch_assoc($comunas);
  }
?>
    </select>
  </p>
</form>
</body>
</html>
<?php
mysql_free_result
($regiones);

mysql_free_result($comunas);
?>

Última edición por chumy_; 13/12/2011 a las 12:30
  #2 (permalink)  
Antiguo 13/12/2011, 12:33
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 12 años, 7 meses
Puntos: 50
Respuesta: combobox dinamico no vincula

Te refieres a que al seleccionar una región te figure una comuna de esa región? es decir que los combos sean dependientes?
Si es así por ser PHP un lenguaje de lado de servidor necesitarás Ajax o una solución con Jquery que use Ajax, lo otro sólo con php es seleccionar región hacer post con el botón, recargar la página y luego obtener la comuna,
Saludos y espero haber comprendido tu duda.
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #3 (permalink)  
Antiguo 13/12/2011, 12:39
Avatar de molig  
Fecha de Ingreso: septiembre-2006
Ubicación: Acapulco
Mensajes: 50
Antigüedad: 17 años, 6 meses
Puntos: 15
Exclamación Respuesta: combobox dinamico no vincula

Seria los mas optimo que usaras AJAX, puede ser el framework Jquery, si no como dice snowmanchip en php:
Cita:
lo otro sólo con php es seleccionar región hacer post con el botón, recargar la página y luego obtener la comuna,
Una observacion: no es necesario que selecciones dos veces la BD

Código PHP:
mysql_select_db($database_dboptchile$dboptchile); 
Con una basta, a menos que tus tablas esten en bases diferentes.
__________________
He aprendido que un hombre
sólo tiene derecho a mirar a otro hacia abajo,
cuando ha de ayudarle a levantarse.
GGM
  #4 (permalink)  
Antiguo 14/12/2011, 09:06
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: combobox dinamico no vincula

realmente no se como llegar a eso, alguien en su infinita sabiduria podria ayudarme con eso y solucionar este problemon (por lo menos para ya paso hace rato de ser un simple problema)...

lamentablemente, dentro de todos los tutoriales, manuales y todo lo exisitido, no se porque razon al momento de modificarlo o de crearlo desde cero, no me resulta...
  #5 (permalink)  
Antiguo 14/12/2011, 10:34
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 12 años, 7 meses
Puntos: 50
Respuesta: combobox dinamico no vincula

De infinita sabiduría nada.... me dolió la cabeza esto en una oportunidad así que aquí va el código..avisa si te funciona:

Después de :

Código PHP:
Ver original
  1. case "defined":
  2.       $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
  3.       break;
  4.   }
  5.   return $theValue;
  6. }
  7. }

Y antes del Doctype reemplaza por esto:

Código PHP:
Ver original
  1. mysql_select_db($database_dboptchile, $dboptchile);
  2. $query_regiones = "SELECT * FROM regiones";
  3. $regiones = mysql_query($query_regiones, $adboptchile) or die(mysql_error());
  4. $row_regiones = mysql_fetch_assoc($regiones);
  5. $totalRows_regiones = mysql_num_rows($regiones);

Ahora vamos a lo demás :

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Documento sin t&iacute;tulo</title>
  5. <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
  6. <script language="JavaScript" type="text/JavaScript">
  7.     $(document).ready(function(){
  8.         $("#select1").change(function(event){
  9.             var id = $("#select1").find(':selected').val();
  10.             $("#select2").load('comunas.php?id='+id);
  11.         });
  12.     });
  13. </head>

Sigues ahora con esto :

Código HTML:
Ver original
  1. <select name="select1" id="select1">
  2.  
  3.   <option value="0">Elija</option>
  4.   <?php
  5. do {  
  6. ?>
  7.   <option value="<?php echo $row_regiones['region_id']?>"><?php echo $row_regiones['region_nombre']?></option>
  8.   <?php
  9. } while ($row_regiones = mysql_fetch_assoc($regiones));
  10.  $rows = mysql_num_rows($comunas);
  11.  if($rows > 0) {
  12.       mysql_data_seek($regiones, 0);
  13.       $row_comunas = mysql_fetch_assoc($regiones);
  14.   }
  15. ?>
  16.  
  17. <select name="select2" id="select2">
  18.  
  19.  
  20.  
  21.  
  22. </body>
  23. </html>
  24. <?php
  25. mysql_free_result($regiones);
  26. ?>

Ahora la clave la página comunas.php que se llamará desde la página anterior y debas crearla como sigue:
Código PHP:
Ver original
  1. <?php
  2. require_once('../Connections/dboptchile.php');
  3. mysql_select_db($database_dboptchile, $dboptchile);
  4.  
  5.  
  6. $consulta = "SELECT * FROM comunas WHERE REGION_ID = ".$_GET['id'];
  7. $query = mysql_query($consulta);
  8. while ($fila = mysql_fetch_array($query)) {
  9.     echo '<option value="'.$fila['COMUNA_ID'].'">'.$fila['COMUNA_NOMBRE'].'</option>';
  10.     };
  11. ?>

Avisa si te funciona...saludos
PD: Traté de mantener la estructura que da Dreamweaver para no complicarte, pero no abuses de sus funciones que uno termina no sabiendo lo que hace y es difícil aprender así.
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby

Última edición por snowmanchip; 14/12/2011 a las 10:40
  #6 (permalink)  
Antiguo 14/12/2011, 14:19
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: combobox dinamico no vincula

vale, probare y te aviso... muchisimas gracias...
  #7 (permalink)  
Antiguo 14/12/2011, 15:56
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: combobox dinamico no vincula

lo hice tal cual me dijiste, pero me aparece la pantalla en blanco O.o

asi quedo el codigo, no hay nada mal o si?

Código PHP:
<?php require_once('dboptchile.php'); ?>
<?php
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  if (
PHP_VERSION 6) {
    
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;
  }

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}


    
mysql_select_db($database_dboptchile$dboptchile);
    
$query_regiones "SELECT * FROM regiones";
    
$regiones mysql_query($query_regiones$adboptchile) or die(mysql_error());
    
$row_regiones mysql_fetch_assoc($regiones);
    
$totalRows_regiones mysql_num_rows($regiones);
?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Documento sin t&iacute;tulo</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script language="JavaScript" type="text/JavaScript">
        $(document).ready(function(){
            $("#select1").change(function(event){
                var id = $("#select1").find(':selected').val();
                $("#select2").load('comunas.php?id='+id);
            });
        });
    </script>
    </head>

    <body>
    <select name="select1" id="select1">
     
      <option value="0">Elija</option>
      <?php
    
do {  
    
?>
      <option value="<?php echo $row_regiones['region_id']?>"><?php echo $row_regiones['region_nombre']?></option>
      <?php
    
} while ($row_regiones mysql_fetch_assoc($regiones));
     
$rows mysql_num_rows($comunas);
     if(
$rows 0) {
          
mysql_data_seek($regiones0);
          
$row_comunas mysql_fetch_assoc($regiones);
      }
    
?>
    </select>
     
    <select name="select2" id="select2">
     
    </select>
     
     
     
    </body>
    </html>
    <?php
    mysql_free_result
($regiones);
    
?>


mmmmmm he modificado algunas cosas, pero no mejora...
  #8 (permalink)  
Antiguo 14/12/2011, 16:01
 
Fecha de Ingreso: agosto-2011
Ubicación: Viña del Mar, Chile
Mensajes: 311
Antigüedad: 12 años, 7 meses
Puntos: 50
Respuesta: combobox dinamico no vincula

Revisa bien los nombres ..pude haberme equivocado con los nombres de los campos de tu base... si no te resulta revisando los nombres, pon tu código completo para revisar..pero creo que es eso...
Saludos
__________________
He aprendido mucho y sigo aprendiendo cada día aquí...así que ayudo cuando puedo para disminuir mi deuda XD..
mi hobby
  #9 (permalink)  
Antiguo 14/12/2011, 16:42
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: combobox dinamico no vincula

vale... lo vere altiro.....
  #10 (permalink)  
Antiguo 14/12/2011, 18:53
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: combobox dinamico no vincula

no le encuentro nada... mmmm ¬¬

quizas es una wueva... pero tengo otro codigo que lo que no hace es mostrarme la segunda opcion, este lo modifique ahora en la tarde...

Index.php

Código PHP:
<?php
require_once("conexion/conexion.php");
?>
<html>
<head>
<title>Combos Din&aacute;micos</title>
<script type="text/javascript" language="javascript" src="js/funciones.js"></script>
</head>

<body onLoad="limpiar()">
<h3>Complete los siguientes datos</h3>
<form name="form">

<div>
<?php
$sql
="select region_nombre from regiones order by region_id asc";
$res=mysql_query($sql,$con);
?>
Regi&oacute;n:
<select name="region" onChange="from(document.form.region.value,'comuna','ciudad.php')">
<option value="0">Seleccione la regi&oacute;n</option>

<?php
while ($reg=mysql_fetch_array($res))
{
?>
<option value="<?php echo $reg["region_id"];?>"><?php echo $reg["region_nombre"];?></option>
<?php
}
?>

</select>
</div>
<hr />
<div id="comuna">
Ciudad:
<select name="comuna">
<option value="0">Seleccione la ciudad</option>
</select>
</div>

<hr />
<div id="comuna1">
Comunas:
<select name="comuna1">
<option value="0">Seleccione la comuna</option>
</select>
</div>

</form>

</body>
</html>

funciones.js

Código:
function obtiene_http_request()
{
var req = false;
try
  {
    req = new XMLHttpRequest(); /* p.e. Firefox */
  }
catch(err1)
  {
  try
    {
     req = new ActiveXObject("Msxml2.XMLHTTP");
  /* algunas versiones IE */
    }
  catch(err2)
    {
    try
      {
       req = new ActiveXObject("Microsoft.XMLHTTP");
  /* algunas versiones IE */
      }
      catch(err3)
        {
         req = false;
        }
    }
  }
return req;
}
var miPeticion = obtiene_http_request();
//***************************************************************************************
function from(id,ide,url){
		var mi_aleatorio=parseInt(Math.random()*99999999);//para que no guarde la página en el caché...
		var vinculo=url+"?id="+id+"&rand="+mi_aleatorio;
		//alert(vinculo);
		miPeticion.open("GET",vinculo,true);//ponemos true para que la petición sea asincrónica
		miPeticion.onreadystatechange=miPeticion.onreadystatechange=function(){
               if (miPeticion.readyState==4)
               {
				   //alert(miPeticion.readyState);
                       if (miPeticion.status==200)
                       {
                                //alert(miPeticion.status);
                               //var http=miPeticion.responseXML;
                               var http=miPeticion.responseText;
                               document.getElementById(ide).innerHTML= http;

                       }
               }/*else
               {
			document.getElementById(ide).innerHTML="<img src='ima/loading.gif' title='cargando...' />";

                }*/
       }
       miPeticion.send(null);

}
//************************************************************************************************
function limpiar()
{
	document.form.reset();
	
}
comunas.php

Código PHP:
<?php
require_once("conexion/conexion.php");
//$sql="select * from comuna where ciudad = ".$_GET["id"]."";
$sql="select * from comuna where ciudad=".$_GET["id"];
$res=mysql_query($sql,$con);
?>
Comunas:
<select name="comuna">
<option value="0">Seleccione la comuna</option>

<?php
while ($reg=mysql_fetch_array($res))
{
?>
<option value="<?php echo $reg["id"];?>"><?php echo chao_tilde($reg["nombre"]);?></option>
<?php
}
?>

</select>
quizas con este sea mas facil trabajar...
  #11 (permalink)  
Antiguo 14/12/2011, 19:49
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: combobox dinamico no vincula

muchas gracias a los que me trataron de ayudar... pero ya logre solucionarlo haciendo un codigo desde cero yo solo.... MUUUUUUUUUUUCHAS GRACIAS nuevamente...
  #12 (permalink)  
Antiguo 15/12/2011, 07:47
 
Fecha de Ingreso: noviembre-2011
Mensajes: 121
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: combobox dinamico no vincula

una ultima pregunta... como hago para guardar los datos traidos desde una base de datos en otra?

Etiquetas: combobox, dinamico, html, 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:27.