Foros del Web » Programando para Internet » PHP »

Paso valores entre páginas

Estas en el tema de Paso valores entre páginas en el foro de PHP en Foros del Web. ¡Hola gente! Me he empeñado en pasar el elemento seleccionado en un select de una página a otra a través de un link y no ...
  #1 (permalink)  
Antiguo 29/11/2004, 10:12
 
Fecha de Ingreso: agosto-2004
Mensajes: 51
Antigüedad: 13 años, 3 meses
Puntos: 0
Paso valores entre páginas

¡Hola gente!

Me he empeñado en pasar el elemento seleccionado en un select de una página a otra a través de un link y no de un submit en un form. Me explico. Tengo una página de búsqueda con un form con una caja de texto, un select y un botón de submit que llama a la misma página. Cuando pulso el botón me llegan todos los datos de los elementos del formulario y no tengo ningún problema. El caso es que también tengo un link en la página y me gustaría que saliera seleccionado en el select el elemento que se seleccionó antes de pulsar el link. No tengo ni idea de cómo hacerlo. No sé siquiera si habría que hacerlo con Javascript (y me estaría equiocando de foro ) ¿Alguien puede darme alguna idea?

Muchas gracias
  #2 (permalink)  
Antiguo 29/11/2004, 10:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En HTML tienes el parámetro "selected" para indicar que tal opción de una lista (<select>) quedará preestablecido su valor.

En principio no sé si generas tu <select> desde PHP dinámicamente (con sus opciones) pero .. debería ser así para que puedas recorrer esas opciones que tendrás en un array o BD o lo que sea para ir componiendo el HTML necesario ..

Código PHP:
function input_select($opciones,$selecciona){
    foreach ($opciones as $valor => $texto_item){
     if(isset($selecciona) && $selecciona==$valor){
       echo "<option value=\"".$valor."\" selected>".$texto_item."</option>\n";
     } else {
       echo "<option value=\"".$valor."\">".$texto_item."</option>\n";
     }
    }
}

// ejemplo de uso:
<select name="variable">
<? 
$opciones
=array(""=>"-- Seleccione --","D"=>"Dolar","E"=>"Euro","P"=>"Peso Chileno");
input_select($opciones,$_GET['variable']) ;
?>
</select>
Fijate bien en el HTML que se genera ..

Un saludo,
  #3 (permalink)  
Antiguo 29/11/2004, 11:52
 
Fecha de Ingreso: agosto-2004
Mensajes: 51
Antigüedad: 13 años, 3 meses
Puntos: 0
Gracias por la respuesta, Cluster.

En ese script, creas el select dinámicamente, pero para seleccionar una opción, tienes que pasarle como parámetro a input_select el elemento seleccionado que recoges con $_GET['variable'] más abajo. El problema que yo tengo es que no sé de dónde sacar $_GET['variable']. Si pulso el botón de submit, sí que tendría el valor del elemento seleccionado, pero llamo a la página desde un link. Lo que yo busco es una especie de

Código HTML:
<a href="pagina.php?seleccionado=1>ordenar</a> 
El problema es que no sé cómo hacer que ese 1 sea dinámico y valga lo que se ha seleccioado en el select (el índice, no el valor). Con PHP no creo que lo pueda hacer porque la página ya está en el cliente. Quizá debería preguntar esto en el foro de Javascript. No sé....

Un saludo.
  #4 (permalink)  
Antiguo 30/11/2004, 05:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. en javascript también puedes hacer un submit desde un evento tipo onClick() asociado a tu link para enviar ese formualario sin botón submit .. algo tipó:
Código PHP:
<form action .....>
tu <select name .....>
<
a href="pagina.php" onClick="this.form.subimt()">ordenar</a>
</
form
Por otro lado .. si quieres tomar el valor de un elemento de tu formulario .. y "propagarlo" a otro script PHP por un link como el que muestras con el valor de ese elemento .. tendrás que hacerlo con javascript algo tipo:

<a href="pagina.php?seleccion=+this.form.elemento_for mulario.value">ordenar</a>

Con eso sólo enviaras el valor que tu has seleccionado a ese script .. perdiendo todo lo demás del formulario ya que no haces el "submit" ni tampoco propgas el resto de elementos del formulario en el link que apunta a "pagina.php"

A todo esto .. la página también la "cambiaras" a no ser que uses frames/iframes o abras una ventana (window.open) para no "salirte" de la página en que estás y abrir un "proceso" paralelo.

(Realmente no es así para el caso de un "select" .. es algo tipo SelectIndex() o algo así .. no recuerdo bien . .consulta en el foro de Javacript)

Un saludo,

Última edición por Cluster; 30/11/2004 a las 05:40
  #5 (permalink)  
Antiguo 01/12/2004, 03:00
 
Fecha de Ingreso: agosto-2004
Mensajes: 51
Antigüedad: 13 años, 3 meses
Puntos: 0
Hola,

No he conseguido hacer que me funcione lo que me has puesto.

<a href="pagina.php?seleccion=+this.form.elemento_for mulario.value">ordenar</a>

ni

<a href="pagina.php?seleccion=this.form.combo.selecte dIndex">ordenar</a>

No me reemplaza el valor del elemento seleccionado, sino que me pone el link tal cual....

En el otro caso que me pones que es hacer un submit, ese sí me funciona, pero necesitaría pasar otro valor (el de la columna por la que quiero ordenar) en un hidden (se me acaba de ocurrir ahora ) y no lo he probado...

En fin, al final he rebuscado en el foro de Javascript (cosa que debería haber hecho antes de preguntar...) y he encontrado una solución. Os la pongo aquí por si a alguien le puede interesar. Al final he aislado el problema y lo he dejado en una página muy simple con un select y un link que llama a la propia página que recuerda la opción que se seleccionó antes.

combo.php

Código PHP:
<?php
if ($_GET) {
    
$pasado  $_GET[elegido];
} else {
    
$pasado  0;
}
echo <<<BASTA
<html>
<head>

<script type="text/javascript">
<!--

function inicio() {
BASTA;

echo 
'document.formulario.combo.options[' $pasado '].selected = "true"' "\n";

echo <<<BASTA
}

function seleccion() {
    location.href = "combo.php?elegido=" + document.formulario.combo.selectedIndex;
}

-->
</script>

</head>
<body onload="inicio()">
<form name="formulario">
<select name="combo">
<option value="1">uno</option>
<option value="2">dos</option>
<option value="3">tres</option>
<option value="4">cuatro</option>
</select>
</form>
<a href="#" onclick="seleccion()">refrejcar</a>
</body>
</html>
BASTA;
?>
Realmente hay poquito de php, pero bueno.

El objetivo del script es que, al pulsar sobre un link, pueda llamar a una función de javascript que establezca el link dinámicamente con todos los datos que quiera (en este caso sólo el elemento seleccionado en el select) que hayan cambiado en la página una vez que ya está en el navegador del cliente, o sea, fuera del alcance de php y que no estén en un form.

Voy a explicar un par de líneas:

<a href="#" onclick="seleccion()">refrejcar</a>

De todas las combinaciones que he probado, esta es la única que me ha funcionado. Poniendo en el link directamente la propiedad selectedIndex no funciona. Poniendo href="combo.php", tampoco, ni com href="" (que al final es lo mismo) En esos casos no recogía el link de onclick y se quedaba con el de href que no vale. Supongo que lo de poner # es uno de los mil truquitos que tiene Javascript.

La otra línea es

location.href = "combo.php?elegido=" + document.formulario.combo.selectedIndex;

Puede que sea una tontada, pero me he vuelto loco para ver cómo se cambia la página del explorador sin abrir una ventana nueva ni un pop up. Esas dos cosas las he encontrado por todas partes, hasta el punto de que parece que Javascript sólo vale para abrir pop ups...

En este caso podría haber usado onclick="this.form.submit()", pero la gracia está en que a location.href ahora le puedo añadir lo que quiera.

Pues nada, al final lo he podido solucionar. Muchas gracias por la ayuda. Un saludo
  #6 (permalink)  
Antiguo 01/12/2004, 07:41
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. si quieres ver como solventar todo eso (si entendí bien lo que haces) en PHP sin nada de javacript .. puedes probar este ejemplo de "combos" (listas) anidadados.

http://www.forosdelweb.com/f18/faqs-php-530600-post664999/

Si te fijas en ese código se recarga la página ante un cambio de tus select (combos) .. pero se gestiona si se ha pulsado el botón "enviar" de ese formulario para decidir si corresponde recargar la página y seguir mostrando el formulario o bien hacer el proceso. Todos los elementos del mismo (formulario) quedan con sus valores pre-establecidos al recargar la página.

Un saludo,
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:36.