Foros del Web » Programando para Internet » PHP »

Recoger valor de combobox

Estas en el tema de Recoger valor de combobox en el foro de PHP en Foros del Web. Hola, Quisiera saber como recoger el valor de un combobox y en función de ese valor hacer la consulta que corresponda para mostrar unos datos. ...
  #1 (permalink)  
Antiguo 19/04/2011, 09:14
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Recoger valor de combobox

Hola,
Quisiera saber como recoger el valor de un combobox y en función de ese valor hacer la consulta que corresponda para mostrar unos datos.
El combobox lo relleno con datos de la base de datos y una vez seleccionado el valor del combo, se mostrará toda la información que corresponda. Se selecciona un año del combo y se mostrará todas las actividades que se han realizado en ese año.
El código que tengo es el siguiente:
<form name="anyoAct" method="post">
<p> Año:
<select name="selectAnyoActividad">
<?php foreach($listadoAnyos as $lAnyo){
$anyoActividad = $lAnyo->getAnyoActividad();
?>
<option value="
<?php $anyoActividad;?>">
<?php echo $anyoActividad; ?></option>
<?php }

?>

</select>
</p>
</form>

Aquí muestro el combo con los años que existen la base de datos. Me lo rellena perfectamente. Ahora lo que quiero es recoger el valor del combo seleccionado y en la misma página mostrar las actividades de ese año.
Lo recojo de esta forma:
<?php
$anyo=$_POST['selectAnyoActividad'];
echo "aqui ".$anyo;
?>
Pero no me aparece el año que realmente he seleccionado.
Como lo tengo que hacer. Además según se cambie el valor seleccionado del combo se tiene que reflescar automáticamente toda la página.
Muchas gracias.
  #2 (permalink)  
Antiguo 19/04/2011, 09:27
 
Fecha de Ingreso: septiembre-2008
Ubicación: Manises,Valencia
Mensajes: 114
Antigüedad: 15 años, 6 meses
Puntos: 13
Respuesta: Recoger valor de combobox

Hola,

puedes ponner aquí el código fuente (html) resultado de la página php?
  #3 (permalink)  
Antiguo 19/04/2011, 09:30
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

Eso es el código que tengo.

Donde tengo el formulario con el select de los años y según se modifica el combo quiero mostrar en la misma página las actividades de ese año.
  #4 (permalink)  
Antiguo 19/04/2011, 09:47
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Recoger valor de combobox

El primer error esta en

Código PHP:
Ver original
  1. <option value="
  2. <?php $anyoActividad;?>">

No puedes poner un salto de linea ya que eso hará que el valor sea igual a ese salto de linea que por cierto no esta permitido en una etiqueta html.

el segundo error es que falta imprimir el texto en esa misma parte:

Cita:
<?php echo $anyoActividad;?>">
en conclusión queda así:

Código PHP:
Ver original
  1. <form name="anyoAct" method="post">
  2. <p> Año:
  3. <select name="selectAnyoActividad">
  4. <?php foreach($listadoAnyos as $lAnyo){
  5. $anyoActividad = $lAnyo->getAnyoActividad();   
  6. ?>
  7. <option value="<?php echo $anyoActividad;?>">
  8. <?php echo $anyoActividad; ?></option>
  9. <?php }
  10.  
  11. ?>
  12.  
  13. </select>
  14. </p>
  15. </form>

espero te resulte :D
  #5 (permalink)  
Antiguo 19/04/2011, 10:39
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

Ok, gracias lo he cambiado.
Pero sigo sin saber como recoger el valor del select del combo en la misma página, porque si pongo:
<?php
$anyo=$_POST['selectAnyoActividad'];
echo "aqui ".$anyo;
?>

no me muestra el año que he seleccionado. Y es que necesito ese valor para pasarlo después a una consulta que tengo que generar.
  #6 (permalink)  
Antiguo 19/04/2011, 10:42
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
Respuesta: Recoger valor de combobox

Hola Maribajar si lo que deseas es mostrar el dato sleccionado del select en la misma pagina necesariamente tienes que usar java script o mejor aun ajax, que es lo que necesitas hacer para poder guiarte.

Saludos.
  #7 (permalink)  
Antiguo 19/04/2011, 10:46
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

Lo que quiero es según el valor seleccionado, mostrar las distintas actividades que tengo guardadas en la base de datos según el año que he elegido y en la misma página mostrar todas esas actividades, ya vere si en forma de tabla o como un listado. Pero lo importante es poder recoger ese valor para pasarlo a la consulta que tengo que generar y lo que me devuelva la consulta mostrarlo otra vez en la misma página.
  #8 (permalink)  
Antiguo 19/04/2011, 10:53
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
Respuesta: Recoger valor de combobox

como lo sospechaba, para hacer eso tienes que usar obligatoriamente ajax.
  #9 (permalink)  
Antiguo 19/04/2011, 10:55
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

Ok, y como lo hago.
  #10 (permalink)  
Antiguo 19/04/2011, 11:12
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Recoger valor de combobox

ginitofl tiene razón, no me había fijado de que estabas mostrando todo en la misma pagina, intenta así:

<form name="anyoAct" method="post">
<p> Año:
<select name="selectAnyoActividad" onChange="document.getElementById('divfech').inner HTML = this.value;">
<?php foreach($listadoAnyos as $lAnyo){
$anyoActividad = $lAnyo->getAnyoActividad();
?>
<option value="<?php echo $anyoActividad;?>">
<?php echo $anyoActividad; ?></option>
<?php }
?>
</select>
</p>
La fecha es: <div id="divfech">desconocida</div>
</form>
  #11 (permalink)  
Antiguo 19/04/2011, 11:13
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Recoger valor de combobox

no se por que el innerHTML sale separado, es junto "innerHTML".

Explicando un poco el código, esto es javascript, lo que hace es tomar el valor (value) del select y ponerlo dentro del div que tiene la id "divfech", cuando inicies el archivo la primera vez el valor sera "desconocida" hasta que cambies la fecha.
  #12 (permalink)  
Antiguo 19/04/2011, 11:20
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
Respuesta: Recoger valor de combobox

eso esta bien para mostrar solo el dato seleccionado, pero maribajar lo que necesita es hacer una consulta a la bd y mostrar en la misma pagina las actividades que correspondan al año seleccionado y para lograr eso ya tienes que usar obligatoriamente AJAX.

Última edición por ginitofl; 19/04/2011 a las 11:21 Razón: ajax
  #13 (permalink)  
Antiguo 19/04/2011, 11:22
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

Esto que me has puesto no me hace nada.
  #14 (permalink)  
Antiguo 19/04/2011, 11:23
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

Si ginitofl eso es lo que quiero hacer. Haber si encuentro algún ejemplo con AJAX para hacerlo.
  #15 (permalink)  
Antiguo 19/04/2011, 11:36
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Recoger valor de combobox

la verdad, no necesitas AJAX obligatoriamente, si quieres obtener los datos de la BD y luego mostrarlos al seleccionar uno puedes hacerlo con javascript, mientras no quieras insertar o actualizar datos en la base de datos.

en cuanto a que el código no te hace nada, no puede ser, ya lo probé aquí y funciona, solo recuerda juntar el innerHTML, no se por que el foro lo cambia por inner HTML.

si lo haces en AJAX te complicaras de mas innecesariamente.
  #16 (permalink)  
Antiguo 19/04/2011, 11:39
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

Unicamente necesito saber que valor del combo a seleccionado, para después realizar la consulta en la BD que eso ya lo tengo echo. Sería sacar el año del combo y ya esta.
  #17 (permalink)  
Antiguo 19/04/2011, 11:42
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

stramin, si que me funciona lo que me has puesto. Lo único que yo lo que necesito es eso valor guardarlo en una variable para pasarlo a la consulta de la BD que he generado. Si que me muestra el valor del año que he seleccionado, pero como lo guardo en una variable.
  #18 (permalink)  
Antiguo 19/04/2011, 11:45
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Recoger valor de combobox

editando...

Última edición por stramin; 19/04/2011 a las 11:46 Razón: respuesta de marijabar antes de la mia
  #19 (permalink)  
Antiguo 19/04/2011, 11:46
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
Respuesta: Recoger valor de combobox

Para hacer consultas a la base de datos y ponerlos en la misma pagina sin recargar necesariamente tienes que usar ajax, prepare un ejmplo asi de rapido ya lo adaptas a tus necesidades.

el index.php

Código PHP:
<html>
<
head>
<
title>Prueba Ajax</title>
<
script type="text/javascript" src="js/ajax.js"></script>
</head>
<body>
<div>
  <form name="form1" method="post" action="">
    <label>
    <select name="selectAnyoActividad" id="selectAnyoActividad" onChange="carga_act();">
      <option value="0">Seleccione</option>
        <option value="2011">2011</option>
        <option value="2010">2010</option>
      </select>
    </label>
  </form>
</div>
<div id="principal"></div>
</body>
</html> 
actividades.php

Código PHP:
<?
$selectAnyoActividad
=$_REQUEST['selectAnyoActividad'];
echo 
"El Año Seleccionado es: " $selectAnyoActividad;
//aqui haces las consultas para que te cargue las actividades del año seleccionado.
?>
y el maravillos ajax.js

Código PHP:
function objetoAjax(){
    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 
carga_act(){
    
divResultado  document.getElementById('principal');//div donde se cargara
    
selectAnyoActividad document.getElementById('selectAnyoActividad').value;//valor del Año
    
ajax objetoAjax();
    
ajax.open("POST""actividades.php"true);
    
    
ajax.onreadystatechange = function(){
        if (
ajax.readyState==4){
            
divResultado.innerHTML ajax.responseText
        
}
    }
    
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    
ajax.send("selectAnyoActividad="+selectAnyoActividad)


el ajax lo guardas en la carpeta js

y listo eso deberia andarte.

Saludos.

Última edición por ginitofl; 19/04/2011 a las 11:48 Razón: ajax
  #20 (permalink)  
Antiguo 19/04/2011, 11:55
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

Pero una cosa de esta forma tengo dos páginas. Yo lo que quiero es en el index.php tengo el formulario , hay mismo recoger le valor del año seleccionado y según el valor elegido ya creo las consultas para después mostrarlo también todo en el index.php
  #21 (permalink)  
Antiguo 19/04/2011, 12:01
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Recoger valor de combobox

en ese caso tal como dijo ginitolf deberias usar AJAX, y tambien podrias usar un IFRAME:

para eso tienes que crear en la misma carpeta de tu archivo otro archivo php (en este ejemplo le puse "mostrar.php"

Código HTML:
Ver original
  1. <form name="anyoAct" method="post">
  2. <p> Año:
  3. <select name="selectAnyoActividad" onChange="document.getElementById('iframe1').src = 'mostrar.php?y='+this.value;">
  4. <?php foreach($listadoAnyos as $lAnyo){
  5. $anyoActividad = $lAnyo->getAnyoActividad();   
  6. ?>
  7. <option value="<?php echo $anyoActividad;?>">
  8. <?php echo $anyoActividad; ?></option>
  9. <?php }
  10. ?>
  11. </p>
  12. <iframe id="iframe1" frameborder="0" width="600" height="200"></iframe>
  13. </form>

y en el archivo mostrar.php pone esto solo para saber si estas recibiendo el dato:

Código PHP:
Ver original
  1. <?php
  2. $anyo=$_GET['y']
  3. echo "La fecha es: $anyo";
  4. ?>

si todo sale bien podrás mostrar los datos de tu BD con PHP dentro de ese mismo archivo usando la variable $anyo que es donde esta el año.
  #22 (permalink)  
Antiguo 19/04/2011, 12:02
Avatar de ginitofl  
Fecha de Ingreso: diciembre-2006
Ubicación: Lima Perú
Mensajes: 349
Antigüedad: 17 años, 4 meses
Puntos: 22
Respuesta: Recoger valor de combobox

eso no puedes hacerlo maribajar, no hay manera de hacer lo que pretendes o al menos yo no lo conosco, ajax te sirve para mostrar datos de modo asincrono osea que no te recarga la pagina y solo recarga una determina seccion, en este caso el div llamado principal.

Saludos.
  #23 (permalink)  
Antiguo 19/04/2011, 12:05
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Recoger valor de combobox

si lo quieres todo en una sola pagina entonces tendría que ser obligatoriamente así:

Código HTML:
Ver original
  1. <form name="anyoAct" method="post">
  2. <p> Año:
  3. <select name="selectAnyoActividad" onChange="document.href = 'index.php?y='+this.value;">
  4. <?php foreach($listadoAnyos as $lAnyo){
  5. $anyoActividad = $lAnyo->getAnyoActividad();    
  6. ?>
  7. <option value="<?php echo $anyoActividad;?>">
  8. <?php echo $anyoActividad; ?></option>
  9. <?php }
  10. ?>
  11. </p>
  12. <?php
  13. $anyo=$_GET['y']
  14. echo "La fecha es: $anyo";
  15. ?>
  16. </form>

lo malo de este método es que hace una recarga de la página, pero no es tan terrible ya que podrías enviar todas las variables de nuevo, lo malo es el parpadeo de la pagina XD
  #24 (permalink)  
Antiguo 19/04/2011, 12:15
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

No me funciona. No recoge el valor de la variable
  #25 (permalink)  
Antiguo 20/04/2011, 09:10
 
Fecha de Ingreso: abril-2006
Mensajes: 128
Antigüedad: 18 años
Puntos: 1
Respuesta: Recoger valor de combobox

No soy capaz de recoger el valor del select para poder utilizarlo en la misma página. Lo que tengo es lo siguiente:
<form name="anyoAct" method="POST">
<p> Año:
<select name="selectAnyoActividad">
<?php foreach($listadoAnyos as $lAnyo){
$anyoActividad = $lAnyo->getAnyoActividad();
?>
<option value="<?php echo $anyoActividad;?>"> <?php echo $anyoActividad; ?></option>
<?php }

?>

</select>
</p>
</form>

Aqui muestro el combo con los años que recupero de la base de datos. Hasta hay me funciona perfectamente. Ahora lo que quiero es saber que año he seleccionado del combo para pasarlo a la consulta. Algo asi,

$anyo=$_POST['selectAnyoActividad'];
$listadoMeses = $rA->getResultadoMeses($anyo);

donde el año sería el que he seleccionado en el combo y teniendo ese valor ya lo paso a getResultadoMeses que nos devuelve un listado de actividades para ese año.
Pero como consiguo recuperar ese año sin recargar la página, unicamente cuando se cambie el onchange del select recoja ese valor.
Estoy mirando por AJAX, por Javascript pero no soy capaz. Alguna ayuda.
  #26 (permalink)  
Antiguo 20/04/2011, 10:12
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Recoger valor de combobox

no te va a funcionar, para que te funcione la única opción es que pongas lo que te puse en el ultimo post que publiqué.

La razón es que PHP no funciona en el pc del cliente, por que lo que hace es "generar" el código html de tu página, una vez que ha sido descargada y visualizada por el cliente PHP MUERE, la única forma de volver a usar php es volver a hacer una solicitud al servidor, para esto tienes las 4 opciones que te hemos planteado:

1.- Javascript, que sería irracional
Lo bueno: no necesitas recargar la pagina ni hacer paginas adicionales
Lo malo: tendras que hacer como 100 lineas si tu base de datos es muy grande

2.- Usar AJAX, usando el script que puso ginitofl
Lo bueno: no necesitas recargar la pagina
Lo malo: tendras que hacer como 50 lineas si o si y debes hacer 2 paginas adicionales.

3.- Usar IFRAME, usando el script que puse en mi ultimo post
Lo bueno: solo debes recargar el espacio del iframe
Lo malo: debes hacer 1 pagina adicional.

4.- Usar GET o POST, usando el script que puse en mi ultima respuesta o enviando el formulario (publico esa opcion a continuación.
Lo bueno: No necesitas crear páginas adicionales.
Lo malo: se recarga la página.

POR POST:
Código HTML:
Ver original
  1. <form name="anyoAct" method="post">
  2. <p> Año:
  3. <select name="selectAnyoActividad" onChange="submit();">
  4. <?php foreach($listadoAnyos as $lAnyo){
  5. $anyoActividad = $lAnyo->getAnyoActividad();    
  6. ?>
  7. <option value="<?php echo $anyoActividad;?>">
  8. <?php echo $anyoActividad; ?></option>
  9. <?php }
  10. ?>
  11. </p>
  12. <?php
  13. $anyo=$_POST['y']
  14. echo "La fecha es: $anyo";
  15. ?>
  16. </form>
  #27 (permalink)  
Antiguo 06/11/2012, 07:25
Avatar de andreamorante184  
Fecha de Ingreso: agosto-2012
Mensajes: 65
Antigüedad: 11 años, 7 meses
Puntos: 0
Respuesta: Recoger valor de combobox

Hola cómo termino este asunto por que justo estoy haciendo exactamente lo mismo....!!!
__________________
Andrea Morante

Etiquetas: combobox, recoger
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 03:08.