Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/05/2012, 16:14
donangelomix
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 108
Antigüedad: 12 años, 8 meses
Puntos: 1
seleccionar valor por defecto de un select dependiente

hola.
tengo problemas para mostrar por defecto un item en el select dependiente. el select dependiente que tengo es de 3 y este el el primer de los select el cual carga a los demas y aqui si me muestra el item seleccionado cuando hago esta igualdad $db_user["id_p"] == $registro["id"]


Código PHP:
<tr>
        <td style="color:#EA1D24" width="21%" align="right" nowrap="nowrap">Provincia<span class="campo_obligatorio">*</span></td>
        <!--<td colspan="2"><?php # editagenera(); ?></td>-->
        <td>
        <select name='provincias' id='provincias' onChange='cargaContenido(this.id)'>
            <option value='-1'>-Seleccione-</option>
            <?php    
                    $cc 
"SELECT * FROM provincias ORDER BY opcion ASC";
                    
$consulta=mysql_query($cc,$link);
    
                    while(
$registro mysql_fetch_array($consulta)){
                        if(
$db_user["id_p"] == $registro["id"]){
                            echo 
'<option value="'.$registro["id"].'" selected="selected">'.$registro["opcion"].'</option>';
                        }else{
                            echo 
'<option value="'.$registro["id"].'">'.$registro["opcion"].'</option>';
                        }
                    }
            
?>
        </select>
        </td>
    </tr>

este es el otro 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(
"provincias"=>"provincias",
"cantones"=>"cantones",
"parroquias"=>"parroquias"
);
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["oxcion"];

if(
validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
{
    
$tabla=$listadoSelects[$selectDestino];
    include(
"include/conn.inc.php");
    
$xy "SELECT id, opcion FROM $tabla WHERE relacion='$opcionSeleccionada'";
    
$consulta=mysql_query($xy$link) or die(mysql_error());
    
    
// 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>";
    }
}
?>
este el el otro js que contiene el cargaContenido

Código Javascript:
Ver original
  1. var listadoSelects2=new Array();
  2. listadoSelects2[0]="provincias";
  3. listadoSelects2[1]="cantones";
  4. listadoSelects2[2]="parroquias";
  5.  
  6. function cargaContenido(idSelectOrigen)
  7. {
  8.     // Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
  9.     var posicionSelectDestino=buscarEnArray(listadoSelects2, idSelectOrigen)+1;
  10.     // Obtengo el select que el usuario modifico
  11.     var selectOrigen=document.getElementById(idSelectOrigen);
  12.     // Obtengo la opcion que el usuario selecciono
  13.     var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
  14.     // Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
  15.     if(opcionSeleccionada==0)
  16.     {
  17.         var x=posicionSelectDestino, selectActual=null;
  18.         // Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
  19.         while(listadoSelects2[x])
  20.         {
  21.             selectActual=document.getElementById(listadoSelects2[x]);
  22.             selectActual.length=0;
  23.            
  24.             var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
  25.             selectActual.appendChild(nuevaOpcion);  selectActual.disabled=true;
  26.             x++;
  27.         }
  28.     }
  29.     // Compruebo que el select modificado no sea el ultimo de la cadena
  30.     else if(idSelectOrigen!=listadoSelects2[listadoSelects2.length-1])
  31.     {
  32.         // Obtengo el elemento del select que debo cargar
  33.         var idSelectDestino=listadoSelects2[posicionSelectDestino];
  34.         var selectDestino=document.getElementById(idSelectDestino);
  35.         // Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
  36.         var ajax=nuevoAjax();
  37.         ajax.open("GET", "select_dependientes_proceso.php?select="+idSelectDestino+"&oxcion="+opcionSeleccionada, true);
  38.         ajax.onreadystatechange=function()
  39.         {
  40.             if (ajax.readyState==1)
  41.             {
  42.                 // Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
  43.                 selectDestino.length=0;
  44.                 var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
  45.                 selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;   
  46.             }
  47.             if (ajax.readyState==4)
  48.             {
  49.                 selectDestino.parentNode.innerHTML=ajax.responseText;
  50.             }
  51.         }
  52.         ajax.send(null);
  53.     }
  54. }

el ejemplo de select dependiente esta en la ruta::
http://www.formatoweb.com.ar/ajax/select_dependientes_3_niveles.php