Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/04/2008, 06:19
omarwhang
 
Fecha de Ingreso: abril-2008
Mensajes: 4
Antigüedad: 16 años
Puntos: 1
Combobox Dinamicos php - 2 o mas Combos Anidados

A raiz de que en la web hay poca informacion hacerca de combos dinamicos en php me eh tomado la molestia de programarlo, haber logrado un codigo eficiente y muy facil de comprender, solo esepero que los sirva, no es una de mis virtudes el explicar mejor los dejo para que ustedes lo comprendan..

Doy gracias de ante mano a las personas que usen este codigo y pongan de referencia a mi persona por ser el creador del codigo...

Omar Yony Ramos Rojas para servirles....
__________________________________________________ _______________
BASE DE DATOS "combo" esta en Mysql
__________________________________________________ _______________
Código:
-- phpMyAdmin SQL Dump
-- version 2.10.1
-- http://www.phpmyadmin.net
-- 
-- Servidor: localhost
-- Tiempo de generación: 13-04-2008 a las 07:58:32
-- Versión del servidor: 5.0.45
-- Versión de PHP: 5.2.5

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

-- 
-- Base de datos: `combo`
-- 

-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `dep`
-- 

CREATE TABLE `dep` (
  `iddep` int(10) unsigned NOT NULL auto_increment,
  `pais_idp` int(10) unsigned NOT NULL,
  `departamento` varchar(25) default NULL,
  PRIMARY KEY  (`iddep`),
  KEY `dep_FKIndex1` (`pais_idp`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;

-- 
-- Volcar la base de datos para la tabla `dep`
-- 

INSERT INTO `dep` (`iddep`, `pais_idp`, `departamento`) VALUES 
(1, 1, 'Puno'),
(2, 1, 'arequipa'),
(3, 2, 'cordoba'),
(4, 2, 'San Luis');

-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `distrito`
-- 

CREATE TABLE `distrito` (
  `dep_iddep` int(10) unsigned NOT NULL,
  `distrito` varchar(12) NOT NULL,
  KEY `distrito_FKIndex1` (`dep_iddep`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- 
-- Volcar la base de datos para la tabla `distrito`
-- 

INSERT INTO `distrito` (`dep_iddep`, `distrito`) VALUES 
(1, 'Juliaca'),
(1, 'Puno'),
(1, 'huancane'),
(1, 'azangaro'),
(3, 'santo tome'),
(3, 'santiago'),
(3, 'Chaco'),
(3, 'San Rafael');

-- --------------------------------------------------------

-- 
-- Estructura de tabla para la tabla `pais`
-- 

CREATE TABLE `pais` (
  `idp` int(10) unsigned NOT NULL auto_increment,
  `pais` varchar(25) default NULL,
  PRIMARY KEY  (`idp`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;

-- 
-- Volcar la base de datos para la tabla `pais`
-- 

INSERT INTO `pais` (`idp`, `pais`) VALUES 
(1, 'peru'),
(2, 'argentina');

-- 
-- Filtros para las tablas descargadas (dump)
-- 

-- 
-- Filtros para la tabla `dep`
-- 
ALTER TABLE `dep`
  ADD CONSTRAINT `dep_ibfk_1` FOREIGN KEY (`pais_idp`) REFERENCES `pais` (`idp`) ON DELETE NO ACTION ON UPDATE NO ACTION;

-- 
-- Filtros para la tabla `distrito`
-- 
ALTER TABLE `distrito`
  ADD CONSTRAINT `distrito_ibfk_1` FOREIGN KEY (`dep_iddep`) REFERENCES `dep` (`iddep`) ON DELETE NO ACTION ON UPDATE NO ACTION;
__________________________________________________ _______________
CODIGO DE CONEXION DE LA BASE DE DATOS ARCHIVO "Mysql.php"
_______________________________________ __________________________
Código PHP:
<?php  
class MySQL{  
public 
$cont=0;
 private 
$conexion;  
  private 
$total_consultas;  
 public function 
MySQL(){  
  if(!isset(
$this->conexion)){  
  
$this->conexion = (mysql_connect("localhost","root","")) or die(mysql_error());  
  
mysql_select_db("combo",$this->conexion) or die(mysql_error());  
  }  
  }  
 public function 
consulta($consulta){  
  
$this->total_consultas++;  
  
$resultado mysql_query($consulta,$this->conexion);  
  if(!
$resultado){  
  echo 
'MySQL Error: ' mysql_error();  
  exit;  
  }  
  return 
$resultado;   
  }  
 public function 
fetch_array($consulta){   
  return 
mysql_fetch_array($consulta);  
  }  
 public function 
num_rows($consulta){   
  return 
mysql_num_rows($consulta);  
  }  
 public function 
getTotalConsultas(){  
  return 
$this->total_consultas;  
  }  
 }
?>
__________________________________________________ ______________
CODIGO DEL COMBOBOX DINAMICO EN ESTE CASO SE USO 3 PERO COMO PORDRAN VER SE PUEDEN AUMENTAR CUANTAS QUIERAN DEPENDIENDO DE LOS REQUERIMIENTOS EL ARCHIVO "combobox.php"
__________________________________________________ ______________
Código PHP:
<?php include("mysql.php");

$db = new MySQL();
$consulta_pais $db->consulta("SELECT * FROM pais");  
echo 
'<html>';
echo 
'<form method="post" action="combobox.php">'

$pais=$_POST['pais'];
$departamentos=$_POST['departamentos'];
$distrito=$_POST['distrito'];
            
echo 
'<select name="pais"   onChange="submit()" style="position:absolute;left:14px;top:5px;width:186px;font-family:Times New Roman;font-size:16px;z-index:0">';
if (
$db->num_rows($consulta_pais)>0){
echo 
"<option value= '$pais'>".$pais.'</option>';
while (
$resultado=$db->fetch_array($consulta_pais)){ echo '<option value= "'.$resultado['pais'].'">'.$resultado['pais'].'</option>';
}
}
echo 
'</select>';
echo 
'<br>';
                                
$consulta_cod_pais $db->consulta("SELECT idp FROM pais WHERE pais='$pais'");
$resultado_cod_pais=$db->fetch_array($consulta_cod_pais);
$cod_pais=$resultado_cod_pais['idp'];
$consulta_departamento $db->consulta("SELECT * FROM dep where pais_idp='$cod_pais'");
    
    
echo 
'<select name="departamentos"   onChange="submit()" style="position:absolute;left:14px;top:35px;width:186px;font-family:Times New Roman;font-size:16px;z-index:1">';
if (
$db->num_rows($consulta_departamento)>0){
echo 
"<option value= '$departamentos'>".$departamentos.'</option>';
while (
$resultado=$db->fetch_array($consulta_departamento)){ echo '<option value= "'.$resultado['departamento'].'">'.$resultado['departamento'].'</option>';
}
}
echo 
'</select>';
echo 
'<br>';
            
$consulta_cod_departamento $db->consulta("SELECT iddep FROM dep WHERE departamento='$departamentos'");
$resultado_cod_departamento=$db->fetch_array($consulta_cod_departamento);
$cod_departamento=$resultado_cod_departamento['iddep'];
$consulta_distrito $db->consulta("SELECT * FROM distrito where dep_iddep='$cod_departamento'");
            
            
echo 
'<select name="distrito" onChange="submit()"style="position:absolute;left:14px;top:65px;width:186px;font-family:Times New Roman;font-size:16px;z-index:2">';
if (
$db->num_rows($consulta_distrito)>0){
echo 
"<option value= '$distrito'>".$distrito.'</option>';
while (
$resultado=$db->fetch_array($consulta_distrito)){ echo '<option value= "'.$resultado['distrito'].'">'.$resultado['distrito'].'</option>';
}
}
echo 
'</select>';
        
echo 
'</html>';
echo 
'</form>';
?>

Última edición por jam1138; 07/06/2008 a las 16:07 Razón: Intendo por mejorar la presentación