Ver Mensaje Individual
  #11 (permalink)  
Antiguo 30/09/2006, 08:12
Spychaser
 
Fecha de Ingreso: agosto-2006
Ubicación: Argentina, Bahia Blanca
Mensajes: 172
Antigüedad: 17 años, 8 meses
Puntos: 0
Pregunta resultado.

Bueno encontre este codigo y lo adpate a mis necesidades, utiliza el AJAX, como me recomendo skatomundo.
Pero necesito nuevamente una ayuda, ya que en vez de elegir la marca y el modelo del automovil, me graba en la tabla el numero por el cual relaciono los datos.

Tengo 2 tablas con los siguientes campos:
Tabla: auto_marcas
Campos: id_marcas , marcas
Tabla: auto_modelos
Campos: id_modelos, modelo

Ej:
id_marcas = 04
marcas = Chevrolet

id_modelos = 04
modelo = Meriva

id_modelos = 04
modelo = Astra


Muchas gracias

El codigo es un poco largo, pero vale la pena.

Primer archivo:
select_dependientes.php
Código PHP:
<!-- 
Este código fuente es de libre utilización y modificación bajo la siguiente licencia:
http://creativecommons.org/licenses/by-nc-sa/2.5/
Puedes distribuir estos scripts o colocarlos en tu Sitio siempre y cuando no elimines estos
comentarios y la licencia expuesta sea respetada.

Mas ejemplos y material sobre AJAX en: http://www.formatoweb.com.ar/ajax
Cualquier sugerencia, crítica o comentario son bienvenidos.
Contacto: [email protected]
-->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<?php
function generaPaises()
{
    
$coneccion=mysql_connect("localhost""city45_user""x") or die(mysql_error());
    
mysql_select_db("city45_avisos"$coneccion) or die(mysql_error());
    
$consulta=mysql_query("SELECT marcas FROM auto_marcas ORDER BY id_marcas ASC");
    
mysql_close($coneccion);

    
// Voy imprimiendo el primer select compuesto por los paises
    
echo "<select class='combo' id='select_0' name='marcas' onChange='cargaContenido()'>";
    while(
$registro=mysql_fetch_row($consulta))
    {
        echo 
"<option value='".$registro[0]."'>".$registro[1]."</option>";
    }
    echo 
"</select>";
}
?>
<html>
<head>
<style type="text/css"> 
.punteado 

    border-style:dotted; 
    border-color:#000000; 
    background-color:#EAEAEA;
    font-family:Verdana; 
    font-size:10px; 
    text-align:center;
}

.combo
{
    font-family:Verdana; 
    font-size:10px; 
    border-color:#CCCCCC;
}
</style>

<script language="javascript" type="text/javascript">
function nuevoAjax()

    /* Crea el objeto AJAX. Esta funcion es generica para cualquier utilidad de este tipo, por
    lo que se puede copiar tal como esta aqui */
    var xmlhttp=false; 
    try 
    { 
        // Creacion del objeto AJAX para navegadores no IE
        xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); 
    }
    catch(e)
    { 
        try
        { 
            // Creacion del objet AJAX para IE 
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
        } 
        catch(E) { xmlhttp=false; }
    }
    if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); } 

    return xmlhttp; 
}

function cargaContenido()
{
    var valor=document.getElementById("select_0").options[document.getElementById("select_0").selectedIndex].value;
    if(valor==0)
    {
        // Si el usuario eligio la opcion "Elige", no voy al servidor y pongo todo por defecto
        combo=document.getElementById("select_1");
        combo.length=0;
        var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Elegir una marca";
        combo.appendChild(nuevaOpcion);    combo.disabled=true;
    }
    else
    {
        ajax=nuevoAjax();
        ajax.open("GET", "select_dependientes_proceso.php?seleccionado="+valor, true);
        ajax.onreadystatechange=function() 
        { 
            if (ajax.readyState==1)
            {
                // Mientras carga elimino la opcion "Elige pais" y pongo una que dice "Cargando"
                combo=document.getElementById("select_1");
                combo.length=0;
                var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
                combo.appendChild(nuevaOpcion); combo.disabled=true;    
            }
            if (ajax.readyState==4)
            { 
                document.getElementById("fila_2").innerHTML=ajax.responseText;
            } 
        }
        ajax.send(null);
    }
}
</script>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Ejemplo</title>
</head>
<body>
<center>
<table border="1" width="400" style="border-style:none;">
  <tr>
    <td id="fila_1" width="50%" class="punteado"><?php generaPaises(); ?></td>
    <td id="fila_2" width="50%" class="punteado">
        <select class="combo" disabled="disabled" id="select_1" name="modelos">
        <option id="valor_defecto" value="0">Elegir un modelo</option>
        </select>
    </td>
  </tr>
</table>
</center>
</body>
</html>
select_dependientes_proceso.php
Código PHP:
<?php
function validaValor($parametro)
{
    
/* Funcion utilizada para validar el numero de pais recibido por GET. En nuestra base
    de datos tenemos como validos los paises desde 1 a 21 */
    
if(eregi("^[0-9]{1,2}$"$parametro)) 
    {
        if(
$parametro>=&& $parametro<=42) return TRUE;
        else return 
FALSE;
    }
    else return 
FALSE;
}

$valor=$_GET["seleccionado"];

if(
validaValor($valor))
{
    
// Si el numero corresponde a un codigo de pais valido paso a procesar
    
$coneccion=mysql_connect("localhost""city45_user""x") or die(mysql_error());
    
mysql_select_db("city45_avisos"$coneccion) or die(mysql_error());
    
// Genero la consulta trayendo todos los estados que correspondan al codigo de pais elegido
    
$consulta=mysql_query("SELECT * FROM auto_modelos WHERE id_modelos='$valor'");
    
mysql_close($coneccion);

    
// Comienzo a imprimir el select
    
echo "<select class='combo' id='select_1' name='modelos'>";
    while(
$registro=mysql_fetch_row($consulta))
    {
        
// Paso a HTML acentors y ñ para su correcta visualizacion
        
$registro[1]=htmlentities($registro[1]);
        
// Imprimo las opciones del select
        
echo "<option value='".$registro[0]."'>".$registro[1]."</option>";
    }            
    echo 
"</select>";
}
?>

Última edición por Spychaser; 30/09/2006 a las 08:22