Hola gente de Foros del Web,espero que se encuentren bien,paso a explicarles mi problema:Estoy apoyando a un amigo con un sistema que se encuentra desarrollado en php con mysql.Me ha dejado crear un formulario que tenga las siguientes caracteristicas:Debe tener los siguientes campos con su respectiva lista desplegable:Tipo,Subtipo,Detalle.
En la lista desplegable Tipo,tendria que aparecer los siguientes datos:Servicios, Administrativos,Gastos de representación,Bancos,Planilla,IMPUESTOS.Ahora,por ejemplo, si escogo de la lista desplegable Tipo,quiero que en la segunda lista desplegable(Subtipo) me aparezca lo siguiente:Servicios Publicos,Servicios Profesionales,Publicidad.
Si escogo Servicios Publicos,en la tercera lista desplegable(Detalle) 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.
Para poder hacer lo anterior tengo que usar el metodo onchange.Para esto, mi compañero me ha dicho que me fije en unos archivos que son parecidos a lo que quiero hacer...Pero,hay unas partes
que no entiendo.El codigo de cada uno de los archivos lo muestro a continuacion:
Archivo operacionadd.php:
<tr>
<td class="ewTableHeader">Categoria : </td>
<td colspan="3"><select id="area" onchange='mostrar_conceptos()' name="concepto">
<?php foreach($array_categoria as $a) :?><option value="<?php echo $a['id']?>"><?php echo $a['nombre'] ?></option><?php endforeach;?>
</select>
</td>
</tr>
El metodo mostrar_conceptos() esta en una parte del codigo JavaScript que es esta:
function mostrar_conceptos(){
area=$("#area").attr("value");
$.ajax({ type: "GET", url: "funciones/operacion/mostrar_conceptos.php?area="+area,
data: null, success: function(data){
//$("#concepto").html(data);
document.getElementById("concepto").parentNode.inn erHTML=data;
calcularmontos_concepto()
} });
}
En esa funcion,hace una llamada al archivo mostrar_conceptos.php,el cual es el sgte:
<?php session_start();
include "../../concepto.php"; //clase concepto
$o_concepto = new concepto(); //creamos el objeto concepto
if(conexion::is_administrador()==1){
$o_concepto->setId_rol($_GET['area']);
}
else {
$o_concepto->setId_rol($_SESSION['ssrol']); }
$o_concepto->listar_por_categoria();//se encuentra en un archivo llamado concepto.php
$array_concepto = $o_concepto->arrayconsulta(); ?>
<select id="concepto" onchange='calcularmontos_concepto()' name="concepto">
<?php if(count($array_concepto)>0) { ?>
<?php foreach($array_concepto as $a) :?><option value="<?php echo $a['id']?>"><?php echo $a['nombre'] ?></option><?php endforeach; ?>
<?php } else { ?> <option value="0">No Existen Productos</option> <?php } ?>
</select>
Ahora,ahi llama a otro metodo llamado calcularmontos_concepto(),el cual no entiendo mucho lo q hace,y no se porque lo llama.A continuacion
el codigo de ese archivo:
function calcularmontos_concepto() {
id=document.getElementById("concepto").value;
if( document.getElementById('concepto').value == 0)
{ document.getElementById('cantidad').disabled = true ; }
else
{ document.getElementById('cantidad').disabled = false ; }
cantidad=document.getElementById("cantidad").value ;
peticion_http = crearajax();
// Preparar la funcion de respuesta
peticion_http.onreadystatechange = muestraContenido;
// Realizar peticion HTTP
peticion_http.open('GET', 'calcularmonto.php?idconcepto='+id, true);
peticion_http.send(null);
function muestraContenido() {
if(peticion_http.readyState == 4) {
if(peticion_http.status == 200) {
//alert(peticion_http.responseText);
var msj = peticion_http.responseText.split('__');
document.getElementById("monto").value=msj[0];
document.getElementById("preferencial").innerHTML= "Minimo : "+msj[1];
if(msj[2]==3)
{
document.getElementById("monto").readOnly=true;
}
else
{
document.getElementById("monto").readOnly=false;
}
}
}
}
}
A continuacion listar_por_categoria:Este se encuentra en una clase llamada concepto.php
public function listar_por_categoria(){
$sql = "select co.id as id, CONCAT(pr.nombre,'-',me.nombre) as nombre from concepto co inner join
producto pr on co.id_producto = pr.id
inner join medida me on co.id_medida = me.id
where id_producto_categoria = $this->id_rol order by pr.nombre";
conexion::getInstance()->consulta($sql);
}
Todo el codigo anterior me muestra algo parecido a lo que yo quiero hacer,pero,no lo entiendo muy bien. Quisiera pedirles que si no llegan a entender el codigo que he colocado,podrian darme alguna forma de comunicarme con ustedes,ya sea por correo,msn,facebook,etc.De verdad necesito ayuda por favor.