Foros del Web » Programando para Internet » PHP »

Lista de Países y Provincias Aquí... Ayuden con el Script.

Estas en el tema de Lista de Países y Provincias Aquí... Ayuden con el Script. en el foro de PHP en Foros del Web. Que tal, Aquí está la BD de Paises y Provincias de todo el mundo lista para instalar en Mysql, además tengo que colocar las ciudades ...
  #1 (permalink)  
Antiguo 29/08/2005, 07:59
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Lista de Países y Provincias Aquí... Ayuden con el Script.

Que tal,

Aquí está la BD de Paises y Provincias de todo el mundo lista para instalar en Mysql, además tengo que colocar las ciudades de 12 países de América, por ahora solo están las de la Provincia de Buenos Aires.

Igualmente os pido la ayuda para mejorar el script y sea auto actualizable la ciudad, desde que se escoge el País.

Un saludo.


Aquí lo pongo para que alguien que si sepa (yo soy un ignorante), le arregle el detallito que falta:

http://galeon.com/mapachejp3/index.htm

En todo caso falta a futuro meter todas las ciudades, probarlo con

Argentina / Buenos Aires / Ciudades


Código PHP:
<? 
// datos de conexion a la BD. 
$servidor "localhost"// host 
$usuario "root"
$clave ""
$basedatos "listas"// Indicar una Base de datos. 

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario .. 
// Sino, se continua con el formulario y los nuevos valores de los Select .. 
// OJO si se tienen mas varibles (mas <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 segun 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']."<br>"
echo 
"Recibido id_tabla_nieta: ".$_POST['id_nieta']; 

} 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()); 

// Obtener el $id_padre del envio a si mismo del formulario .. 
if(isset($_POST['id_padre'])){ 
$id_padre=$_POST['id_padre']; 


if(isset(
$_POST['id_hija'])){ 
$id_hija=$_POST['id_hija']; 


// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script). 
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n"

// Formar Selec "Padre". 
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n"
echo 
"<option value=\"\"> Seleccione un Item </option>\n"

$SQLconsulta_padre="SELECT * FROM countries"
$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 q el $id_padre q recibimos si hemos cambiado el select hijo. 
// Se selecciona en consecuencia (selected) la opción elegida. 
if ($id_padre == $registro_padre['country_id']){ 
echo 
"<option value=\"".$registro_padre['country_id']."\" selected>".$registro_padre['name']."</option>\n"
} else { 
echo 
"<option value=\"".$registro_padre['country_id']."\">".$registro_padre['name']."</option>\n"


echo 
"</select>\n\n"

mysql_free_result($consulta_padre); // Liberar memoria usada por consulta. 

// Formar Select "Hijo" 
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n"

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
// se muestra el mensaje de "seleccine un item" (del select padre). 
if (!empty($id_padre)){ 

$SQLconsulta_hija="SELECT * FROM states WHERE country_id='$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)) { 
//echo "<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n"; 
if ($id_hija == $registro_hija['state_id']){ 
echo 
"<option value=\"".$registro_hija['state_id']."\" selected>".$registro_hija['name']."</option>\n"
} else { 
echo 
"<option value=\"".$registro_hija['state_id']."\">".$registro_hija['name']."</option>\n"




} else { 
echo 
"<option value=\"\"> No hay registros para este Item </option>"

} else { 
echo 
"<option value=\"\"> <-- Seleccione un Item </option>"


mysql_free_result($consulta_hija); // Liberar memoria usada por consulta. 


echo "</select>\n\n"


// Formar Select "Nieto" 
echo "<select name=\"id_nieta\">\n"
//echo "<select name=\"id_nieta\" onChange=\"this.form.submit()\">\n"; 

// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
// se muestra el mensaje de "seleccine un item" (del select padre). 
if (!empty($id_hija)){ 

$SQLconsulta_nieta="SELECT * FROM cities WHERE state_id='$id_hija'"
$consulta_nieta mysql_query($SQLconsulta_nieta,$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_nieta) != 0){ 
While (
$registro_nieta=mysql_fetch_assoc($consulta_nieta )) { 
echo 
"<option value=\"".$registro_nieta['id']."\">".$registro_nieta['name']."</option>\n"

} else { 
echo 
"<option value=\"\"> No hay registros para este Item </option>"

} else { 
echo 
"<option value=\"\"> <-- Seleccione un Item </option>"


mysql_free_result($consulta_nieta); // Liberar memoria usada por consulta. 

echo "</select>\n\n"

echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n"
echo 
"</form>\n"

?>

Última edición por DUDO_DE_ADRIANA; 30/08/2005 a las 07:48
  #2 (permalink)  
Antiguo 31/08/2005, 17:25
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 19 años, 2 meses
Puntos: 1
Lo interesante seria que todos, fueran agregando las ciudades de su pais yo por ahi tengo una DB con todos los estados de Mexico y Municipios(nota no vienen los pueblitos) y en algunas ciudades (Monterrey) vienen todas las colonias
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO
  #3 (permalink)  
Antiguo 01/09/2005, 08:07
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Si ya las ciudades de Cada estado listas para ingresar de varios países de Latino América. Por ahora lo interesante es Hacerle al script php el detallito que le falta...
  #4 (permalink)  
Antiguo 01/09/2005, 11:07
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 19 años, 2 meses
Puntos: 1
De acuerdo

Bueno me base en un ejemplo de ajax(la verdad es algo complicado para mique ando aprendiendo), no quedo del todo como yo queria, pero bueno, ocupas bajarte el zip que dan aqui

Los archivos que no cambian son
jsrsServer.php.inc
result.php
jsrsClient.js
style.css

Y reemplaza estos archivos por los que voy a postear
selectphp.js
Código PHP:
/**************************************************************
   
result.php by Milfson ([email protected]) 17.04.2004

Milfson added preselect(parameters...) to pre-populate dropdowns with default values.

Thanks for the code! - Brent.
 
***************************************************************/

// constants
var noValue '-99';
// default values
var IDMake noValue;
var 
IDModel noValue;
var 
IDOptions noValue;
//selects disabled true/false
var boolEnabled true;

// globals
var curOption = new Array();
var 
isLoaded = new Array();

function 
initLists(){
  
// initialize lists
  
emptyList'lstPais' );
  
emptyList'lstEstado');
  
emptyList'lstCiudades' );
  
jsrsExecute'select_rs.php'cbFillMake'makeList');
}

function 
preselect(idMake,idModel,idOptions,selectable){
  
boolEnabled selectable;
  
IDMake idMake;
  
IDModel idModel;
  
IDOptions idOptions;
  
initLists();
}

function 
lstPais_onChange(){
  var 
val this.options[this.selectedIndex].value;
    
IDMake val;
    
IDModel noValue;
    
IDOptions noValue;
  if(
val == noValue){
    
selectOptionthis.namecurOption[this.name] )
  } else {
    
curOption[this.name] = val;
    
// init dependent lists
    
emptyList'lstEstado' );
    
emptyList'lstCiudades');
    
window.status 'Loading Model Selections...';
    
jsrsExecute'select_rs.php'cbFillModel'modelList'val);
  }  
}

function 
lstEstado_onChange(){

  var 
val this.options[this.selectedIndex].value;
  if(
val == noValue){
    
selectOptionthis.namecurOption[this.name] )
  } else {
    
curOption[this.name] = val;
    
emptyList'lstCiudades');
    
window.status 'Loading Options Selections...';
    
jsrsExecute'select_rs.php'cbFillOptions'optionsList'val);
  }  
}

function 
lstCiudades_onChange(){
  var 
val this.options[this.selectedIndex].value;
  
IDOptions val;
  if(
val == noValue){
    
selectOptionthis.namecurOption[this.name] )
  } else {
    var 
msg "You have selected: \n\n";
    
msg += this.form.lstPais.options[this.form.lstPais.selectedIndex].text "\n";
    
msg += this.form.lstEstado.options[this.form.lstEstado.selectedIndex].text "\n";
    
msg += this.options[this.selectedIndex].text "\n";
    
//alert (msg);
    
    
if(boolEnabled){
    
document.getElementById('cmdSubmit').disabled="";
    
document.getElementById('show').style.backgroundColor="#FFCC99";
    }
    
  }
}

function 
cbFillMake strMakes ){ 
  
window.status '';
  
fillList'lstPais',  strMakes ); 
  if(
IDMake != noValue){
    
jsrsExecute'select_rs.php'cbFillModel'modelList'''+IDMake+'');
  }
}

function 
cbFillModel strModels ){ 
  
// callback for dependent listbox
  
window.status '';
  
fillList'lstEstado',  strModels ); 
  if(
IDModel != noValue){
    
jsrsExecute'select_rs.php'cbFillOptions'optionsList'''+IDModel+'');
  }
}

function 
cbFillOptionsstrOptions ){ 
  
// callback for dependent listbox
  
window.status '';
  
fillList'lstCiudades'strOptions ); 
}

function 
fillListlistNamestrOptions ){
  
// fill any list with options
  
emptyListlistName );  
  
// always insert selection prompt
  
var lst document.forms['QForm'][listName];
  
lst.disabled true;  
  
//lst.options[0] = new Option('=>  Seleccione una opcion  <=', noValue);
  
  // options in form "value~displaytext|value~displaytext|..."
  
var aOptionPairs strOptions.split('|');
  for( var 
0aOptionPairs.lengthi++ ){
    if (
aOptionPairs[i].indexOf('~') != -1) {
      var 
aOptions aOptionPairs[i].split('~');
      
lst.options[i] = new Option(aOptions[1], aOptions[0]);
    }
  }
  switch(
listName){
      case 
'lstPais':
          
ID IDMake;
        break;
      case 
'lstEstado':
          
ID IDModel;
        break;
    case 
'lstCiudades':
          
ID IDOptions;
        break;
    }
  
// init to no value
  
selectOptionlistNameID );
  
isLoaded[listName] = true;
  
lst.disabled = !boolEnabled;
  
lst.onchange = eval( listName "_onChange" );
  
// eval( "document.forms['QForm']['" + listName + "'].onchange=" + listName + "_onChange;" );
  
lst.selectedIndex = -1;
}

function 
emptyListlistName ){
  var 
lst document.forms['QForm'][listName];
  
lst.options.length 0;
  
lst.onchange null;
  
lst.disabled boolEnabled;
  
isLoaded[listName] = false;
  
curOption[listName] = noValue;
}

function 
selectOptionlistNameoptionVal ){
  
// set list selection to option based on value
  
var lst document.forms['QForm'][listName];
  for( var 
0ilst.options.lengthi++ ){
    if( 
lst.options[i].value == optionVal ){
      
lst.selectedIndex i;
      
curOption[listName] = optionVal;
      return;
    }  
  }

select.php
Código PHP:
<html>
<head>
  <title>Ciudades del Mundo</title>
  <script language="javascript" src="jsrsClient.js"></script>
  <script language="javascript" src="selectphp.js"></script>

</head>
<?php
  $make 
= isset($_POST['lstPais']) ? $_POST['lstPais'] : -99;
  
$model = isset($_POST['lstEstado']) ? $_POST['lstEstado'] : -99;
  
$options = isset($_POST['lstCiudades']) ? $_POST['lstCiudades'] : -99;
?>
<body onload="preselect('<?php echo $make;?>', '<?php echo $model;?>', '<?php echo $options;?>', 1);" onhelp="jsrsDebugInfo();return false;">
<h3>Pues aun faltan detalles, pero las funciones basicas ya estan</h3>
<form name="QForm" method="post" action="./recibido.php">
<div id="sel">
<table class="normal" width="575" BORDER="0" CELLSPACING="2" CELLPADDING="2" VALIGN="TOP">
<?php 
  SelectBox 
("Pais",    "lstPais");     
  
SelectBox ("Estado",   "lstEstado");    
  
SelectBox ("Ciudad""lstCiudades");   
?>
</table>
<div id="show">
  <input type="submit" name="cmdSubmit" value="Submit" id="cmdSubmit" title="Show selects with preselected values" style="" /><br />
  (submits to second page which preselects current values in another form like this)
</div>
</div>
</form>
</body>
</html>
<?php

function SelectBox$Label$selectName ){
  
?>
  <tr ALIGN="LEFT">
    <td width="15%"><?php echo $Label ?></td>
    <td align="left">
      <select name="<?php echo $selectName ?>">
        <option></option><option></option><option></option>
        <option>--------- Not Yet Loaded ---------</option> 
      </select>
    </td>
  </tr>
<?php 

?>
select_rs.php
Código PHP:
<?php 

require("jsrsServer.php.inc");
jsrsDispatch"makeList modelList optionsList" );

function 
makeList() {
  return 
serializeSql"SELECT country_id,name FROM countries" );
}

function 
modelList$makeID ){
  return 
serializeSql("select state_id, name  FROM states WHERE country_id=" $makeID " order by name");
}

function 
optionsList$modelID ){
  return 
serializeSql("select id, name FROM cities WHERE state_id=" $modelID " order by name");
}

function 
serializeSql$sql ){
  
$link mysql_connect("localhost""usuario""password");
  
mysql_select_db ("nombre de la base"); 
  
$result mysql_query ($sql);
  
$s '';
  while (
$row mysql_fetch_row($result)) {
   
$s .= join$row'~') . "|";
  }
  
mysql_close($link);
  if(
$s == null){
      
$s "NoValue~No hay registros";
  }
  return 
$s;
}
   
?>
crea un archivo llamado recibido con esto de contenido para que veas lo que te llega y pues tu ya sabras que hacer con el
Código PHP:
<?php
print_r
($_POST);
?>
Espero que no me haya faltado nada, pruebalo y me avisas.
Salu2
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO
  #5 (permalink)  
Antiguo 06/09/2005, 17:28
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Gracias tyo100 Es una solución Inteligente y moderna con RSS.

Ahora lo único que restaría es acondicionar el script inicial a la forma tradicional en php, que por lo que veo y he navegado en el foro es mucho más integrable aun formulario, etc.
  #6 (permalink)  
Antiguo 07/09/2005, 08:29
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 4 meses
Puntos: 8
hola

no me resulto el script de tyo100 baje el script remplazé los archivos que mensionaba y luego cambié los datos de la base de datos en select_rs.php

Código PHP:
  $link mysql_connect("localhost""root"""); 
  
mysql_select_db ("select3"); 
pd:obviamente carge la base datos de DUDO_DE_ADRIANA
gracias
  #7 (permalink)  
Antiguo 07/09/2005, 08:35
Avatar de ADIÓS_ADRIANA  
Fecha de Ingreso: septiembre-2005
Mensajes: 263
Antigüedad: 18 años, 7 meses
Puntos: 0
me parece más fácil Intentar primero resolverlo a la forma "tradicional", de script solo php.
  #8 (permalink)  
Antiguo 07/09/2005, 11:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ok, .. pero en la forma "Tradicional" que problema tienes concretamente?

No he alcanzado a ver bien tu modelo de datos (podrías detallarlo aquí ..por qué de ahí parte todo .. de las relaciones que vas hacer). La parte PHP para añadir 1 o más selectores dependientes es exactamente con la misma técnica.


Un saludo,
  #9 (permalink)  
Antiguo 07/09/2005, 12:00
Avatar de ADIÓS_ADRIANA  
Fecha de Ingreso: septiembre-2005
Mensajes: 263
Antigüedad: 18 años, 7 meses
Puntos: 0
El modelo es éste:




La cuestión es que al seleccionar el País, aparezca actualizada en la otra lista el primer Estado/Provincia de ese páis e igualemnte la primera ciudad de ese Estado/Provincia, es Decir:

Inicialmente:

<-Seleccione un item..........<-Seleccione un item.......<-Seleccione un item

Y luego de Sellecionar Argentina:


Argentina..........................Buenos Aires...................Adolfo Alsina


Actualmente como está en el Primer post y en el Link, funciona Solo País / Estado/ Falta ciudad.

Eso es.

Gracias por la Colaboración.
  #10 (permalink)  
Antiguo 07/09/2005, 14:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Y .. que efecto observas? .. como queda tu selector? .. has comprobado los valores de las variables que envias por $_POST (para ver los valores de sus respectivos "id_padre" .. "id_hija" .. etc ...)

Parece que el "id_hija" no llega al recargar tu formulario o llega con un valor que no corresponde.

Otra cosa que se observa:
echo "<option value=\"".$registro_nieta['id']."\">".$registro_nieta['name']."</option>\n";
}

en tu modelo de datos .. no aparece ningún campo "id" de nombre .. a lo sumo creo que sería "country_id"?

Un saludo,
  #11 (permalink)  
Antiguo 07/09/2005, 15:33
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 19 años, 2 meses
Puntos: 1
ADRIANA_TE_AMO => DUDO_DE_ADRIANA => ADIÓS_ADRIANA son la misma persona????

Bueno que importa quien sea, la unica forma que se me ocurrio es hacer uso de JOIN MySQL, mira hay que cambiar los nombres de algunos campos

en cities, name lo cambias por city y en sates, name por state

Bueno tiene un problema, solo funciona la primera vez, que se cambia, el pais, pero al hacerlo por segunda vez ya existe un estado seleccionado por lo tanto no lo limpia

Código PHP:
<? 
// datos de conexion a la BD. 
$servidor  "localhost"// host 
$usuario   "root"
$clave     ""
$basedatos ""// Indicar una Base de datos. 

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario .. 
// Sino, se continua con el formulario y los nuevos valores de los Select .. 
// OJO si se tienen mas varibles (mas <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 segun 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']."<br>"
    echo 
"Recibido id_tabla_nieta: ".$_POST['id_nieta']; 
}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()); 
    
// Obtener el $id_padre del envio a si mismo del formulario .. 
    
if(isset($_POST['id_padre'])){ 
        
$id_padre=$_POST['id_padre']; 
    }
    if(isset(
$_POST['id_hija'])){ 
        
$id_hija=$_POST['id_hija']; 
    }    
    
// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script). 
    
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n"
    
// Formar Selec "Padre". 
    
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n"
    echo 
"<option value=\"\"> Seleccione un Item </option>\n"
    
$SQLconsulta_padre="SELECT * FROM countries"
    
$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 q el $id_padre q recibimos si hemos cambiado el select hijo. 
        // Se selecciona en consecuencia (selected) la opción elegida. 
        
if ($id_padre == $registro_padre['country_id']){ 
            echo 
"<option value=\"".$registro_padre['country_id']."\" selected>".$registro_padre['name']."</option>\n"
        } else { 
            echo 
"<option value=\"".$registro_padre['country_id']."\">".$registro_padre['name']."</option>\n"
        } 
    } 
    echo 
"</select>\n\n"
    
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta. 
    // Formar Select "Hijo" 
    
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n"
    
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
    // se muestra el mensaje de "seleccine un item" (del select padre). 
    
if (!empty($id_padre)){
        
$SQLconsulta_hija="SELECT * FROM states WHERE country_id='$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)){ 
                if (
$id_hija == $registro_hija['state_id']){
                    echo 
"<option value=\"".$registro_hija['state_id']."\" selected>".$registro_hija['state']."</option>\n"
                } else { 
                    echo 
"<option value=\"".$registro_hija['state_id']."\">".$registro_hija['state']."</option>\n"
                }
            }
        } else { 
            echo 
"<option value=\"\"> No hay registros para este Item </option>"
        }
    
    } else {
        echo 
"<option value=\"\"> <-- Seleccione un Item  </option>"
    } 
    
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta. 
    
echo "</select>\n\n"
    
// Formar Select "Nieto" 
    
echo "<select name=\"id_nieta\">\n"
    
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
    // se muestra el mensaje de "seleccine un item" (del select padre). 
    
if (!empty($id_hija)){ 
        
$SQLconsulta_nieta="SELECT * FROM cities WHERE state_id='$id_hija'"
        
$consulta_nieta mysql_query($SQLconsulta_nieta,$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_nieta) != 0){
            While   (
$registro_nieta=mysql_fetch_assoc($consulta_nieta  )){
                echo 
"<option value=\"".$registro_nieta['id']."\">".$registro_nieta['city']."</option>\n";
            }
        } else { 
            echo 
"<option value=\"\"> No hay registros para este Item </option>"
        } 
    } else {
        if (empty(
$id_padre)){
            echo 
"<option value=\"\"> <-- Seleccione un Item  </option>"
        }else {
            
$SQLconsulta_nieta="SELECT * FROM cities LEFT JOIN states on states.state_id=cities.state_id WHERE states.country_id='$id_padre'"
            
$consulta_nieta mysql_query($SQLconsulta_nieta,$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_nieta) != 0){ 
                While   (
$registro_nieta=mysql_fetch_assoc($consulta_nieta  ))  { 
                    echo 
"<option value=\"".$registro_nieta['id']."\">".$registro_nieta['city']."</option>\n"
                }
            } else { 
                echo 
"<option value=\"\"> No hay registros para este Item </option>";
            }
        }
    } 
    
mysql_free_result($consulta_nieta); // Liberar memoria usada por consulta. 
    
echo "</select>\n\n"
    echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n"
    echo 
"</form>\n"
}
?>
Pero con un poco de Javascript
cambia onChange... por
onChange=\"this.form.id_hija.options.selectedIndex = -1;this.form.submit()\"
en echo "<select name=\"id_padre\" onChange=
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO

Última edición por tyo100; 07/09/2005 a las 15:43
  #12 (permalink)  
Antiguo 08/09/2005, 07:09
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 4 meses
Puntos: 8
Encontré el problema, este se encuentra en el archivo selectphp.js
en el siguiente código

Código PHP:
    if(boolEnabled){ 
    
document.getElementById('cmdSubmit').disabled=""
    
document.getElementById('show').style.backgroundCo  lor="#FFCC99"
    } 
     
  } 
En la linea

Código PHP:
document.getElementById('show').style.backgroundCo  lor="#FFCC99"
quitar espacio es Color


y listo

salu2
  #13 (permalink)  
Antiguo 08/09/2005, 11:19
Avatar de ADIÓS_ADRIANA  
Fecha de Ingreso: septiembre-2005
Mensajes: 263
Antigüedad: 18 años, 7 meses
Puntos: 0
Muchas Gracias

tyo100

Si soy el Mismo que dices.

Modelo De Tablas Final



Codigo Final de las 3 listas. Funciona Perfecto.

Voy a poner a alguien a Ingresar las Ciudades que faltan y Espero postear aquí la BD más cargada.

Código PHP:
<? 
// datos de conexion a la BD. 
$servidor  "localhost"// host 
$usuario   "root"
$clave     ""
$basedatos "listas"// Indicar una Base de datos. 

// si se ha pulsao el boton enviar ($enviado) se procesa el formulario .. 
// Sino, se continua con el formulario y los nuevos valores de los Select .. 
// OJO si se tienen mas varibles (mas <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 segun 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']."<br>"
    echo 
"Recibido id_tabla_nieta: ".$_POST['id_nieta']; 
}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()); 
    
// Obtener el $id_padre del envio a si mismo del formulario .. 
    
if(isset($_POST['id_padre'])){ 
        
$id_padre=$_POST['id_padre']; 
    } 
    if(isset(
$_POST['id_hija'])){ 
        
$id_hija=$_POST['id_hija']; 
    }     
    
// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script). 
    
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\">\n\n"
    
// Formar Selec "Padre". 
    
echo "<select name=\"id_padre\" onChange=\"this.form.id_hija.options.selectedIndex = -1;this.form.submit()\"n"
    echo 
"<option value=\"\"> Seleccione un Item </option>\n"
    
$SQLconsulta_padre="SELECT * FROM countries"
    
$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 q el $id_padre q recibimos si hemos cambiado el select hijo. 
        // Se selecciona en consecuencia (selected) la opción elegida. 
        
if ($id_padre == $registro_padre['country_id']){ 
            echo 
"<option value=\"".$registro_padre['country_id']."\" selected>".$registro_padre['name']."</option>\n"
        } else { 
            echo 
"<option value=\"".$registro_padre['country_id']."\">".$registro_padre['name']."</option>\n"
        } 
    } 
    echo 
"</select>\n\n"
    
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta. 
    // Formar Select "Hijo" 
    
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n"
    
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
    // se muestra el mensaje de "seleccine un item" (del select padre). 
    
if (!empty($id_padre)){ 
        
$SQLconsulta_hija="SELECT * FROM states WHERE country_id='$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))  { 
                if (
$id_hija == $registro_hija['state_id']){ 
                    echo 
"<option value=\"".$registro_hija['state_id']."\" selected>".$registro_hija['state']."</option>\n"
                } else { 
                    echo 
"<option value=\"".$registro_hija['state_id']."\">".$registro_hija['state']."</option>\n"
                } 
            } 
        } else { 
            echo 
"<option value=\"\"> No hay registros para este Item </option>"
        } 
     
    } else { 
        echo 
"<option value=\"\"> <-- Seleccione un Item  </option>"
    } 
    
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta. 
    
echo "</select>\n\n"
    
// Formar Select "Nieto" 
    
echo "<select name=\"id_nieta\">\n"
    
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo 
    // se muestra el mensaje de "seleccine un item" (del select padre). 
    
if (!empty($id_hija)){ 
        
$SQLconsulta_nieta="SELECT * FROM cities WHERE state_id='$id_hija'"
        
$consulta_nieta mysql_query($SQLconsulta_nieta,$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_nieta) != 0){ 
            While   (
$registro_nieta=mysql_fetch_assoc($consulta_nieta    )){ 
                echo 
"<option value=\"".$registro_nieta['id']."\">".$registro_nieta['city']."</option>\n"
            } 
        } else { 
            echo 
"<option value=\"\"> No hay registros para este Item </option>"
        } 
    } else { 
        if (empty(
$id_padre)){ 
            echo 
"<option value=\"\"> <-- Seleccione un Item  </option>"
        }else { 
            
$SQLconsulta_nieta="SELECT * FROM cities LEFT JOIN states on states.state_id=cities.state_id WHERE states.country_id='$id_padre'"
            
$consulta_nieta mysql_query($SQLconsulta_nieta,$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_nieta) != 0){ 
                While   (
$registro_nieta=mysql_fetch_assoc($consulta_nieta    ))  { 
                    echo 
"<option value=\"".$registro_nieta['id']."\">".$registro_nieta['city']."</option>\n"
                } 
            } else { 
                echo 
"<option value=\"\"> No hay registros para este Item </option>"
            } 
        } 
    } 
    
mysql_free_result($consulta_nieta); // Liberar memoria usada por consulta. 
    
echo "</select>\n\n"
    echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n"
    echo 
"</form>\n"

?>
  #14 (permalink)  
Antiguo 14/10/2005, 09:46
 
Fecha de Ingreso: octubre-2005
Mensajes: 2
Antigüedad: 18 años, 6 meses
Puntos: 0
Quiero saber

La verdad soy muy nuevo en PHP, y mas o menos entiendo todos los post que tenian en esta page, yo habia usado el ejemplo anterior que tenia las 5 paginas pero tengo varios problemas, la diferencia es que estoy usando el manejador postgres, y no encuentro una sentencia similar a la mysql_fetch_assoc en postgres, bueno mi base de datos es un poco diferente lo mio se refiere a municipios, parroquias y comunidades, queria saber si me podian dar una orientacion de cuales son los parametros que debo cambiar para que me funcione con mi base de datos

se estrcutura de la siguiente manera:

Municipio: Parroquia: comunidad:
cod_municipio------cod_municipio----------cod_municipio
Nombre_mn cod_parroquia----------cod_parroquia
nombre_pa cod_comunidad
nombre_cm
  #15 (permalink)  
Antiguo 17/10/2005, 13:28
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 19 años, 2 meses
Puntos: 1
Toricamente solo cambias la conexion y las funciones de mysql http://mx.php.net/manual/es/ref.mysql.php a postgress http://mx.php.net/manual/es/ref.pgsql.php

Fetch assoc MySQL
$registro_padre=mysql_fetch_assoc($consulta_padre) ;

Fetch assoc PostrgreSQL
$registro_padre=pg_fetch_assoc($consulta_padre);
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO
  #16 (permalink)  
Antiguo 24/11/2005, 14:44
 
Fecha de Ingreso: agosto-2005
Ubicación: Mérida, Venezuela
Mensajes: 732
Antigüedad: 18 años, 7 meses
Puntos: 7
Hola... estará disponible la BD? digo no más...
__________________
Gracias de todas todas
-----
Linux!
  #17 (permalink)  
Antiguo 24/11/2005, 15:28
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 19 años, 2 meses
Puntos: 1
Pues esta en el link que puso mas arriba, se suponia que lo iba a estar actualizando, yo le mande el SQL con todos los municipios de Mexico pero ya no supe si lo actualizo.
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO
  #18 (permalink)  
Antiguo 24/11/2005, 16:01
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
Ajá.............Con que pidiéndome la Tarea...........Pues les cuento que la he hecho y muy Bien.

el esquema actualizado es el siguiente y el link este:

http://galeon.com/mapachejp3/




Saludos.
  #19 (permalink)  
Antiguo 24/11/2005, 17:07
Avatar de tyo100  
Fecha de Ingreso: febrero-2005
Ubicación: Monterrey, NL
Mensajes: 475
Antigüedad: 19 años, 2 meses
Puntos: 1
Bueno aqui aprovechando que volvistes, con que software hicistes ese dibujo y hubieras creado el dump con todo y el create table
__________________
Desde la tierra de los nopales, las tortillas de maiz, y en cuya ciudad se encuenta el cerro de la silla.
NalgAss Web
SpiderMex - La Historia del Hombre Araña en MEXICO
  #20 (permalink)  
Antiguo 25/11/2005, 07:46
 
Fecha de Ingreso: octubre-2005
Mensajes: 365
Antigüedad: 18 años, 6 meses
Puntos: 0
vaya...........Lo siento !!!!!!!!! Pero lo acabo de corregir, así que siplemente bájalo de nuevo.

El dibujo lo hice con un modelador de Bases de Datos fantástico que se llama DBDesigner. Dibujas tu Base de datos como quieras, los nombres de los campos, los tipos de datos, etc y luego exportas el script y lo ejecutas,puedes "sincronizar" el diseño versus el diseño físico, Hacer Ingeniería Inversa, etc....te dejo el Link. Saludos a todos.

http://www.fabforce.net/dbdesigner4/
  #21 (permalink)  
Antiguo 06/01/2006, 11:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Una base de datos con Paises y ciudades (para Mysql):

http://downloads.mysql.com/docs/world.sql

Contiene el "lenguaje" oficial del pais también .. pero está todo en Ingles!!!

Lo "gracioso" es que es parte de los ejemplos/documentación de Mysql O_o'

Un saludo,
  #22 (permalink)  
Antiguo 06/01/2006, 11:59
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Pero no tiene las regiones..................
__________________
EL LIMITE ES EL UNIVERSO
  #23 (permalink)  
Antiguo 06/01/2006, 13:02
Avatar de richardinj  
Fecha de Ingreso: enero-2005
Ubicación: Ciber Espacio
Mensajes: 2.180
Antigüedad: 19 años, 2 meses
Puntos: 11
mmm.. algo en español? y completo sobretodo en Latinoamerica...
  #24 (permalink)  
Antiguo 06/01/2006, 13:26
Avatar de jpogsistem  
Fecha de Ingreso: diciembre-2001
Mensajes: 2.405
Antigüedad: 22 años, 4 meses
Puntos: 4
Pues el que ponen al inicio de este post.........ya lo proaste? se me hace bastante completo.

http://galeon.com/mapachejp3/index.htm
__________________
EL LIMITE ES EL UNIVERSO
  #25 (permalink)  
Antiguo 18/06/2008, 00:55
Avatar de eldjmix  
Fecha de Ingreso: enero-2007
Ubicación: Puerto Madryn, Argentina
Mensajes: 73
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Lista de Países y Provincias Aquí... Ayuden con el Script.

alguien tiene el ARCHIVO SQL PARA MYSQL?
no esta activo en ese link
  #26 (permalink)  
Antiguo 18/06/2008, 01:06
Avatar de eldjmix  
Fecha de Ingreso: enero-2007
Ubicación: Puerto Madryn, Argentina
Mensajes: 73
Antigüedad: 17 años, 2 meses
Puntos: 0
Respuesta: Lista de Países y Provincias Aquí... Ayuden con el Script.

ups aqui lo enontre www.forosdelweb.com/f18/aporte-archivo-sql-con-todos-paises-respectivos-estados-provincias-557815/
  #27 (permalink)  
Antiguo 25/04/2011, 14:42
 
Fecha de Ingreso: octubre-2009
Ubicación: Catamarca
Mensajes: 91
Antigüedad: 14 años, 6 meses
Puntos: 4
Respuesta: Lista de Países y Provincias Aquí... Ayuden con el Script.

Error en el topic, el mensaje esta aqui: http://www.forosdelweb.com/f21/aport...incias-557815/
Agrego un instant tipo google instant a la seleccion de paises y provincias

Última edición por joacoff; 25/04/2011 a las 14:45 Razón: error en el topic
  #28 (permalink)  
Antiguo 02/07/2011, 00:23
Avatar de rompeguesos  
Fecha de Ingreso: marzo-2009
Mensajes: 692
Antigüedad: 15 años, 1 mes
Puntos: 8
Respuesta: Lista de Países y Provincias Aquí... Ayuden con el Script.

hola gente yo tengo un problema con este script para los combos, lo tengo adaptado para dos en lugar de 3 y a la hora de mostrarlo solo me muestra un resultado, es decir... por ejemplo:

en la base de datos tengo industrias y otra productos

meto una industria: alimenticia y en productos: Pan y Leche ambas con "relacion" numero 1 que equivale al id en industria y solo me muestra Pan, alguien sabe a que puede deberse ese error?
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 10:18.