Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/06/2008, 15:40
omarwhang
 
Fecha de Ingreso: abril-2008
Mensajes: 4
Antigüedad: 16 años, 11 meses
Puntos: 1
combobox anidados sin recargar en php

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
__________________________________________________ _______________

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

--
-- 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:1 86px;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:1 4px;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>';
?>
Cualquier duda preguntar en el foro.