Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Combobox Combinados

Estas en el tema de Combobox Combinados en el foro de Frameworks JS en Foros del Web. Hola compañeros, les escribo por una duda que tengo,busque informacion sobre como combinar combobox, dependiendo de la seleccion del primer combobox, pero no logro solucionar ...
  #1 (permalink)  
Antiguo 02/03/2011, 20:29
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 11 meses
Puntos: 2
Combobox Combinados

Hola compañeros, les escribo por una duda que tengo,busque informacion sobre como combinar combobox, dependiendo de la seleccion del primer combobox, pero no logro solucionar con los datos vienes de tablas distintas.

Les explico, el primer combobox me va a cargar los datos de una tabla llamada MARCAS, esa la cargo perfectamente, ahora necesito que depende de la marca me cargue en el siguiente combobox las tallas de esa marca que estan guardadas en la tabla TALLAS.

He probado algunas de la soluciones que estan en foros de FOROS DEL WEB pero no logro dar en el clavo, no se si sera xq estoy consultando 2 tablas distintas.



Espero me puedan ayudar saludos.
  #2 (permalink)  
Antiguo 02/03/2011, 20:34
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Combobox Combinados

con googlear un poco te aseguro que consigues lo que deseas pero te dejo un link
select dependientes te aseguro que en el primer resultado de la busqueda encontraras la respuesta a lo que buscas, saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #3 (permalink)  
Antiguo 02/03/2011, 20:38
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Combobox Combinados

Gracias por tu respuesta Carlos

Creeme que he encontrado mucha informacion y en gran parte ha sido usando AJAX cosa que no quiero, la idea que tengo es usar todo en PHP, pero la mayoria de las soluciones han sido con datos estaticos que al cambiarlo por mi consulta no funcionan correctamente, modificando y modificando ejemplos logre hacerlo, pero solo me falta que me cargue los datos correctos de mi consulta.

Saludos
  #4 (permalink)  
Antiguo 02/03/2011, 20:45
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años, 8 meses
Puntos: 461
Respuesta: Combobox Combinados

porque no quieres utilizar ajax???? pues ajax es la solucion mas optima a tu problema, ya que con php solo creo que es imposible porque necesitas procesar el dato del primer combo en una consulta para llenar el segundo, una vez lo vi con javascript y php en la misma pagina pero no me parece muy bueno y creo mucho codigo basura a mi gusto en lo que vi, entonces porque no usar algo que te ayuda a hacer lo que necesitas de una manera facil y optima??
saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way
  #5 (permalink)  
Antiguo 02/03/2011, 21:11
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Combobox Combinados

Ok Carlos de verdad gracias por tu ayuda, estoy probando los codigos AJAX que consegui googleando y te doy toda la razon, es muy optima la solucion usando AJAX, haciendo con JavaScript es engorroso al igual que con PHP, me di por vencido con eso, intentare con AJAX y te comento como me fue.

Saludos
  #6 (permalink)  
Antiguo 03/03/2011, 10:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Tema movido desde PHP a AJAX
  #7 (permalink)  
Antiguo 03/03/2011, 17:47
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Combobox Combinados

Hola de nuevo, Carlos hice lo que me comentaste y use AJAX, me decidi a empezar con eso para algunas cosas, pero ahora tengo una duda, use uno de los ejemplos que estan en la pagina de formatoweb.com.ar y me funciono correctamente.

Le agregue los datos de mi bases de datos y de verdad que me encanto su funcionamiento.

La duda que tengo ahora es como guardar esos datos en una tabla de mysql, me explico:

Los 2 combos dependientes se cargan dinamicamente, y al tener dichos datos escogidos quisiera enviarlos a una tablar para guardar, el formulario va a crecer por que sera una orden de compra de calzados, lo unico que usara AJAX seran los combos dependientes, me pregunto si eso se puede hacer? los demas campos en html y php a exepcion de los 2 combos. Les coloco aqui el codigo de los archivos que estoy usando.

select_dependientes.php

Código PHP:

<?php
function generaPaises()
{
    include 
'conexion.php';
    
conectar();
    
$consulta=mysql_query("SELECT esc_codigo, esc_talaso FROM tallasportmax");
    
desconectar();

    
// Voy imprimiendo el primer select compuesto por los paises


echo"<table width='295' border='0'>";
echo
"<tr>";
    echo
"<td>";
    echo 
"<select name='marcas' id='marcas' onChange='cargaContenido(this.id)'>";
    echo 
"<option value='0'>Elige</option>";
    while(
$registro=mysql_fetch_row($consulta))
    {
        echo 
"<option value='".$registro[1]."'>".$registro[1]."</option>";
    }
    echo 
"</select>";
    echo
"</td>";
echo
"</tr>";
echo
"</table>";

}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">

<html lang="es">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>AJAX, Ejemplos: Combos (select) dependientes, codigo fuente - ejemplo</title>
<link rel="stylesheet" type="text/css" href="select_dependientes.css">
<script type="text/javascript" src="select_dependientes.js"></script>
</head>

<body>

<form action="insertar.php" method="post">

<table width="40" border="0">
            
            <div id="demo" style="width:600px;">
                <tr>
                <td>
                   <div id="demoIzq"><?php generaPaises(); ?></div>
                </td>
                </tr>
                                            
               <td> 
                <div id="demoDer">
                    <select disabled="disabled" name="escalas" id="escalas">
                        <option value="0">Selecciona opci&oacute;n...</option>
                    </select>
                </div>
                </td>
                          
                
            </div>
</table>
        
             <input type="submit" value="Registrar" />
        
</form>    
</body>
</html>
select_dependientes_proceso.php

Código PHP:


<?php
// Array que vincula los IDs de los selects declarados en el HTML con el nombre de la tabla donde se encuentra su contenido
$listadoSelects=array(
"marcas"=>"tallasportmax",
"escalas"=>"tallasportmax"
);

function 
validaSelect($selectDestino)
{
    
// Se valida que el select enviado via GET exista
    
global $listadoSelects;
    if(isset(
$listadoSelects[$selectDestino])) return true;
    else return 
false;
}

function 
validaOpcion($opcionSeleccionada)
{
    
// Se valida que la opcion seleccionada por el usuario en el select tenga un valor numerico
    
if(is_numeric($opcionSeleccionada)) return true;
    else return 
false;
}

$selectDestino=$_GET["select"]; 
$opcionSeleccionada=$_GET["opcion"];

//if(validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
//{
    
$tabla=$listadoSelects[$selectDestino];
    include 
'conexion.php';
    
conectar();
    
//$consulta=mysql_query("SELECT esc_codigo, esc_descri FROM dpescalas") or die(mysql_error());
    
$consulta=mysql_query("SELECT esc_codigo,esc_descri,esc_depart FROM  $tabla WHERE esc_talaso='$opcionSeleccionada' 
                          ORDER BY esc_depart"
) or die(mysql_error());
    
desconectar();
    
    
// Comienzo a imprimir el select
    
echo "<select name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
    echo 
"<option value='0'>Elige</option>";
    while(
$registro=mysql_fetch_row($consulta))
    {
        
// Convierto los caracteres conflictivos a sus entidades HTML correspondientes para su correcta visualizacion
        
$registro[1]=htmlentities($registro[1]);
        
// Imprimo las opciones del select
        
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
    }            
    echo 
"</select>";
//}
?>

insertar.php


Código PHP:

<?php
include("conexion.php");

$marcas=$_POST['marcas'];
$escalas=$_POST['escalas'];

$resp mysql_query ("INSERT INTO prueba VALUES ('$marcas','$escalas')");

?>

select_dependientes.js

Código Javascript:
Ver original
  1. function nuevoAjax()
  2. {
  3.     /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
  4.     lo que se puede copiar tal como esta aqui */
  5.     var xmlhttp=false;
  6.     try
  7.     {
  8.         // Creacion del objeto AJAX para navegadores no IE
  9.         xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  10.     }
  11.     catch(e)
  12.     {
  13.         try
  14.         {
  15.             // Creacion del objet AJAX para IE
  16.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  17.         }
  18.         catch(E)
  19.         {
  20.             if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
  21.         }
  22.     }
  23.     return xmlhttp;
  24. }
  25.  
  26. // Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
  27. var listadoSelects=new Array();
  28. listadoSelects[0]="marcas";
  29. listadoSelects[1]="escalas";
  30.  
  31. function buscarEnArray(array, dato)
  32. {
  33.     // Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
  34.     var x=0;
  35.     while(array[x])
  36.     {
  37.         if(array[x]==dato) return x;
  38.         x++;
  39.     }
  40.     return null;
  41. }
  42.  
  43. function cargaContenido(idSelectOrigen)
  44. {
  45.     // Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
  46.     var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
  47.     // Obtengo el select que el usuario modifico
  48.     var selectOrigen=document.getElementById(idSelectOrigen);
  49.     // Obtengo la opcion que el usuario selecciono
  50.     var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
  51.     // Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
  52.     if(opcionSeleccionada==0)
  53.     {
  54.         var x=posicionSelectDestino, selectActual=null;
  55.         // Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
  56.         while(listadoSelects[x])
  57.         {
  58.           selectActual=document.getElementById(listadoSelects[x]);
  59.           selectActual.length=0;
  60.            
  61.           var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
  62.           selectActual.appendChild(nuevaOpcion);    selectActual.disabled=true;
  63.           x++;
  64.         }
  65.     }
  66.     // Compruebo que el select modificado no sea el ultimo de la cadena
  67.     else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
  68.     {
  69.         // Obtengo el elemento del select que debo cargar
  70.         var idSelectDestino=listadoSelects[posicionSelectDestino];
  71.         var selectDestino=document.getElementById(idSelectDestino);
  72.         // Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
  73.         var ajax=nuevoAjax();
  74.         ajax.open("GET", "select_dependientes_proceso.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
  75.         ajax.onreadystatechange=function()
  76.         {
  77.             if (ajax.readyState==1)
  78.             {
  79.                 // Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
  80.                 selectDestino.length=0;
  81.                 var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
  82.                 selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;   
  83.             }
  84.             if (ajax.readyState==4)
  85.             {
  86.                 selectDestino.parentNode.innerHTML=ajax.responseText;
  87.             }
  88.         }
  89.         ajax.send(null);
  90.     }
  91. }

Espero haberme explicado y espero puedan ayudarme, no soy muy bueno usando AJAX
  #8 (permalink)  
Antiguo 03/03/2011, 18:45
 
Fecha de Ingreso: enero-2011
Ubicación: Maracaibo
Mensajes: 179
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Combobox Combinados

Hola compañeros, ya logre solucionar, por alguna extraña razon, que aun estoy analizando, el archivo de conexion.php no me estaba funcionando bien:

cambie el que tenia: conexion.php

Código PHP:
Ver original
  1. <?php
  2. function conectar()
  3. {
  4.     mysql_connect("localhost", "root", "");
  5.     mysql_select_db("midata_base");
  6. }
  7.  
  8. function desconectar()
  9. {
  10.     mysql_close();
  11. }
  12.  
  13. ?>

por este otro:

Código PHP:
Ver original
  1. $conne = mysql_connect ('localhost', 'root','');
  2. $selec = mysql_select_db('midata_base') or die('error al seleccionar la base de datos');

y ya con eso me funciona de maravillas.

Gracias por la ayuda prestada.

Saludos

Etiquetas: combinados, combobox, php
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:20.