Foros del Web » Programando para Internet » Javascript »

Select asociados con datos de php

Estas en el tema de Select asociados con datos de php en el foro de Javascript en Foros del Web. Hola como estan no puedo hacer que el value del primer a una variable del array del segundo select para que se modifique el contenido ...
  #1 (permalink)  
Antiguo 29/01/2014, 09:28
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Select asociados con datos de php

Hola como estan no puedo hacer que el value del primer a una variable del array del segundo select para que se modifique el contenido

se puede hacer?

Código PHP:


<select name="page-dropdown"
 onchange='this.options[this.selectedIndex].value;'> 
 <option value="">
<?php echo esc_attr__'Seleccionar destino' ) ); ?></option> 
 <?php 
 
 $args 
= array(
    
'sort_order' => 'ASC',
    
'sort_column' => 'post_title',
    
'hierarchical' => 1,
    
'exclude' => 10,
    
'include' => '',
    
'meta_key' => '',
    
'meta_value' => '',
    
'authors' => '',
    
'child_of' => 0,
    
'parent' => -1,
    
'exclude_tree' => '',
    
'number' => '',
    
'offset' => 0,
    
'post_type' => 'page',
    
'post_status' => 'publish'
); 
  
$pages get_pages$args ); 
  foreach ( 
$pages as $page ) {
      
$option '<option value="' .  $page->ID  '">';
    
$option .= $page->post_title;
    
$option .= '</option>';
    echo 
$option;
  }
 
?>
 </select>

 <select name="page-dropdown"
 onchange='document.location.href=this.options[this.selectedIndex].value;'> 
 <option value="">
<?php echo esc_attr__'Seleccionar Fechas' ) ); ?></option> 
 <?php 
  $args2 
= array(
    
'sort_order' => 'ASC',
    
'sort_column' => 'post_title',
    
'hierarchical' => 1,
    
'exclude' => '',
    
'include' => '',
    
'meta_key' => '',
    
'meta_value' => '',
    
'authors' => '',
    
'child_of' => 2,
    
'parent' => -1,
    
'exclude_tree' => '',
    
'number' => '',
    
'offset' => 0,
    
'post_type' => 'page',
    
'post_status' => 'publish'
); 
  
$pages2 get_pages$args2 ); 
  foreach ( 
$pages2 as $page2 ) {
      
$option2 '<option value="' get_page_link$page2->ID ) . '">';
    
$option2 .= $page2->post_title;
    
$option2 .= '</option>';
    echo 
$option2;
  }
 
?>
 
 
</select>
  #2 (permalink)  
Antiguo 29/01/2014, 17:17
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Select asociados con datos de php

En FDW hay varios aportes sobre select dependientes, usa el buscador y seguramente encontrarás una opción que te sea útil, incluso con uso AJAX para evitar recargar la página al actualizar el segundo select.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 30/01/2014, 07:15
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 16 años, 1 mes
Puntos: 36
Respuesta: Select asociados con datos de php

Llegate a esta URL, aqui tienes todo lo que necesitas para hacer "select dependientes".

http://www.formatoweb.com.ar/ajax/se...pendientes.php
  #4 (permalink)  
Antiguo 30/01/2014, 10:57
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Select asociados con datos de php

Cita:
Iniciado por formatoweb.com.ar
Para obtener los códigos clickeá aquí y no olvides revisar a nuestros anunciantes :)
Qué mala práctica!
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 30/01/2014, 11:46
Avatar de alexisverano  
Fecha de Ingreso: septiembre-2008
Ubicación: La Habana.Cuba
Mensajes: 298
Antigüedad: 16 años, 1 mes
Puntos: 36
Respuesta: Select asociados con datos de php

Cita:
Iniciado por Triby Ver Mensaje
Qué mala práctica!
Ta! claro, estoy de acuerdo contigo Triby, pero es un buen articulo para los que se inician en el mundo de los select, mas adelante la practica te obliga a mejorar el codigo.
  #6 (permalink)  
Antiguo 31/01/2014, 11:18
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Select asociados con datos de php

Gracias Muchachos antes de meterme en ajax podre pasar la variable con el onchange y despues mandar un refresh y tomar el valor por get ?
Provisoriamente
  #7 (permalink)  
Antiguo 31/01/2014, 12:45
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Select asociados con datos de php

Y si lo intentas y luego nos cuentas cómo te fue?
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 31/01/2014, 20:09
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Select asociados con datos de php

la verdad que con javascript no me doy mucha maña

Se me ocurre algo asi para pasar el valor d a una variable y despues hacer un refresh pero la verdad no se que funcion deberia usar


Este codigo me devuelve el valor pero en una pagina toda en blanco

Código PHP:

  <script>
function val() {
d = document.getElementById("select_id").value;
alert(d);
location.reload();
<?php
            $variablephp
"document.write(d);";
echo 
$variablephp;
?>
location.reload(forceGet)
}
</script>

Última edición por mktalternativa; 31/01/2014 a las 20:19
  #9 (permalink)  
Antiguo 31/01/2014, 22:27
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Select asociados con datos de php

Eso ya es cosa de Javascript y no tiene nada que ver con PHP; muevo tu tema al foro adecuado.
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 01/02/2014, 01:17
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 7 meses
Puntos: 1284
Respuesta: Select asociados con datos de php

Hola:

Yo me preocuparía para hacer la asociación de forma accesible, y eso pienso que se conseguiría con dos formularios. El primero con método get y un botón submit encerrado entre etiquetas noscript, a la vez que programaría el evento de cambio del select para hacer una petición Ajax de los datos para actualizar el segundo select en el segundo formulario (si hiciera falta el valor del primer select lo pondría en un campo hidden).

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Última edición por caricatos; 01/02/2014 a las 01:31 Razón: cerrar paréntesis
  #11 (permalink)  
Antiguo 01/02/2014, 15:35
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Select asociados con datos de php

probe el ejemplo de alexisverano
http://www.formatoweb.com.ar/ajax/se...pendientes.php

el problema que tengo es que uso wordpress y el javascript llama a un archivo php hasta ahi todo bien pero quiero no me permite mostrar el dropdown de paginas por que no reconoce la funcion de wordpress y si lo pongo en functions.php me da error

que puedo hacer
  #12 (permalink)  
Antiguo 01/02/2014, 16:25
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 10 meses
Puntos: 1
Respuesta: Select asociados con datos de php

pude poner todo en el index y que funcione el unico problema que tengo es que cuando selecciono alguna opcion del primer select me abre dos select mas y yo solo quiero que modifique el contenido de los ya existentes


que puedo hacer

Código PHP:

<?php get_header(); ?>

<script>

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)
        {
            if (!xmlhttp && typeof XMLHttpRequest!='undefined') xmlhttp=new XMLHttpRequest();
        }
    }
    return xmlhttp; 
}

// Declaro los selects que componen el documento HTML. Su atributo ID debe figurar aqui.
var listadoSelects=new Array();
listadoSelects[0]="paises";
listadoSelects[1]="estados";

function buscarEnArray(array, dato)
{
    // Retorna el indice de la posicion donde se encuentra el elemento en el array o null si no se encuentra
    var x=0;
    while(array[x])
    {
        if(array[x]==dato) return x;
        x++;
    }
    return null;
}

function cargaContenido(idSelectOrigen)
{
    // Obtengo la posicion que ocupa el select que debe ser cargado en el array declarado mas arriba
    var posicionSelectDestino=buscarEnArray(listadoSelects, idSelectOrigen)+1;
    // Obtengo el select que el usuario modifico
    var selectOrigen=document.getElementById(idSelectOrigen);
    // Obtengo la opcion que el usuario selecciono
    var opcionSeleccionada=selectOrigen.options[selectOrigen.selectedIndex].value;
    // Si el usuario eligio la opcion "Elige", no voy al servidor y pongo los selects siguientes en estado "Selecciona opcion..."
    if(opcionSeleccionada==0)
    {
        var x=posicionSelectDestino, selectActual=null;
        // Busco todos los selects siguientes al que inicio el evento onChange y les cambio el estado y deshabilito
        while(listadoSelects[x])
        {
            selectActual=document.getElementById(listadoSelects[x]);
            selectActual.length=0;
            
            var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Selecciona Opci&oacute;n...";
            selectActual.appendChild(nuevaOpcion);    selectActual.disabled=true;
            x++;
        }
    }
    // Compruebo que el select modificado no sea el ultimo de la cadena
    else if(idSelectOrigen!=listadoSelects[listadoSelects.length-1])
    {
        // Obtengo el elemento del select que debo cargar
        var idSelectDestino=listadoSelects[posicionSelectDestino];
        var selectDestino=document.getElementById(idSelectDestino);
        // Creo el nuevo objeto AJAX y envio al servidor el ID del select a cargar y la opcion seleccionada del select origen
        var ajax=nuevoAjax();
        ajax.open("GET", "index.php?select="+idSelectDestino+"&opcion="+opcionSeleccionada, true);
        ajax.onreadystatechange=function() 
        { 
            if (ajax.readyState==1)
            {
                // Mientras carga elimino la opcion "Selecciona Opcion..." y pongo una que dice "Cargando..."
                selectDestino.length=0;
                var nuevaOpcion=document.createElement("option"); nuevaOpcion.value=0; nuevaOpcion.innerHTML="Cargando...";
                selectDestino.appendChild(nuevaOpcion); selectDestino.disabled=true;    
            }
            if (ajax.readyState==4)
            {
                selectDestino.parentNode.innerHTML=ajax.responseText;
            } 
        }
        ajax.send(null);
    }
}

</script>

<?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(
"paises"=>"lista_paises",
"estados"=>"lista_estados"
);

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

}

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"];
$ops $opcionSeleccionada;

if(
validaSelect($selectDestino) && validaOpcion($opcionSeleccionada))
{

    echo 
$ops;
    

  
$args2 = array(
    
'sort_order' => 'ASC',
    
'sort_column' => 'post_title',
    
'hierarchical' => 1,
    
'exclude' => '',
    
'include' => '',
    
'meta_key' => '',
    
'meta_value' => '',
    
'authors' => '',
    
'child_of' => $ops,
    
'parent' => -1,
    
'exclude_tree' => '',
    
'number' => '',
    
'offset' => 0,
    
'post_type' => 'page',
    
'post_status' => 'publish'
); 


    
    
// Comienzo a imprimir el select
    
echo "<select name='".$selectDestino."' id='".$selectDestino."' onChange='cargaContenido(this.id)'>";
    echo 
"<option value='0'>Elige</option>";
      
$pages2 get_pages$args2 ); 
  foreach ( 
$pages2 as $page2 ) {
      
$option2 '<option value="' get_page_link$page2->ID ) . '">';
    
$option2 .= $page2->post_title;
    
$option2 .= '</option>';
    echo 
$option2;
  }
  
    echo 
"</select>";
    
}


?>
    
<!--Encabezado -->
<?php
function generaPaises()
{
?>    
  <select name="paises"
 onchange='cargaContenido(this.id)' id="paises"> 
 <option value="">
<?php echo esc_attr__'Seleccionar destino' ) ); ?></option> 
 <?php 
 
 $args 
= array(
    
'sort_order' => 'ASC',
    
'sort_column' => 'post_title',
    
'hierarchical' => 1,
    
'exclude' => 10,
    
'include' => '',
    
'meta_key' => '',
    
'meta_value' => '',
    
'authors' => '',
    
'child_of' => 0,
    
'parent' => -1,
    
'exclude_tree' => '',
    
'number' => '',
    
'offset' => 0,
    
'post_type' => 'page',
    
'post_status' => 'publish'
); 
  
$pages get_pages$args ); 
  foreach ( 
$pages as $page ) {
      
$option '<option value="' .  $page->ID  '">';
    
$option .= $page->post_title;
    
$option .= '</option>';
    echo 
$option;
  }
 
?>
 </select>
 <?php
  
}
?>




<div id="demo" style="width:600px;">
                <div id="demoDer">
                    <select disabled="disabled" name="estados" id="estados">
                        <option value="0">Selecciona opci&oacute;n...</option>
                    </select>
                </div>
                <div id="demoIzq"><?php generaPaises(); ?></div>
            </div>

Etiquetas: asociados, php, select, variable
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 12:03.