Foros del Web » Programando para Internet » PHP »

Combos de select

Estas en el tema de Combos de select en el foro de PHP en Foros del Web. Hola: Estoy desarrollando un sitio web y he tenido un conflicto que hace mas de dos dias en lo cual estoy trabado. El tema es ...
  #1 (permalink)  
Antiguo 10/07/2010, 18:38
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 14 años, 6 meses
Puntos: 0
Combos de select

Hola:
Estoy desarrollando un sitio web y he tenido un conflicto que hace mas de dos dias en lo cual estoy trabado.
El tema es que hice una funcion de php con ajax de tres combos (Rubro, subrubro, articulo), los primeros dos combos que seria (Rubro y subrubro funciona correctamente), el conflicto esta en el select de articulo donde es que no produce ningun resultado y ni tampoco sale error, aqui les dejo la funcion completa.

<?php
require('../includes/xajax/xajax_core/xajax.inc.php');
//include("..\includes\procs.php");
include_once("..\includes\clases.php");
$xajax = new xajax();
$xajax->configure('javascript URI', '../includes/xajax');
$xajax->setCharEncoding('ISO-8859-1');
$xajax->configure('decodeUTF8Input',true);

//************************************************** ************************************************** **
function cargo_rubros(){
//************************************************** ************************************************** **
$obj_Rubro=new sQuery();
$resrubro=$obj_Rubro->executeQuery("select idrubro,nombre from rubros order by orden,nombre");
?>
<select name='idrubro' onChange="xajax_cargo_subrubros(document.form1.idr ubro.options[document.form1.idrubro.selectedIndex].value)">
<option value='0'>Elige</option>
<?
while($registro=mysql_fetch_row($resrubro))
{ echo "<option value='".$registro[0]."'>".$registro[1]."</option>"; }
?> </select>
<?
}

//************************************************** ************************************************** **
function cargo_subrubros($querubro){
//************************************************** ************************************************** **
$respuesta = new xajaxResponse();
if ($querubro==0){
$nuevo_select = '<select name="idsubrubro" onChange="xajax_cargo_articulos(document.form1.ids ubrubro.options[document.form1.idsubrubro.selectedIndex].value)">
<option value=0>Elige</option>
</select>
';
}else{
$nuevo_select = genero_select_subrubros($querubro);
}
$respuesta->assign("combinado_subrubros","innerHTML",$nuevo _s elect);
return $respuesta;
}
$xajax->registerFunction("cargo_subrubros");
$xajax->processRequest();
//************************************************** ************************************************** **
function cargo_articulos($quesubrubro){
//************************************************** ************************************************** **
$respuesta = new xajaxResponse();
if ($quesubrubro==0){
$nuevo_select = '<select name="idarticulo">
<option value=0>Elige</option>
</select>
';
}else{
$nuevo_select = genero_select_articulos($quesubrubro);
}
$respuesta->assign("combinado_articulos","innerHTML",$nuevo _s elect);
return $respuesta;
}
$xajax->registerFunction("cargo_articulos");
$xajax->processRequest();

//************************************************** ************************************************** **
function genero_select_subrubros($querubro){
//************************************************** ************************************************** **
$obj_Subrubro=new sQuery();
$ressubrubro=$obj_Subrubro->executeQuery("select idsubrubro,nombre from subrubros where idrubro=0 or idrubro=".$querubro." order by orden,nombre");
$nuevo_select = "<select name='idsubrubro' onChange="xajax_cargo_articulos(document.form1.ids ubrubro.options[document.form1.idsubrubro.selectedIndex].value)">";
$nuevo_select .= '<option value="'. 0 .'">'.Elige.'</option>';
while($registro_mod=mysql_fetch_row($ressubrubro)) {
$nuevo_select .= '<option value="' . $registro_mod[0] . '">' . $registro_mod[1] . '</option>';
}
$nuevo_select .= "</select>";
return $nuevo_select;
}
//************************************************** ************************************************** **
function genero_select_articulos($quesubrubro){
//************************************************** ************************************************** **
$obj_Articulo=new sQuery();
$resarticulo=$obj_Articulo->executeQuery("select idarticulo,nombre from articulos where idsubrubro=0 or idsubrubro=".$quesubrubro." order by orden,nombre");
$nuevo_select = "<select name='idarticulo'>";
$nuevo_select .= '<option value="'. 0 .'">'.Elige.'</option>';
while($registro_mod=mysql_fetch_row($resarticulo)) {
$nuevo_select .= '<option value="' . $registro_mod[0] . '">' . $registro_mod[1] . '</option>';
}
$nuevo_select .= "</select>";
return $nuevo_select;
}


?>






<html>
<head>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<META HTTP-EQUIV="Content-Type" CONTENT="text/html;charset=ISO-8859-1">
<title>Select Dimamicos con XAJAX</title>
<?
//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
//$xajax->printJavascript("xajax/");
$xajax->printJavascript();
?>
</head>
<body>
<form name="form1">
Rubro:
<br>
<? cargo_rubros(); ?>

<br>
<br>
Subrubro:
<div id="combinado_subrubros">
<select name="idsubrubro">
<option value=0>Elige</option>
</select>
</div>


<br>
<br>
Articulo:
<div id="combinado_articulos">
<select name="idarticulo">
<option value=0>Elige</option>
</select>
</div>

</form>
</body>
</html>

Agradezco su ayuda.
  #2 (permalink)  
Antiguo 10/07/2010, 19:22
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Combos de select

POST REPETIDO!!!: http://www.forosdelweb.com/f18/selec...-xajax-823810/(favor no repetir post)
Aclaratoria
: XAJAX es un framework php para manejo rápido de ajax, Xajax no es AJAX

¿has leído algún tutorial sobre xajax?, ¿sabes que es AJAX?, en el código anterior no se esta implementando adecuadamente la funcionalidad de xajax, y es por ello que no funciona, además en las funciones registradas por XAJAX no puedes embeber HTML

ejemplo simple de xajax:
Código PHP:
<?php
@session_start();

    require_once(
"../control/main_control.inc.php");//aqui se incluyemn la libreria xajax y la capa de abstracción de base de datos
    
$xajax = new xajax();
    
$xajax->configure('decodeUTF8Input',true);
    
    
//carga un select de empleados
    
function cargar_empleados($id_empresa,$id_empleado=null,$c=null){
        
$r = new xajaxResponse();
        
$r->setCharacterEncoding('UTF-8');
        if(
$c==null){
            
$c=new connection();
            
$c->open();
        }
        
$rece=$c->tabla_empleado->doSelect($c,new criteria(sqlEQUAL,'id_empresa',$id_empresa))->getAssoc('id_empleado','cedula_nombre_empleado');
        
$r->assign('capa_id_empleado',inner,inputSelect('id_empleado',$rece,$id_empleado));
        return 
$r;
    }
    
    
//REGISTRANDO LAFUNCION DE XAJAX:
    
$xajax->register(XAJAX_FUNCTION,'cargar_empleados');
    
$xajax->processRequest();
        
?>

<html>
    <head>
        <?php 
            includeMeta
();
            
includeScripts();            
            
$xajax->printJavascript($spath.'control/lib/xajax/');
            
?>
        <link rel="stylesheet" type="text/css" href="css/sa_general.css" />
        <title>example</title>

    </head>
    <body>
        <div id="capa_id_empleado"></div>
        <!--
        en javascript las funciones XAJAX llevan el prefijo "xajax_" :ejemplo: xajax_nameFunction
        -->
        <a href="#" onclick="xajax_cargar_empleados(1);">ejemplo de llamada a xajax</a>
    </body>
</html>

Última edición por maycolalvarez; 10/07/2010 a las 19:45
  #3 (permalink)  
Antiguo 10/07/2010, 19:46
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Combos de select

Cita:
Iniciado por maycolalvarez Ver Mensaje
Aclaratoria: XAJAX es un framework php para manejo rápido de ajax, Xajax no es AJAX

¿has leído algún tutorial sobre xajax?, ¿sabes que es AJAX?, en el código anterior no se esta implementando adecuadamente la funcionalidad de xajax, y es por ello que no funciona, además en las funciones registradas por XAJAX no puedes embeber HTML

ejemplo simple de xajax:
Código PHP:
<?php
@session_start();

    require_once(
"../control/main_control.inc.php");//aqui se incluyemn la libreria xajax y la capa de abstracción de base de datos
    
$xajax = new xajax();
    
$xajax->configure('decodeUTF8Input',true);
    
    
//carga un select de empleados
    
function cargar_empleados($id_empresa,$id_empleado=null,$c=null){
        
$r = new xajaxResponse();
        
$r->setCharacterEncoding('UTF-8');
        if(
$c==null){
            
$c=new connection();
            
$c->open();
        }
        
$rece=$c->tabla_empleado->doSelect($c,new criteria(sqlEQUAL,'id_empresa',$id_empresa))->getAssoc('id_empleado','cedula_nombre_empleado');
        
$r->assign('capa_id_empleado',inner,inputSelect('id_empleado',$rece,$id_empleado));
        return 
$r;
    }
    
    
//REGISTRANDO LAFUNCION DE XAJAX:
    
$xajax->register(XAJAX_FUNCTION,'cargar_empleados');
    
$xajax->processRequest();
        
?>

<html>
    <head>
        <?php 
            includeMeta
();
            
includeScripts();            
            
$xajax->printJavascript($spath.'control/lib/xajax/');
            
?>
        <link rel="stylesheet" type="text/css" href="css/sa_general.css" />
        <title>example</title>

    </head>
    <body>
        <div id="capa_id_empleado"></div>
        <!--
        en javascript las funciones XAJAX llevan el prefijo "xajax_" :ejemplo: xajax_nameFunction
        -->
        <a href="#" onclick="xajax_cargar_empleados(1);">ejemplo de llamada a xajax</a>
    </body>
</html>
Disculpame hubo un mal tripeo, el codigo que copie es una funcion que hice de xajax, los dos primeros combos funciona bien, el tema es el tercero que no hace nada, estoy casi seguro que es una minima dificultad talvez un punto o coma que no me doy cuenta y me pincha el funcionamiento del tercer select.

Te agradezco muchisimo si me podes ayudar a darme cuenta del error
Gracias.
  #4 (permalink)  
Antiguo 10/07/2010, 19:50
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Combos de select

debes de registrar una función xajax para cada combo que desees cargar dinámica mente

PD: usa <?php en vez de <? para seguir con los estándares

Última edición por maycolalvarez; 10/07/2010 a las 19:58
  #5 (permalink)  
Antiguo 10/07/2010, 19:56
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Combos de select

ahora si no entiendo nada jaja, es un tema que esta en el tercer select, funciona todo meno ese, en la base de dato esta todas las tablas creadas pero me queda el ultimo select sin funcionar
gracias
  #6 (permalink)  
Antiguo 10/07/2010, 19:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Combos de select

sorry, ya lo ví, edite el post anteror, debes de crear y registrar una función para cargar cada select, el código está muy desordenado, intenta mejorarlo un poco
  #7 (permalink)  
Antiguo 10/07/2010, 20:20
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Combos de select

Cita:
Iniciado por maycolalvarez Ver Mensaje
sorry, ya lo ví, edite el post anteror, debes de crear y registrar una función para cargar cada select, el código está muy desordenado, intenta mejorarlo un poco
seguire intentando, cualquier cosa te aviso.
gracias por tu ayuda.

Última edición por guillerm; 10/07/2010 a las 21:42 Razón: mal tripeo
  #8 (permalink)  
Antiguo 10/07/2010, 20:32
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 3 meses
Puntos: 1532
Respuesta: Combos de select

el punto es que tienes 3 selects dependientes:

articulos depende de subrubros = entonces subrubros al cambiar(onchange) debe de actualizar por completo el select articulos (aqui necesitas una función XAJAX)

subrubros depende de rubros = esta función ya la tienes, lo que no tiene es que debes de reconstruir artículos: porque si rubros hace cambiar a subrubros, subrubros debe de cambiar articulos.

conclusión:

-tu primera función xajax debe de vaciar artículos también
-la segunda función que actualice artículos debe ser llamada al onchange de subrubros

en definitiva:

artículos depende de subrubros, pero también de rubros
subrubros sólo depende de rubros

espero haberme dado a entender, nos vemos mañana si todavía tenes dudas, suerte
  #9 (permalink)  
Antiguo 11/07/2010, 16:03
 
Fecha de Ingreso: mayo-2010
Mensajes: 34
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Combos de select

Cita:
Iniciado por maycolalvarez Ver Mensaje
el punto es que tienes 3 selects dependientes:

articulos depende de subrubros = entonces subrubros al cambiar(onchange) debe de actualizar por completo el select articulos (aqui necesitas una función XAJAX)

subrubros depende de rubros = esta función ya la tienes, lo que no tiene es que debes de reconstruir artículos: porque si rubros hace cambiar a subrubros, subrubros debe de cambiar articulos.

conclusión:

-tu primera función xajax debe de vaciar artículos también
-la segunda función que actualice artículos debe ser llamada al onchange de subrubros

en definitiva:

artículos depende de subrubros, pero también de rubros
subrubros sólo depende de rubros

espero haberme dado a entender, nos vemos mañana si todavía tenes dudas, suerte
Muchas Gracias Maycolalvarez, nos estamos acercando.
Si vez el codigo el "onchange" de la tabla de subrubros para cargar los articulos esta en dos lados, en "cargo_subrubros" y en "genero_select_subrubros" esta bien asi??.
Sin embargo no los carga nunca o los carga y no los veo en la pantalla.
Soy nuevo en XAJAX, seguramente me estoy olvidando de un paso o hay alguna pavada que estoy haciendo mal, si podes te agradecería me sigas ayudando.
  #10 (permalink)  
Antiguo 11/07/2010, 18:09
 
Fecha de Ingreso: julio-2009
Mensajes: 104
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Combos de select

Muchas Gracias Maycolalvarez, nos estamos acercando.
Si vez el codigo el "onchange" de la tabla de subrubros para cargar los articulos esta en dos lados, en "cargo_subrubros" y en "genero_select_subrubros" esta bien asi??.
Sin embargo no los carga nunca o los carga y no los veo en la pantalla.
Soy nuevo en XAJAX, seguramente me estoy olvidando de un paso o hay alguna pavada que estoy haciendo mal, si podes te agradecería me sigas ayudando.
  #11 (permalink)  
Antiguo 12/07/2010, 17:25
 
Fecha de Ingreso: julio-2009
Mensajes: 104
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Combos de select

Ayuda por favor les pido
No pasa del subrubro a articulos, de rubro a subrubro funciona bien pero de subrubro a articulo no hace nada de nada. Le paso el codigo.

Codigo del combo:
//************************************************** ************************************************** **
function cargo_articulos($quesubrubro){
//************************************************** ************************************************** **
$respuesta = new xajaxResponse();
if ($quesubrubro==0){
$nuevo_select = "<select name='idarticulo'><option value=0>Elige</option></select>";
}else{
$nuevo_select = genero_select_articulos($quesubrubro);
}
$respuesta->assign("combinado_articulos","innerHTML",$nuevo_s elect);
return $respuesta;
}
$xajax->registerFunction("cargo_articulos");
$xajax->processRequest();

//************************************************** ************************************************** **
function genero_select_articulo($quearticulo){
//************************************************** ************************************************** **
$obj_Articulo=new sQuery();
$resarticulo=$obj_Articulo->executeQuery("select idarticulo,nombre from subarticulo where idrubro=0 or idrubro=".$quearticulo." order by orden,nombre");
$nuevo_select = "<select name='idarticulo' onChange='xajax_cargo_articulo(document.form1.idar ticulo.options[document.form1.idarticulo.selectedIndex].value)' >";
$nuevo_select .= '<option value="'. 0 .'">'.Elige.'</option>';
while($registro_art=mysql_fetch_row($resarticulo)) {
$nuevo_select .= '<option value="' . $registro_art[0] . '">' . $registro_art[1] . '</option>';
}
$nuevo_select .= "</select>";
return $nuevo_select;
}

?>


Codigo select:

<br>
Articulos:
<div id="combinado_articulos">
<select name="idarticulos">
<option value=0>Elige</option>
</select>
</div>

</form>
</body>
</html>

Ayuda por favor gracias.

Etiquetas: combos, select
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 08:57.