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.
Tengo tres combos:Tipo,Subtipo,Detalle.En el primer combo tendrian que aparecer,segun la tabla anterior,los sgtes datos:Servicios,Administrativos,Gastos de representación,Bancos,Planilla,IMPUESTOS. Ahora,tomando un ejemplo, si yo escogiera la opcion Servicios(1), en el segundo combo tendria que aparecerme los sgtes datos:Servicios Públicos(1),Servicios Profesionales(1),Publicidad(1).Luego,si yo escogo Servicios Publicos(2),en el tercer combo tendrian que aparecerme las sgtes opciones:Luz(2),Agua y Alcantarillado(2),Cable(2),Internet(2),Telefonía Fija(2),Telefonía Móvil(2),Monitoreo de Alarma(2);Si hubiera escogido en el segundo combo Servicios Profesionales(10),en el tercer combo tendria que aparecerme Servicios Jurídicos Cevallos(10),Servicios Jurídicos Otros(10),Servicios Contables(10),Servicios Mantenimiento y reparación(10),Servicios Informáticos(10).Por ultimo,si hubiera escogido Publicidad(16),en el tercer combo tendrian q aparecerme las sgtes opciones:Diarios(16),Revistas(16),Televisión(16),P aginas Amarillas(16),Web(16).
Adjunto la tabla de los datos:
1 Servicios NULL
2 Servicios Públicos 1
3 Luz 2
4 Agua y Alcantarillado 2
5 Cable 2
6 Internet 2
7 Telefonía Fija 2
8 Telefonía Móvil 2
9 Monitoreo de Alarma 2
10 Servicios Profesionales 1 1
11 Servicios Jurídicos Cevallos 10
12 Servicios Jurídicos Otros 10
13 Servicios Contables 10
14 Servicios Mantenimiento y reparación 10
15 Servicios Informáticos 10 1
16 Publicidad 1 1
17 Diarios 16
18 Revistas 16
19 Televisión 16
20 Paginas Amarillas 16
21 Web 16
22 Administrativos NULL
23 Local 22 1
24 Alquiler 23
25 Decoración y ornato del Local 23
26 Material para Mantenimiento o reparación 23
27 Correspondencia y Traslado 22
28 Flete 27
29 Correos 27
30 Courrier 27
31 Mudanza 27
32 Trámites
33 Registros Públicos
34 Otra entidad
35 Gastos de representación NULL 1
36 Movilidad 35
37 Combustible 36
38 Estacionamiento 36
39 Taxi 36
40 Pasajes 36
41 Repuestos 36
42 Viaticos 35
43 Viáticos Fijos 42
44 Viáticos a rendir cuentas 42 1
45 Alimentos 35
46 Comida de Negocios 45
47 Refrigerio 45
48 Comida en Viaje de trabajo 45
49 Comida para el personal 45
50 Alimentos para celebración Empresa 45
51 Alojamiento 35
52 Alojamiento para empleados 51
53 Alojamiento para invitados 51
54 Bancos NULL
55 BCP 54
56 Depósito a Cta cte MN 570-XXXXXXXX 55
57 Depósito a Cta cte ME 570-XXXXXXXX 55
58 BBVA 54
59 Depósito Cta cte MN 011-XXXXXXXX 58
60 Depósito Cta cte ME 011-XXXXXXXX 58
61 Scotiabank 54
62 Depósito CTA Ahorros xxxxxxx 61
63 Planilla NULL 1
64 Sueldo 63
65 Asignación Temporal 64
66 Adelanto sueldo 64
67 Amortización sueldo 64
68 Sueldo completo 64
69 CTS 63
70 Pago CTS en cuenta de trabajador 69
71 Pago CTS a trabajador 69
72 Liquidación 63
73 Vacaciones 72
74 Liquidación parcial 72
75 Liquidación Total 72
76 AFP 63
77 Horizonte 76
78 Integra 76
79 Profuturo 76
80 Prima 76
81 IMPUESTOS NULL
82 SUNAT 81
83 Pago del Mes 82
84 Fraccionamiento 82
85 Multas 82
86 SATT 81
87 INMUEBLE 86
88 VEHICULO 86
89 MULTAS 86
Mi pregunta es la siguiente:¿Como hago para realizar consultas q 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 poner los numeros 1,2,10,16 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);
}
}
?>