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>';
?>