Hola Amigos de Foros del Web,espero que se encuentren bien.Paso a explicarles mi situacion:Estoy apoyando a un amigo a realizar un Sistema para una Notaria,el cual esta siendo desarrollado en PHP con MySql.Yo estoy encargado de hacer el formulario de Egresos,el cual esta formado por:3 Combo Box(Tipo,Subtipo,Detalle) y dos cajas de texto.Me voy a enfocar en los combo box,ya que de estos viene mi pregunta.
Tomando un simple ejemplo: En el combo box Tipo,tendria que aparecer los siguientes datos:Servicios, Administrativos,Gastos de representación,Bancos,Planilla,IMPUESTOS.Ahora, si escogo del primer combo la opcion Servicios,quiero que en el segundo combo me aparezca lo siguiente:Servicios Publicos,Servicios Profesionales,Publicidad.
Si escogo Servicios Publicos,en el tercer combo tendria que aparecerme lo sgte:Luz,Agua y Alcantarillado,Cable,Internet,Telefonía Fija,Telefonía Móvil, Monitoreo de Alarma y asi sucesivamente con los otros datos.
Las consultas para realizar el ejemplo anterior son las sgtes:
Para Combo Box Tipo: SELECT Nº, GASTO FROM tutabla WHERE filiacion IS NULL
Para Combo Box Subtipo:SELECT t2.Nº, t2.GASTO FROM tutabla t1 INNER JOIN tutabla t2 ON t1.Nº = t2.filiacion WHERE t2.filiacion = 1;
Para Combo Box Detalle:SELECT t2.Nº, t2.GASTO FROM tutabla t1 INNER JOIN tutabla t2 ON t1.Nº = t2.filiacion WHERE t2.filiacion = 2;
Mi pregunta es la siguiente:¿Como hago para que esas consultas sirvan para cualquier caso,es decir,que sirvan para cualquier opcion escogida en cada uno de los combos,y me muestren los datos que deberian ser(eso si dependiendo de la opcion escogida)? ¿En ves de los numeros 1 y 2 tengo que colocar las variables recogidas mediante los selectores? Si es asi,¿Cuales son esas variables en este caso? Por favor,podrian ayudarme??
Para mas informacion les adjuntare el codigo que utilizo:
Formulario:
<form action="#" method="post" onsubmit="return buscarcliente()">
<td width="130" class="ewTableHeader">Tipo : </td>
<td colspan="3"><select id="tiposervicio" onchange='mostrar_descripcion()' name="servicio">
<?php foreach($array_movimientotipo as $a) :?><option value="<?php echo $a['id']?>"><?php echo $a['nombre'] ?></option><?php endforeach;?>
</select>
</td>
</form>
</tr>
<tr>
<td class="ewTableHeader">Sub-Tipo : </td>
<td colspan="3"><select id="movimiento" name="movimiento">
<?php foreach($array_movimientotipo1 as $a) :?><option value="<?php echo $a['id']?>"><?php echo $a['nombre'] ?></option><?php endforeach;?>}
</select>
</td>
</tr>
<tr>
<td class="ewTableHeader">Detalle : </td>
<td colspan="3"><select id="detalle" onchange='mostrar_detalle_servicios()' name="detalle">
<?php foreach($array_movimientotipo2 as $a) :?><option value="<?php echo $a['id']?>"><?php echo $a['nombre'] ?></option><?php endforeach;?>
</select>
</td>
</tr>
Funcion mostrar_descripcion():
function mostrar_descripcion()
{
campo1=$("#campo1").attr("value");
$.ajax({ type: "GET", url: "funciones/operacion/mostrar_descripcion.php?campo1="+campo1,
data: null, success: function(data){
document.getElementById("movimiento").parentNode.i nnerHTML=data;
//calcularmontos_concepto()
} });
}
Funcion mostrar_detalle_servicios():
function mostrar_detalle_servicios()
{
campo2=$("#campo2").attr("value");
$.ajax({ type: "GET", url: "funciones/operacion/mostrar_detalle_servicios.php?campo2="+campo2,
data: null, success: function(data){
document.getElementById("detalle").parentNode.inne rHTML=data;
//calcularmontos_concepto()
} });
}
mostrar_descripcion.php:
<?php session_start();
include "../../movimientotipo.php"; //clase movimientotipo
$o_movimientotipo = new movimientotipo(); //creamos el objeto movimientotipo
$o_movimientotipo->cargar_combo_primera_descripcion();
$array_movimientotipo=$o_movimientotipo->arrayconsulta(); ?>
<select id="movimiento" onChange="mostrar_detalle_servicios()" name="movimiento">
<?php if(count($array_movimientotipo)>0) { ?>
<?php foreach($array_movimientotipo as $a) :?><option value="<?php echo $a['id']?>"><?php echo $a['nombre'] ?></option><?php endforeach; ?>
<?php } ?>
</select>
mostrar_detalle_servicios.php:
<?php session_start();
include "../../movimientotipo.php"; //clase movimientotipo
$o_movimientotipo = new movimientotipo(); //creamos el objeto movimientotipo
$o_movimientotipo->cargar_combo_segunda_descripcion();
$array_movimientotipo=$o_movimientotipo->arrayconsulta(); ?>
<select id="detalle" name="detalle">
<?php if(count($array_movimientotipo)>0) { ?>
<?php foreach($array_movimientotipo as $a) :?><option value="<?php echo $a['id']?>"><?php echo $a['nombre'] ?></option><?php endforeach; ?>
<?php } ?>
</select>
Y por ultimo,la clase donde realizo las consultas a la Base de Datos:
<?php
require_once("conexion.php");
class movimientotipo
{
private $id;
private $nombre;
private $filiacion;
private $devolucion;
private $observacion;
private $tipo;
public function getId() {
return $this->id;
}
public function setId($id) {
$this->id = $id;
}
public function getNombre() {
return $this->nombre;
}
public function setNombre($nombre) {
$this->nombre = $nombre;
}
public function getFiliacion() {
return $this->filiacion;
}
public function setFiliacion($filiacion) {
$this->filiacion = $filiacion;
}
public function getDevolucion() {
return $this->devolucion;
}
public function setDevolucion($devolucion) {
$this->devolucion=$devolucion;
}
public function getObservacion() {
return $this->observacion;
}
public function setObservacion($observacion) {
$this->observacion=$observacion;
}
public function getTipo() {
return $this->tipo;
}
public function setTipo($tipo) {
$this->tipo=$tipo;
}
public function movimientotipo(){
$v= array(0,"","","","","");
$numargs = func_num_args();
if($numargs)
{
for ($i=0; $i<$numargs; $i++) :
$v[$i]=func_get_arg($i);
endfor;
}
$this->id=$v[0];
$this->nombre=$v[1];
$this->filiacion=$v[2];
$this->devolucion=$v[3];
$this->observacion=$v[4];
$this->tipo=$v[5];
}
public function crear(){
conexion::getInstance()->consulta("insert into movimiento_tipo (id,nombre,filiacion,devolucion,observacion,tipo)
values ($this->id,$this->nombre,$this->filiacion,$this->observacion,$this->tipo)");
}
public function listar(){
conexion::getInstance()->consulta("select id,nombre,filiacion,devolucion,observacion,tipo
from movimiento_tipo");
}
public function cargar_combo_movimientotipo(){
conexion::getInstance()->consulta("select id,nombre from movimiento_tipo where nombre = 'Servicios' or nombre = 'Administrativos' or nombre = 'Gastos de Representacion' or nombre = 'Bancos' or nombre = 'Planilla' or nombre = 'Impuestos'");
//conexion::getInstance()->consulta("SELECT id,nombre FROM `movimiento_tipo` WHERE filiacion IS NULL");
}
public function cargar_combo_primera_descripcion()
{
//conexion::getInstance()->consulta(
conexion::getInstance()->consulta("select d2.id,d2.nombre from movimiento_tipo d1 INNER JOIN movimiento_tipo d2 ON d1.id=d2.filiacion where d2.filiacion=$this->d1.filiacion");
}
public function cargar_combo_segunda_descripcion()
{
conexion::getInstance()->consulta("select id,nombre from movimiento_tipo");
}
public function buscar(){
conexion::getInstance()->consulta("select * from movimiento_tipo
where id = $this->id ");
$array=$this->arrayconsulta();
if(count($array >0)){
foreach($array as $v):
$this->id=$v[0];
$this->nombre=$v[1];
$this->filiacion=$v[2];
$this->devolucion=$v[3];
$this->observacion=$v[4];
$this->tipo=$v[5];
endforeach;
}
}
public function actualizar_nombre(){
$sql = "update movimiento_tipo set nombre=$this->nombre
where id = $this->id ";
conexion::getInstance()->consulta($sql);
}
public function arrayconsulta(){ return conexion::getInstance()->arrayconsulta(); }
public function numregistros(){ return conexion::getInstance()->numreg(); }
public function listarnombres(){ return conexion::getInstance()->listarnombres(); }
public function numerocampos(){ return conexion::getInstance()->numerocampos(); }
public function cerrarconexion(){ return conexion::getInstance()->cerrar();}
}
?>