Foros del Web » Programando para Internet » PHP »

seleccionar valor por defecto de un select dependiente

Estas en el tema de seleccionar valor por defecto de un select dependiente en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/05/2012, 16:14
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 108
Antigüedad: 12 años, 9 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
  #2 (permalink)  
Antiguo 20/01/2014, 04:17
 
Fecha de Ingreso: enero-2014
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: seleccionar valor por defecto de un select dependiente

Hola, yo me encuentro exactamente con la misma duda, alguien podría ayudarme?
  #3 (permalink)  
Antiguo 20/01/2014, 08:26
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 16 años, 2 meses
Puntos: 36
Respuesta: seleccionar valor por defecto de un select dependiente

Pero que es lo que quieres exactamente, que el select muestre un item, pero este iten donde esta en la base datos?, corresponde a un registro determinado?

Que?
  #4 (permalink)  
Antiguo 20/01/2014, 08:52
 
Fecha de Ingreso: enero-2014
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: seleccionar valor por defecto de un select dependiente

Hola, en primer lugar gracias por tu interés.

Voy a explicártelo un poco más detallado para que me entiendas. Yo he partido del ejemplo que se cita en este hilo:

http://www.formatoweb.com.ar/ajax/select_dependientes_3_niveles.php

Si lo ves, podrás comprobar que es un select dependiente de 3 niveles, el cual lo he modificado un poco para que tome los datos de una base de datos, hasta ahí no hay problema. Yo lo he implementado para dar de alta usuarios, los cuales introducen sus datos mediante un formulario además de su ubicación, para lo cual hago uso del select y así seleccionan el país, la provincia y la localidad. Hasta aquí todo bien.

El problema viene cuando quiero modificar los datos de un usuario dado de alta ya en el sistema, al editar los datos, necesito para la página de modficación que se cargen los datos del usuario y que los select se pongan con los valores que en su momento se almacenaron. Y es ahí donde tengo el problema, ya que no sé como hacerlo con el código que he tomado de base.

Muchas gracias
  #5 (permalink)  
Antiguo 20/01/2014, 09:10
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 16 años, 2 meses
Puntos: 36
Respuesta: seleccionar valor por defecto de un select dependiente

Te pongo un ejemplo de una lista de provincias que con esto, yo resulvo que las lista se posicionen en el item que corresponde al de la base de datos. Esto lo hice hace bastante tiempo, quizas se pueda pulir un poco mas el codigo y hasta llevarlo a mysqli, pero de todos modos funciona perfectamente.

Código PHP:
Ver original
  1. <select id="obj_provincia" class="cajatexto" onchange="mostrarMunicipios()">
  2. <option value="">Seleccionar...</option>
  3. <?php
  4. require('../../includes/conexion.php');
  5.  
  6. $rs_titular=mysql_query("SELECT * FROM tb_titulares");
  7. $row_titular = mysql_fetch_assoc($rs_titular);
  8.  
  9. $rs_prov=mysql_query("SELECT * FROM nm_provincias");
  10. while($row_prov = mysql_fetch_assoc($rs_prov)){
  11. ?>                        
  12. <option value="<?php echo $row_prov['id']; ?>"<?php if (!(strcmp($row_prov['id'], $row_titular['dir_provincia']))) {echo "selected=\"selected\"";} ?>><?php echo $row_prov['provincia']; ?></option>
  13. <?php } ?>                          
  14. </select>
  #6 (permalink)  
Antiguo 20/01/2014, 09:58
 
Fecha de Ingreso: enero-2014
Mensajes: 3
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: seleccionar valor por defecto de un select dependiente

Gracias Alexis, yo también uso algo muy similar para select simples y me funciona estupendamente. El problema aquí es que al tratarse de select dependientes y estar ajax por medio, no me funciona y ya no se que hacer. La verdad es que le ha dado varias vueltas y no doy con la solución.

Etiquetas: defecto, dependiente, html, mysql, registro, select, sql, tabla, usuarios
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 09:06.