Foros del Web » Programando para Internet » PHP »

Select dinamico PHP y Javascript

Estas en el tema de Select dinamico PHP y Javascript en el foro de PHP en Foros del Web. Hola soy nueva en este foro y quisiera saber si ustedes me pueden ayudar con un problemita que tengo con unos selects dependientes en PHP ...
  #1 (permalink)  
Antiguo 25/02/2013, 11:46
 
Fecha de Ingreso: febrero-2013
Ubicación: Ensenada BC, Mexico.
Mensajes: 5
Antigüedad: 11 años, 2 meses
Puntos: 0
Select dinamico PHP y Javascript

Hola soy nueva en este foro y quisiera saber si ustedes me pueden ayudar con un problemita que tengo con unos selects dependientes en PHP y Mysql.

Tengo 3 selects que dependen de lo que se seleccione en el primero para mostrar los datos, eso me funciona muy bien, el problema es cuando quiero insertarlos a la base de datos, solo inserta los ID de las opciones y no inserta el nombre.

Estos son los codigos que tengo:

Este archivo se llama conDDLDependencia y es el que arma el primer select:

Código PHP:
<?php
include_once("DBManager.php"); 

$con = new DBManager;

    if(
$con->conectar()==true)
    {

        
$query="SELECT * from tbramo order by nomRamo";

        
$result mysql_query ($query);

        echo 
"<select name=txtRamo id=ramo style=width:200px;>";


    echo
"<option value=\"0\">Selecciona</option> ";

        while(
$nt=mysql_fetch_array($result)){
        echo 
"<option value=$nt[idRamo]>$nt[nomRamo]</option>";

        }
        echo 
"</select>";
    }
    
?>
Este otro se llama action.php y es el que arma los 2 selects dependientes:

Código PHP:
<?php
include_once("DBManager.php"); 

$con = new DBManager;

if(
$con->conectar()==true)
{

function 
getDependencias(){
  
$sql="select * from tbdependencia where idRamo=".$_POST["idramo"];
  
$result=mysql_query($sql);
  
$resp="";
  if(
$result){
    if(
mysql_num_rows($result)>0){
        
$resp.="<option value=''> Seleccione Dependencia </option>";
        while(
$r=mysql_fetch_object($result)){
          
$resp.="<option value='".$r->idDepen."'>".$r->nombDepen."</option>";
            }
    }else 
$resp.="<option value=''> Seleccione Dependencia </option>";
    }else 
$resp="ERROR";
    echo 
$resp;
}

function 
getDepartamentos(){
    
$sql="select * from tbdepartamento where idDepen=".$_POST["iddependencia"];
    
$result=mysql_query($sql);
    
$resp="";
    if(
$result){
        if(
mysql_num_rows($result)>0){            
            
$resp.="<option value=''> Seleccione departamento </option>";
            while(
$r=mysql_fetch_object($result)){
                
$resp.="<option value='".$r->idDepto."'>".$r->nomDepto."</option>";
            }
        }else 
$resp="<option value=''> Seleccione departamento </option>";
    }else 
$resp="ERROR";
    echo 
$resp;
}
 
if(
$_POST){
    switch(
$_POST["tarea"]){
    case 
"listDependencia":getDependencias();
            break;
    case 
"listDepartamento":getDepartamentos();
            break;
    }
}
}
?>
y por ultimo este es un javascript, procesar.js:
Código:
$(document).ready(function(){
        $("#ramo").change(function(){
			$("#dependencia").empty().attr("disabled","disabled");
            $("#departamento").empty().attr("disabled","disabled");
            if($(this).val()!=""){
                var dato=$(this).val();
                $("#imgdependencia").show();
                $.ajax({
                    type:"POST",
                    dataType:"html",
                    url:"action.php",
                    data:"idramo="+dato+"&tarea=listDependencia",
                    success:function(msg){
                        $("#dependencia").empty().removeAttr("disabled").append(msg);
                        $("#imgdependencia").hide();
                    }
                });
            }else{
                $("#dependencia").empty().attr("disabled","disabled");
                $("#departamento").empty().attr("disabled","disabled");
            }
        });
        $("#dependencia").change(function(){			
            if($(this).val()!=""){
                var dato=$(this).val();
                $("#imgdepartamento").show();
                $.ajax({
                    type:"POST",
                    dataType:"html",
                    url:"action.php",
                    data:"iddependencia="+dato+"&tarea=listDepartamento",
                    success:function(msg){                        
                        $("#departamento").empty().removeAttr("disabled").append(msg);
                        $("#imgdepartamento").hide();
                    }
                });
            }else{
                $("#departamento").empty().attr("disabled","disabled");
            }
        });
    });
En la BD estan de la siguiente manera:

tbramo:
idRamo, nomRamo.

tbdependencia:
idDepen, idRamo, nombDepen

tbdepartamento:
idDepto, idRamo, idDepen, nomDepto

Al momento de insertar los selects se inserta solo el ID, la comparacion para que puedan salir los datos en los selects dependientes es por medio del ID, y si la hago por medio del nombre no me muestra ningun dato.

Espero haberme explicado bien, es mi primera vez por aqui
  #2 (permalink)  
Antiguo 25/02/2013, 12:32
Avatar de cuasatar  
Fecha de Ingreso: junio-2011
Ubicación: Bogotá Rock City
Mensajes: 1.230
Antigüedad: 12 años, 10 meses
Puntos: 181
Respuesta: Select dinamico PHP y Javascript

No me he tomado la molestia de leer todo el post pero creo entender cual es tu inconveniente. Si tienes unos select dependientes cualquiera, en este caso los departamentos.

Código PHP:
$sql="select * from tbdepartamento where idDepen=".$_POST["iddependencia"]; 
Código PHP:
 while($r=mysql_fetch_object($result)){
                
$resp.="<option value='".$r->idDepto."'>".$r->nomDepto."</option>";
            } 
Aquí no veo como estas manipulando el formulario para guardar los datos (es decir el action) pero por tu código voy a suponer que lo estas haciendo en el mismo lado. (Es decir que el action esta vacio y simplemente compruebas que se haya mandado el formulario, posiblemente con una variable oculta).

Si recibes un id de departamento y quieres guardar el nombre antes de ingresar los datos en la tabla x tendrias que coger ese valor de post, hacer la consulta en la tabla de departamentos por el id y recuperar el nombre y ahi si podrias posteriormente hacer el insert en la otra tabla.

Yo en lo personal creo que es un poco redudante porque igual si tienes una tabla de departamentos con que tengas su id puedes posteriormente recuperar el valor del departamento haciendo un inner join entre tablas. Es una sugerencia.
__________________
Blog de humor http://elcuasatar.net63.net/
  #3 (permalink)  
Antiguo 25/02/2013, 12:33
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Select dinamico PHP y Javascript

veo que tienes inconsistencias en el manejo del HTML, recuerda que si generas un HTML malo, el resultado será malo.

define un estandar para trabajar, si php te permite usar comillas simples o dobles, puedes elegir cual de las mismas debes usar en el HTML, por lo que te recomiendo usar simples en PHP y dobles en el HTML resultante.

Te digo esto porque además de ello, en el primer select NO especificas comillas para el HTML:

Código PHP:
echo "<select name=txtRamo id=ramo style=width:200px;>"
ideal:

Código PHP:
echo '<select name="txtRamo" id="ramo" style="width:200px;">'
corrige y normaliza adecuadamente el código y así podrás descartar que sea la fuente del problema
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #4 (permalink)  
Antiguo 26/02/2013, 10:43
 
Fecha de Ingreso: febrero-2013
Ubicación: Ensenada BC, Mexico.
Mensajes: 5
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Select dinamico PHP y Javascript

Si es un poco redundante, lo que pasa es que el sistema es de registro de usuarios y equipos, es por eso que tengo una tabla de departamentos, ramos y dependencias, donde en esas tablas solo vienen los nombres para que los tomen los selects, y existe una tabla equipo que es donde se registran los datos del equipo de dicha persona, y ahi debe de ir registrado tambien el ramo, departamento y dependencia donde trabaja el mismo.

Muchas gracias por sus sugerencias, las aplicare para resolver mi problema.

Etiquetas: dinamico, html, javascript, mysql, select, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:10.