Foros del Web » Programando para Internet » PHP »

leer combo desde formulario

Estas en el tema de leer combo desde formulario en el foro de PHP en Foros del Web. Tengo un pagina php con dos form Uno de ellos tiene un combo + un botón.Cuando selecciono una opción en el combo y pulso en ...
  #1 (permalink)  
Antiguo 12/04/2006, 06:52
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
leer combo desde formulario

Tengo un pagina php con dos form

Uno de ellos tiene un combo + un botón.Cuando selecciono una opción en el combo y pulso en el botón va a otro php.

En el otro formulario solo tengo un botón pero necesito leer tb la variable del combo para ir a otro php. Podría poner otro combo en este form, pero kedaria muy mal , aparte de ser una xapuza.

¿Como podria recoger el valor de la variable del combo para ir al 2º php?

Gracias
  #2 (permalink)  
Antiguo 12/04/2006, 07:29
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 12 años, 2 meses
Puntos: 56
Información

Interesante... tienes que usar javascript, a ver si entendí... tienes algo como
Cita:
<form id="form1" action="pagina1.php" method="post">
<select name="combo1" >
....[opciones del combo]
</select>
<input type="submit" value="Enviar">
</form>
y el otro sería
Cita:
<form id="form2" action="pagina2.php" method="post">
<input type="submit" value="Enviar">
</form>
Si es así, entonces puedes utilizar un input de tipo hidden para capturar el valor del combo del primer form y pasarlo en el segundo, entonces el segundo form quedaría así:
Cita:
<form id="form2" action="pagina2.php" method="post">
<input type="hidden" value="" name="combo_value">
<input type="submit" value="Enviar">
</form>
Ahora el javascript, tenrías que capturar el valor del combo y pasarlo al input del segundo form llamado "combo_value", entonces tienes que interceptar el evento onClick del combo, de esta manera:
Cita:
<form id="form1" action="pagina1.php" method="post">
<select name="combo1" onClick="document.getElmentbyId('combo_value').val ue=this.options[this.selectedIndex].value;">
....[opciones del combo]
</select>
<input type="submit" value="Enviar">
</form>
y creo que eso es todo... no lo he probado, realiza los cambios y nos cuentas.
Me olvidaba... si no funciona con OnClick cámbiarlo por OnChange ;)
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #3 (permalink)  
Antiguo 12/04/2006, 07:44
Avatar de JorgitoAlfajor  
Fecha de Ingreso: enero-2006
Mensajes: 152
Antigüedad: 11 años, 11 meses
Puntos: 1
¿Y porqué no podés tener un solo formulario?
__________________
¿Se me entiende la letra?
  #4 (permalink)  
Antiguo 12/04/2006, 12:17
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
Leer combo en otro formulario

Hola, antes de nada muchas gracias por ayudarme.

He hecho lo que me has dicho pero cuando pulso en el boton del 2º formulario no me recoge el valor que imprimo en el javascripts

Creo que el javascript no se esta invocando porque siempre se devuelve en el campo hidden el valor "H" que yo he puesto por defecto.

A continuación te pongo mi codigo a ver si puedes encontrar el error.

Muchas gracias de nuevo

echo'<table ALIGN="center" border="0" width="25%">';
echo"<tr>";
echo'<td valign="buttom">';
echo"<select name=''tipos''onChange=''document.getElmentbyId('c ombo_value').value=this.options[this.selectedIndex].value;''>";
echo'<option selected>SELECCIONE....';
for( $i=1; $i <= $num_resultados; $i++ )
{
$row = mysql_fetch_array($resultado);
echo'<option>'.$row["descripcion"];
}
echo'</select>';
echo'</td>';
echo'<td valign="buttom">';
echo'<INPUT TYPE="submit" value="FILTRAR">';
echo"</form>";
echo"</td>";
echo"</tr>";
echo"</table>";

echo'<table ALIGN="center" cellspacing="5" cellpadding="5" border="0" width="10%">';
echo"<tr align='left'>";
echo'<td align="center">';
echo'<form method="GET" action="cargarcategoria.php" target="_BLANK">';
echo'<INPUT TYPE="submit" value="AÑADIR CATEGORIA">';
echo'<INPUT TYPE="hidden" value="H" name="combo_value">';
echo"</form>";
echo"</td>";
echo"</tR>";
echo"</table>";
  #5 (permalink)  
Antiguo 12/04/2006, 13:13
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 12 años, 2 meses
Puntos: 56
Información Review

Bueno, no encuentro el inicio del primer formulario : <form>, prueba quitar el valor "H" del campo hidden y déjalo en blanco. Dale un espacio más a la palabra onChange y si no pasa nada prueba cambiarlo a onClick.
Puedes evitarte escribir tantas sentencias echo usando heredoc, algo como esto:
echo <<<EOT
<table ALIGN="center" border="0" width="25%">
<tr>
<td valign="buttom">
<select name=''tipos'' onChange=''document.getElmentbyId('combo_value').v alue=this.options[this.selectedIndex].value;''>
<option selected>SELECCIONE....</option>
EOT;

es válido y muy usual, a propósito creo que se deben cerrar las etiquetas <option> con </option> o ya no es necesario ???.
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #6 (permalink)  
Antiguo 12/04/2006, 14:22
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
Hola de nuevo

perdona pero se me escapo el incio del 1º form , pero lo tengo puesto.

Lo del campo hidden a h, lo he probado poniendolo a vacio como me dijistes al principio, y con cualquier valor, el tema es que al parecer no se llama al javascript.

Lo he probao tanto con onclick como con onchange y con ninguno me va... siempre me carga el valor que le doy por defecto al hidden

esta es la instruccion que creo que no se esta invocando:

echo"<select name= ''tipos'' onClick= ''document.getElmentbyId('combo_value').value= this.options[this.selectedIndex].value;''>";

no se debe poner nada en el name del inpt hidden para actualizarlo??

Gracias d enuevo
  #7 (permalink)  
Antiguo 12/04/2006, 14:43
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 12 años, 2 meses
Puntos: 56
Corregido

Faltaba el valor id del campo hidden , pequeño error.
acabo de probar con un par de páginas y funciona
estas son:
combos.html
Código HTML:
<form id="form1" action="pagina.php" method="post">
<select name="combo1" onClick="document.getElementById('combo_value').value=this.options[this.selectedIndex].value;">
<option value="1">Opcion 1</option>
<option value="2">Opcion 2</option>
<option value="3">Opcion 3</option>
<option value="4">Opcion 4</option>
</select>
<input type="submit" value="Enviar">
</form>

<form id="form2" action="pagina.php" method="post">
<input type="hidden" value="" name="combo_value" id="combo_value">
<input type="submit" value="Enviar">
</form> 
pagina.php
Código PHP:
<?php
echo "Valores recibidos:<br>";
print_r($_POST);
?>
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #8 (permalink)  
Antiguo 12/04/2006, 16:20
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
Muchas gracias,

Ahora si que me funciona, aparte de eso que has dicho me faltaba la etiqueta value al combo...

Lo dicho muy agradecido por tu ayuda.

Un saludo
  #9 (permalink)  
Antiguo 12/04/2006, 16:50
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 12 años, 2 meses
Puntos: 56
De nada para... eso estamos
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #10 (permalink)  
Antiguo 13/04/2006, 05:06
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
un problemilla mas

Hola de nuevo, como me gusta complicarme la vida, he decidido al php anterior que tenia 2 forms ponerle un 3º.

Este 3º forms hace lo mismo que el 2º, recoge el valor del combo colocado en el 1º y va a un 3º php distinto.

He intentado poner otro campo oculto, con otro nombre, en el 3º forms, y desde el 1º hago el script que me dijistes ayer.
Pero no me deja poner dos sentencias iguales, con la salvedad del nombre del campo hidden que es diferente, en el 1º form. En este caso me salen los valores del combo fuera del mismo... un desastre.

Se me ha ocurrido lo siguiente: desde el campo hidden del 2º forms hacer el script siguiente para actualizar el valor en el hidden 3º, pero no me lo esta actualizando. Aqui lo tienes:


echo'<INPUT TYPE="hidden" value="" name="combo_value" id="combo_value" onChange="document.forms.fich.combo_values.value= this.value">';


Este hidden pertenece al 2º form, donde ya tiene el valor del combo del 1º form. Fich es el nombre del 3º formulario y combo_values es el nombre del campo hidden del 3º formulario.

¿Se puede hacer esto? ¿ O es un disparate?

Gracias de nuevo.
  #11 (permalink)  
Antiguo 13/04/2006, 05:45
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
Ya he dado con la solucion , puse dentro del mismo select otro onclick pero que hiciese referencia al otro hidden.

saludos
  #12 (permalink)  
Antiguo 13/04/2006, 08:29
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 12 años, 2 meses
Puntos: 56
Me alegro, las complicaciones siempre ayudan... de lo contrario la vida sería aburrida :)
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #13 (permalink)  
Antiguo 14/04/2006, 09:38
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
Hola otra vez,

Bueno como me sigo aburriendo y me gusta complicarme la vida.... he introducido otro forms mas donde necesito leer del combo el valor para ir a otro php distinto a los anteriores.

El caso es con los dos anteriores lo hice con la siguiente instruccion:

<select name="tipos" onClick="document.getElementById('combo_value').va lue=this.options[this.selectedIndex].value;" onChange="document.getElementById('combo_values'). value=this.options[this.selectedIndex].value;">


El problema está en que no me deja poner un tercer evento en esa instruccion

Si la pongo no se me ejecuta la ultima, ya que repito el evento Click, ó change.

He probado con el evento Focus que en principio podria valerme pero no me actualiza el hidden en este forms.

He intentado tb desde uno de los formularios anteriores en el campo hidden hacer el evento click o Change para actualizarlo en el ultimo forms pero no hay forma: este es el ejemplo al que me refiero:

<input type="hidden" name= "campo_oculto_form2" onChange="document.forms.form3.campo_oculto_form3. value= this.value">

donde:

Form3: nombre del formulario 3
campo_oculto_form3= nombre del campo hidden en el formulario 3

Haciendo esto, tampoco se recoje el valor.


¿¿Hay alguna otra forma de hacer esto??

Gracias de nuevo
  #14 (permalink)  
Antiguo 14/04/2006, 14:49
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 12 años, 2 meses
Puntos: 56
Coloca el código completo de tu página para ver que hacemos
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #15 (permalink)  
Antiguo 14/04/2006, 15:26
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
Aqui lo tienes:

echo"<html>";
echo"<head>";
echo"<title>HERRAMIENTA PODCAST</title>";
echo"</head>";
echo"<BODY text=#000000 bgColor=#f5c743 leftMargin=0 topMargin=0>";
echo <<<EOT
<table borderColor=#2182e7 ALIGN="center" border="0" width="25%">
<form id="form1" method="GET" action="filtrarcategoria.php">
<tr>
<td valign="buttom">
<select name="tipos" onChange="document.getElementById('combo_valuess') .value=this.options[this.selectedIndex].value;" onClick="document.getElementById('combo_value').va lue=this.options[this.selectedIndex].value;">
<option selected>SELECCIONE....
EOT;



for( $i=1; $i <= $num_resultados; $i++ )
{
$row = mysql_fetch_array($resultado); echo'<option value="'.$row"id_idioma"].'">'.$row["descripcion"];
}
echo'</select>';
echo'</td>';
echo'<td valign="buttom">';
echo'<INPUT TYPE="submit" value="FILTRAR">';
echo"</td>";
echo"</tr>";
echo"</form>";
echo"</table>";
echo'<table borderColor=#2182e7 ALIGN="center" cellspacing="0" cellpadding="0" border="0" width="10%">';
echo"<tr align='left'>";
echo'<td align="center">';
echo'<form id="form2" method="get" name="cat" action="cargarcategoria.php">';
echo'<INPUT TYPE="submit" value="AÑADIR CATEGORIA">';
echo'<INPUT TYPE="hidden" value="" name="combo_value" id="combo_value">';
echo"</form>";
echo"</td>";

echo'<td align="center">';
echo'<form method="get" name="fich" action="cargarcategoria_archivos.php">';
echo'<INPUT TYPE="submit" value="AÑADIR FICHERO">';
echo'<INPUT TYPE="hidden" value="" name="combo_values" id="combo_values">';

echo"</form>";
echo"</td>";
echo'<td align="center">';
echo'<form method="post" action="cargaridiomas.php">';
echo'<INPUT TYPE="submit" value="AÑADIR IDIOMAS">';
echo"</form>";
echo"</td>";
echo'<td align="center">';
echo'<form method="get" id="form3" name="enlaces" action="cargarenlace.php">';
echo'<INPUT TYPE="submit" value="AÑADIR ENLACES">';
echo'<INPUT TYPE="hidden" value="" name="combo_valuess" id="combo_valuess">';
echo"</form>";
echo"</td>";
echo'<td align="center">';
echo'<form method="post" action="busqueda.php">';
echo'<INPUT TYPE="submit" value="ACTUALIZAR">';
echo"</form>";
echo"</td>";
echo"</tr>";
echo"</table>";
echo"</body>";
echo"</html>";


En el select tienes los eventos para actualizar en el hidden correspondiente los botones añadir categoria y añadir enlace.

Intento poner otor evento en el select para añadir ficheros y no consigo actualizar el hidden de este forms

Muchas gracias de nuevo
  #16 (permalink)  
Antiguo 14/04/2006, 20:48
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 12 años, 2 meses
Puntos: 56
Información Un poco+ de javascript

He modificado un poco tu código; estoy usando una función en javascript para asignar los valores a los campos hidden de los 3 formularios; adicionalmente retiré varias sentencias echo, realmente no eran necesarias ya que puedes mezclar el html con el php .
La página quedaría de esta manera, no he podido probarla ya que no tengo la bd, pruébala y me cuentas como te va.
Código HTML:
<html>
<head>
<title>HERRAMIENTA PODCAST</title>
<script type="text/javascript">
  function Valor_Select(valor){
    document.getElementById('combo_value_1').value=valor;
    document.getElementById('combo_value_2').value=valor;
    document.getElementById('combo_value_3').value=valor;
  }
</script>
</head>
<BODY text=#000000 bgColor=#f5c743 leftMargin=0 topMargin=0>
<table borderColor=#2182e7 ALIGN="center" border="0" width="25%">
<form id="form1" method="GET" action="filtrarcategoria.php">
<tr>
<td valign="buttom">
<select name="tipos" onClick="Valor_Select(this.options[this.selectedIndex].value);"> 
<option selected>SELECCIONE....</option>
<?php
for( $i=1; $i <= $num_resultados; $i++ ){
  $row = mysql_fetch_array($resultado); 
  echo '<option value="'.$row['id_idioma'].'">'.$row['descripcion'].'</option>';
} ?>
</select>
</td>
<td valign="buttom">
<INPUT TYPE="submit" value="FILTRAR">
</td>
</tr>
</form>
</table>
<table borderColor="#2182e7" ALIGN="center" cellspacing="0" cellpadding="0" border="0" width="10%">
<tr align='left'>
<td align="center">

<form id="form2" method="get" name="cat" action="cargarcategoria.php">
<INPUT TYPE="submit" value="AÑADIR CATEGORIA">
<INPUT TYPE="hidden" value="" name="combo_value_1" id="combo_value_1">
</form>

</td>
<td align="center">

<form method="get" name="fich" action="cargarcategoria_archivos.php">
<INPUT TYPE="submit" value="AÑADIR FICHERO">
<INPUT TYPE="hidden" value="" name="combo_value_2" id="combo_value_2">
</form>
</td>
<td align="center">

<form method="post" action="cargaridiomas.php">
<INPUT TYPE="submit" value="AÑADIR IDIOMAS">
</form>
</td>
<td align="center">

<form method="get" id="form3" name="enlaces" action="cargarenlace.php">
<INPUT TYPE="hidden" value="" name="combo_value_3" id="combo_value_3">
<INPUT TYPE="submit" value="AÑADIR ENLACES">
</form>
</td>
<td align="center">

<form method="post" action="busqueda.php">
<INPUT TYPE="submit" value="ACTUALIZAR">
</form>

</td>
</tr>
</table>
</body>
</html> 
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #17 (permalink)  
Antiguo 15/04/2006, 04:09
 
Fecha de Ingreso: enero-2005
Mensajes: 34
Antigüedad: 12 años, 11 meses
Puntos: 0
Funciona!!!

Muchas gracias jcxnet, lo acabo de probar y ha funcionado.

Espero no complicar mas este php... jajajja

Un saludo
  #18 (permalink)  
Antiguo 15/04/2006, 11:50
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 12 años, 2 meses
Puntos: 56
Cuando quieras .. y suerte con el php y otros demonios
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
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 17:35.