Foros del Web » Programando para Internet » PHP »

Propuesta de Ayuda para Liberar Base de Datos y código.

Estas en el tema de Propuesta de Ayuda para Liberar Base de Datos y código. en el foro de PHP en Foros del Web. Que tal maestros, vengo a exponerles algo que no he logrado resolver, tengo unas tabals en mysql así: Y he utilizado el código de Cluster: ...
  #1 (permalink)  
Antiguo 22/08/2005, 16:26
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Propuesta de Ayuda para Liberar Base de Datos y código.

Que tal maestros, vengo a exponerles algo que no he logrado resolver, tengo unas tabals en mysql así:



Y he utilizado el código de Cluster:
http://www.forosdelweb.com/f18/faqs-php-530600-post664999/

Pero la verdad no sé por qué no me funciona, si este code ya lo he utilizado antes, etc.

Bueno Igual no me sirve al 100%. Lo que realmente necesitop es hacer las 3 listas dependientes de estas tablas País / Región / Ciudad.

En Post anteriores se ha buscado esta información de quién tiene esta BD, pues debo deciros que yo la tengo, la de todos los países del mundo con sus estados / Provincias / Departamentos y cerca de 12 países de América con las ciudades de las Provincias (Me falta España).

Pues bien yo quiero dejar esa BD lista para bajar en el foro de PHP, pero quería hacerlo con un tutorial explicativo en PHP de cómo se forman las Listas.


Pues no he podido, ni encontrar el código de las listas y ni siquiera hacerlo funcionar con 2 (Países / Povincias.)

Bien lo que quiero pedir es que me ayuden con el código para hacer funcioonar esto, hacemos un pequeño tutorial con el código y dejamos todo con la BD listo para bajar.

La verdad lo necesito para un site que estoy haciendo también, pero igual me gusta el espíritu de compartir el código.

Hos lo agradezco de antemano.
  #2 (permalink)  
Antiguo 22/08/2005, 23:17
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años
Puntos: 0
Si queres pasame la Base de Datos y veo que puedo hacer si logro hacer algo lo posteo y te mando los codigos. Podemos hacer algun script jutnos por ahi lo puedo llegar a hacer funcionar y despues lo mejoran a su gusto y sacan nuevas versiones que se yo.
Cualquier cosa si queres te dejo mi msn [email protected]

Salu2
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #3 (permalink)  
Antiguo 22/08/2005, 23:39
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Si te interesa te puedo pasar un ejemplo usando Remote Scripting con el mismo tema
  #4 (permalink)  
Antiguo 23/08/2005, 07:35
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Gracias por contestar, aclarando un poco, el ejemplo de:
http://www.ashleyit.com/rs/jsrs/select/php/select.php

lo tengo funcionando pero la solucion que busco ha de ser php solo.

Por favor, la propuesta es que trabajemos sobre el codigo y luego dejemos todo descargable. Gracias, creo que no es nada del otro mundo si alguien ya lo ha hecho.


Saludos.
  #5 (permalink)  
Antiguo 23/08/2005, 08:35
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Cita:
En Post anteriores se ha buscado esta información de quién tiene esta BD, pues debo deciros que yo la tengo, la de todos los países del mundo con sus estados / Provincias / Departamentos y cerca de 12 países de América con las ciudades de las Provincias (Me falta España).
Podrias mandarmela a adriancid[a]gmail[.]com
  #6 (permalink)  
Antiguo 23/08/2005, 10:29
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Aqui tienes el codigo

Código PHP:
<?
// datos de conexion a la BD.
$servidor  "localhost"// host
$usuario   "root";
$clave     "potrerillo";
$basedatos "test"// 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'];

} 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'];
   }    

   
// 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\">\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";
          }
        } 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";
    echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
    echo 
"</form>\n";

?>
  #7 (permalink)  
Antiguo 23/08/2005, 10:52
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Cita:
Iniciado por adriancid
Aqui tienes el codigo
Ok. Adrian, Gracias, lo he comprobado, cómo lo modificamos para que se incluya la tercera lista de ciudades ?
  #8 (permalink)  
Antiguo 23/08/2005, 11:52
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Para eso fijate como se genera la segunda lista y entonces aplicaselo a la tercera no es nada complicado.
  #9 (permalink)  
Antiguo 23/08/2005, 11:59
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
La verdad no tengo php en el pc en este momento y no puedo probarlo hasta mañana.

Si no es complkicado te pido el favor de que lo hagas.
  #10 (permalink)  
Antiguo 23/08/2005, 12:41
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Ahora solo tienes que verificar que cuando se seleccione el pais entonces se actualice también el select de las ciudades.

Código PHP:
<?
// datos de conexion a la BD.
$servidor  "localhost"// host
$usuario   "root";
$clave     "potrerillo";
$basedatos "test"// 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";

   
// 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";

?>
  #11 (permalink)  
Antiguo 23/08/2005, 13:08
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Claro...como se haría eso? tendría que tomarse por defecto las ciudades del primer Estado que se actualiza cuando se selecciona el país...???
  #12 (permalink)  
Antiguo 23/08/2005, 13:11
Avatar de adriancid  
Fecha de Ingreso: abril-2005
Ubicación: Versalles, Santiago de Cuba, Cuba
Mensajes: 53
Antigüedad: 19 años
Puntos: 0
Mira ahora no puedo seguir ayudandote, de todas formas ya tienes lo principal, ahora haz como diria un profesor mio "Metete el dedo en el cerebro y restregate las neuronas", seguro sale la respuesta.
  #13 (permalink)  
Antiguo 23/08/2005, 13:14
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Bueno, si alguien más quiere ayudar bienvenido...
  #14 (permalink)  
Antiguo 24/08/2005, 14:50
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
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
  #15 (permalink)  
Antiguo 25/08/2005, 17:37
 
Fecha de Ingreso: agosto-2005
Mensajes: 159
Antigüedad: 18 años, 8 meses
Puntos: 0
Nadie???........
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:35.