Foros del Web » Programando para Internet » PHP »

Enviar valor seleccionado de un menu lista al codigo de otro

Estas en el tema de Enviar valor seleccionado de un menu lista al codigo de otro en el foro de PHP en Foros del Web. Buenas a todos, tengo esta duda que no he logrado resolver, tengo dos menu lista, y lo que necesito es asignarle el valor seleccionado del ...
  #1 (permalink)  
Antiguo 15/04/2009, 10:01
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Enviar valor seleccionado de un menu lista al codigo de otro

Buenas a todos, tengo esta duda que no he logrado resolver, tengo dos menu lista, y lo que necesito es asignarle el valor seleccionado del primer menu lista a una variable, para luego poder hacer una consulta y mostrar los datos en otro menu lista, los menu lista son los siguientes:


---------------menu lista select_numero_obilga-----------------

1 <select name="select_numero_obilga" id="select_numero_obilga" >
2 <option></option>
3 <?php
4 $base_path = "../../";
5 require_once( $base_path . 'configuration.php' );
6
7 $datos= new Jconfig();
8 $db_host= $datos->host;
9 $db_nombre=$datos->db;
10 $db_user=$datos->user;
11 $db_pass=$datos->password;

12 $conexion= mysql_connect($db_host, $db_user, $db_pass);

13 mysql_select_db($db_nombre,$conexion);

14 $consulta = "SELECT numero_obligacion FROM obligacion";

15 if($resultado= mysql_query($consulta))
16 while ($query= mysql_fetch_array($resultado)){
17 ?>
18 <option value ="<?php echo $query['numero_obligacion']; ?>"><?php echo $query['numero_obligacion']; ?></option>
19 <?php }
20 mysql_free_result($resultado);
21 mysql_close();
22 ?>
23 </select>

---------------menu lista select_numero_obilga-----------------

24 <select name="select_ficha_catastral" id="select_ficha_catastral">
25 <option></option>
26 <?php

27 $base_path = "../../";
28 require_once( $base_path . 'configuration.php' );

29 $datos= new Jconfig();
30 $db_host= $datos->host;
31 $db_nombre=$datos->db;
32 $db_user=$datos->user;
33 $db_pass=$datos->password;

34 $conexion= mysql_connect($db_host, $db_user, $db_pass);

35 mysql_select_db($db_nombre,$conexion);


36 $consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='".$_POST['select_numero_obilga']."'"; En esta consulta requiero el valor seleccionado en el menu lista anterior para poder hacer la consulta, pero no se como obtener dicho valor


37 if($resultado= mysql_query($consulta))
38 while ($query= mysql_fetch_array($resultado)){
39 ?>
40 <option value ="<?php echo $query['id_referencia']; ?>"><?php echo $query['id_referencia']; ?></option>
41 <?php }
42 mysql_free_result($resultado);
43 mysql_close();
44 ?>
45 </select>


Muchas gracias a todos!!

Última edición por dark_monk9; 15/04/2009 a las 17:29
  #2 (permalink)  
Antiguo 15/04/2009, 10:11
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

se puede hacer con ajax checa en el foro de ajax para ver ejemplos de listas desplegables en cascada o dependientes
  #3 (permalink)  
Antiguo 15/04/2009, 17:04
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

ya revise los ejemplos que hay en ajax, pero no logro encontrar un ejemplo que se asemeje a lo que necesito, en sintesis lo que necesito es poder capturar en una variable el valor seleccionado de la primera lista menu "select_numero_obilga", y enviarlo al codigo php de la lista menu llamada "select_ficha_catastral" para poder hacer la consulta:

$consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='".$_POST['select_numero_obilga']."'";

pero este valor $_POST['select_numero_obilga'] no se como traerlo o importarlo
  #4 (permalink)  
Antiguo 15/04/2009, 17:10
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

lo mejor seria que pongas al principio
Código php:
Ver original
  1. $numero_post = $_POST['select_numero_obilga'];

y luego lo cambias por


Código php:
Ver original
  1. $consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK = '$numero_post'";
__________________
Hangouts de JavaScript todos los jueves 20hs GMT, Unite !
https://plus.google.com/u/0/108504944676960830886
  #5 (permalink)  
Antiguo 15/04/2009, 17:23
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

ya lo hice y no funciono :( inserte $numero_post = $_POST['select_numero_obilga']; entre las lineas 26 y 27 y cambie la consulta de la linea 36 pero no funciono
  #6 (permalink)  
Antiguo 15/04/2009, 17:45
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 8 meses
Puntos: 103
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

ok , entonces prueba esto:
Código php:
Ver original
  1. $consulta = "SELECT id_referencia FROM bien WHERE numero_obligacion_FK='".$_POST["select_numero_obilga"]."'";
__________________
Hangouts de JavaScript todos los jueves 20hs GMT, Unite !
https://plus.google.com/u/0/108504944676960830886
  #7 (permalink)  
Antiguo 15/04/2009, 17:48
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

ya lo probe y tampoco funciono
  #8 (permalink)  
Antiguo 17/04/2009, 13:49
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

Debido a que de esa forma no funciono, estoy tratando por este lado:

En el "select_numero_obilga" le agregue Onchange: " quitartodos(document.getElementById('select_ficha_ catastral'));insertar(document.getElementById('sel ect_numero_obilga'),document.getElementById('selec t_ficha_catastral'));"

y en <select name="select_ficha_catastral" id="select_ficha_catastral"> borre el codigo que tenia en php.

Añadi el siguiente script en otro lugar

1<script type="text/javascript">

2function conjunto(llave,codigo,nombre){
3 this.id=llave;
4 this.codigo=codigo;
5 this.nombre=nombre;
6}

7var grupo = new Array();
8var cont=0;
9<?php
10 $base_path = "../../";
11 require_once( $base_path . 'configuration.php' );

12 $datos= new Jconfig();
13 $db_host= $datos->host;
14 $db_nombre=$datos->db;
15 $db_user=$datos->user;
16 $db_pass=$datos->password;

17 $conexion= mysql_connect($db_host, $db_user, $db_pass);
18 mysql_select_db($db_nombre,$conexion);

19 $sql="SELECT * FROM inmueble";
20 $rs=mysql_query($sql);
21 $nregistros=mysql_num_rows($rs);

22 if($nregistros > 0){
23 while ($dato = mysql_fetch_array($rs)){
24 echo "grupo[cont++] = new conjunto('".$dato['id_inmueble']."','".$dato['direccion']."','".$dato['ficha_catastral']."');\n";
25 }
26 }
27?>

28function insertar(seleccion1,seleccion2) {
29 for(i=0; i<=seleccion1.options.length-1;i++) {
30 if(seleccion1.options[i].selected) {
31 asignar(seleccion1.options[i].value, seleccion2);
32 break;
33 }
34 }
35}

36function asignar(valor,seleccion) {
37 numelemen = '';
38 numelemen++;
39 seleccion.options.length = numelemen;
40 seleccion.options[numelemen-1].value ='';
41 seleccion.options[numelemen-1].text = 'Seleccione una Ficha';
42 for(i=0;i<=grupo.length-1;i++) {
43 if(grupo[i].id == valor) {
44 numelemen = seleccion.options.length;
45 numelemen++;
46 seleccion.options.length = numelemen;
47 seleccion.options[numelemen-1].value = grupo[i].codigo;
48 seleccion.options[numelemen-1].text = grupo[i].nombre;
49 }
50 }
51}

52function quitartodos(seleccion) {
53 seleccion.options.length=0;
54}
55</script>


Ahora el problema que presento es en la linea 24, ya que a pesar de que no me muestra error, no me esta funcionando y por ende no me esta mostrando los respectivos valores en el "select_ficha_catastral" id="select_ficha_catastral".

La consulta y la conexion a la base de datos estan correctas.

Alguien sabe si estoy comentiendo algun error? muchas gracias a todos!!
  #9 (permalink)  
Antiguo 17/04/2009, 14:46
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

hacer eso es bastante simple con este tipo de metodo... asqui te dejo un ej.

prueba.php
Código PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>pruebas ajax get</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
<!--
#Layer1 {
    position:absolute;
    width:148px;
    height:22px;
    z-index:1;
    left: 13px;
    top: 260px;
    overflow: visible;
}
#Layer2 {
    position:absolute;
    width:142px;
    height:68px;
    z-index:2;
    top: 283px;
    left: 13px;
    list-style-position: outside;
    list-style-type: none;
    overflow: hidden;
    display: list-item;
}
-->
</style>
</head>
<script language="javascript">
function nuevoAjax()
{
    var xmlhttp=false;
     try 
    {
          xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
     } 
    catch (e) 
    {
          try 
        {
               xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
          }
        catch (E) 
    {
   xmlhttp = false;
  }
 }
if (!xmlhttp && typeof XMLHttpRequest!='undefined') 
{
  xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}
function cargarContenido()
{
    var t1, t2, contenedor;
    contenedor = document.getElementById('contenedor');
    t1 = document.getElementById('texto1').value;
    t2 = document.getElementById('texto2').value;
    ajax=nuevoAjax();
    ajax.open("GET", "contenedor.php?t1="+t1+"&t2="+t2,true);
    ajax.onreadystatechange=function(){
        if (ajax.readyState==4)
        {
            contenedor.innerHTML = ajax.responseText
        }
    }
    ajax.send(null)
}
function cargaContenidoX()
{
    var t1, t2, contenedor;
    contenedor = document.getElementById('Layer2');
    t1 = document.getElementById('ingreso').value;
    ajax=nuevoAjax();
    ajax.open("GET", "previo.php?t1="+t1,true);
    ajax.onreadystatechange=function(){
        if (ajax.readyState==4)
        {
            contenedor.innerHTML = ajax.responseText
        }
        else
        {
            contenedor.innerHTML='<b>Cargando...</b>';
        }
    }
    ajax.send(null)
}
</script>
<style type="text/css">
#contenedor{
border: 1px solid #f00;
padding: 10px;
margin: 14px;
}
</style>
<?php
    
if (empty($appservlang)) 
    {
        
$idioma getenv("HTTP_ACCEPT_LANGUAGE");
    }
    echo
"Lenguaje: $idioma<br>";
?>
<body>
<form name="frm" id="frm" onSubmit="cargarContenido(); return false">
<div><input name="texto1" type="text" id="texto1" value="valor1" />
</div>
<div><input name="texto2" type="text" id="texto2" value="valor2" />
</div>
<div><input type="submit" value="enviar" onPress="cargarContenido()" /></div>
</form>


<div id="Layer1">
  <label>
  <input name="ingreso" type="text" id="ingreso" onKeyPress="cargaContenidoX()" on>
  </label>
</div>
<p>&nbsp;</p>
<p>Este ejemplo enviará información por el método get y la pondrá en el siguiente div: </p>
<div id="contenedor">div contenedor</div>

<div id="previo">Aqui</div>
<div id="Layer2"></div>
</body>
</html>
archivo externos (realizan consultas etc)
previo.php
Código PHP:
<?php
//archivo que realiza proceso asincrono
//cualquier proceso ,consultas, etc....
if($_GET)
{
    
$previo=$_GET["t1"];
    if(
$previo!="")
    {
        if (
strlen($previo)>10)
        {
            
$previo=substr($previo,0,10)."...";
        }
        echo
"<ul><li><a href='#'>".$previo."</a></li></ul>";//esto se vera en el div especifico
    
}    
    
}
?>
contenedor.php
Código PHP:
<?php
if ($_GET)
{
    
var_dump($_GET);
}
?>
yo utilizo este sistema para realizar lo que ahora tu necesitas y funciona sin problemas,, ademas el o los archivos externos los puedes hacer que hagan lo que sea con los datos, ya sea consultas, calculos.... etc..


espero te sirva...
a se me olidavan los creditos.... la cosa es que no me acuerdo de donde obtuve esto pero si aparece el legitimo dueño hagalo saber para incluirlo....
__________________
Me junto con los que Saben, Queriendo Saber.
  #10 (permalink)  
Antiguo 17/04/2009, 15:38
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

mire el ejemplo que me ha recomendado ACX_POISON, en el archivo previo.php, lo modifique y quedo de la siguiente manera :

<?php
//archivo que realiza proceso asincrono
//cualquier proceso ,consultas, etc....
if($_GET)
{
$previo=$_GET["select_numero_obilga"];

$base_path = "../../";
require_once( $base_path . 'configuration.php' );

$datos= new Jconfig();
$db_host= $datos->host;
$db_nombre=$datos->db;
$db_user=$datos->user;
$db_pass=$datos->password;

$conexion= mysql_connect($db_host, $db_user, $db_pass);

mysql_select_db($db_nombre,$conexion);
$consulta = "SELECT id_referencia FROM `bien` WHERE numero_obligacion_FK='".$previo."'";
$resultado= mysql_query($consulta);
}
?>

Esto esta correcto??
  #11 (permalink)  
Antiguo 17/04/2009, 15:46
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

Nota.: en el mismo archivo previo.php debes escribir via echo lo que mostrares en el div de la pagina prueba.php
__________________
Me junto con los que Saben, Queriendo Saber.
  #12 (permalink)  
Antiguo 17/04/2009, 15:52
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

le agregue al final el resultado de la consulta mostrada por echo, que seria

while ($query= mysql_fetch_array($resultado)){
echo $query['numero_obligacion'];
  #13 (permalink)  
Antiguo 17/04/2009, 15:59
Avatar de ACX_POISON  
Fecha de Ingreso: abril-2008
Ubicación: Talca-Chile
Mensajes: 750
Antigüedad: 16 años
Puntos: 7
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

mira por si te sirve este previo.php genera un select estatico lo puedes modificar para que sea dinamico

Código PHP:
<?php
if($_GET)
{
    
$previo=$_GET["t1"];
    
$nombre_select="aaaa_1";//nombre que llevara el select
    
    
$select='<select name="'.$nombre_select.'" id="'.$nombre_select.'">';//empezamos a armar select
    
    //lo llenamos de valores
    
for($x=0;$x<=5;$x++)
    {
        
$select.=' <option value="'.$x.'">'.$x.'</option>';
    }
    
$select.='</select>';
    
    echo 
$select;// lo mostramos
}
?>

y recuerda que el dato que previo.php recibe via GET es enviado por la funcion javascript de prueba .php no olvides configurar este primero enviando el valor del select que quieres, sino no recibiras el valor correcto revisa el ej.

suerte....
__________________
Me junto con los que Saben, Queriendo Saber.
  #14 (permalink)  
Antiguo 17/04/2009, 16:03
Avatar de By_George  
Fecha de Ingreso: abril-2009
Ubicación: localhost
Mensajes: 629
Antigüedad: 15 años
Puntos: 19
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

checa este link donde hay un buen ejemplo de como mostrar select dinamicos o dependientes

http://www.forosdelweb.com/wiki/PHP:..._la_primera%3F
  #15 (permalink)  
Antiguo 24/04/2009, 11:53
 
Fecha de Ingreso: mayo-2007
Mensajes: 41
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Enviar valor seleccionado de un menu lista al codigo de otro

Ya funciono usando AJAX, ahora el problema es que funciona solo en Internet Explorer, en FireFox no funciona, el FF es version 3.0.9. ya mire en google y he cambiado miles de veces la forma en que se hace la conexion pero no he logrado que funcione.

Este es el codigo:


function NuevoAjax(){
var xmlhttp=true;
try{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}catch(E){
xmlhttp = false;
}
}

if(!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
return xmlhttp;
}

function Cargar(url){

var resultado='';

ajax=NuevoAjax();
ajax.open("GET", url,true);



ajax.onreadystatechange=function()
{
if(ajax.readyState==1)
{
// aqui va el preload si se requiere...";
}
else if(ajax.readyState==4)
{
if(ajax.status==200)
{
resultado=unescape(ajax.responseText);
}
else
{
resultado="Error:".ajax.status;
}
}
}

ajax.send(null);
return resultado;

}



function CargarMunicipios(estado,cmb_a_Cargar,seleccionado, divNombre)
{

var contenido,total,seleccionar=0,Lista;



var ComboList = document.getElementById(cmb_a_Cargar);
var divMunicipios=document.getElementById(divNombre);



Cargar("municipios.php?edo="+estado);
divMunicipios.innerHTML=Cargar("municipios.php?edo ="+estado);

Lista = document.getElementById('lista');



ComboList.innerHTML="";



if (Lista!=null)
{
Nodo = Lista.firstChild;
}


try
{
total=Lista.childNodes.length;
}
catch(E)
{
total=0;
}


for (i=1;i<=(total);i++)
{
id del Nodo
ComboList.options[i]=new Option(unescape(Nodo.innerText),Nodo.id);


if (Nodo.id==seleccionado)
{
seleccionar=i-1;
}

Nodo=Nodo.nextSibling;
}


if (total>0)
{
//Borrar el elemento en blanco que se inserta al inicio
ComboList.options[0]=null;

//Posicionarse en la opcion seleccionada
ComboList.options[seleccionar].selected="selected";
}


}

Última edición por dark_monk9; 24/04/2009 a las 12:01
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 19:39.