Foros del Web » Programando para Internet » PHP »

¿Se puede hacer esto?

Estas en el tema de ¿Se puede hacer esto? en el foro de PHP en Foros del Web. Hola de nuevo. Quiero conseguir que al hacer una elección de un select, en un form, sin pulsar ningún botón, me de un valor a ...
  #1 (permalink)  
Antiguo 31/03/2009, 05:51
 
Fecha de Ingreso: enero-2009
Ubicación: Valencia (España)
Mensajes: 29
Antigüedad: 15 años, 2 meses
Puntos: 1
¿Se puede hacer esto?

Hola de nuevo.

Quiero conseguir que al hacer una elección de un select, en un form, sin pulsar ningún botón, me de un valor a una variable.

Como no sabía bien como hacerlo, se me ocurrió que al hacer el select, fuese a una página donde se creara una variable de sesion, y volviese a la pagina con el valor correspondiente.

El form es este, que está dentro una function:

Código PHP:
<? function display_shipping_change($shipping$change true)
{
  
// display table row with shipping cost and total price including shipping
  
global $total_price;
          
      if (
$change == true)
     {
      
?> 
       <form><table border = 0 width = 95% cellspacing = 0 cellpading=2 class=carro2>
       <tr><th  align = right> Elige la modalidad de envio:&nbsp;&nbsp;&nbsp;
       <select onchange="location.href=this.value" class="carro2" name="envio"> 
       <option value="/checkout2.php">Correos - Paquete azul - 3 dias: &nbsp; 5'70 eu</option> 
       <option value="/checkout3.php">Nacex - Env. urgente - 24 horas: &nbsp;8,20 eu</option>  
       </select></th></tr></table></form>
       
       <table border = 0 width = 95% cellspacing = 0 cellpading=0 class=carro2>
        <tr>
         <th width=80% bgcolor=#ffffff align = right>TOTAL INCLUIDO EL ENVIO</th>
         <th width=30% bgcolor=#ffffff align = right><?=number_format($shipping+$total_price2); ?> eu &nbsp;&nbsp;&nbsp; </th>
        </tr></table>
                  
      <?
      
    
}

Y la pagina donde doy valor a la variable esta:

Código PHP:
<?
include ('book_sc_fns.php');

 
session_start();
 
 
$_SESSION["shipping"] = "5.70";
 
 
$_SESSION["shipping"] = $shipping;
 
 
header("Location:checkout.php");
 
 
?>
En el principio de la pagina que incluye la function, he puesto

$shipping = $_SESSION['shipping']; para recuperar el valor


¿Que estoy hacien mal? ¿Uso un "sistema" que no sirve, o es fallo del script?

Muchas gracias a todos por la ayuda.
  #2 (permalink)  
Antiguo 31/03/2009, 06:36
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: ¿Se puede hacer esto?

Usa ajax...
Código:
<script type="text/javascript" language="javascript">
<!--//
function toggle(what) {
        var aobj = document.getElementById(what);
        if( aobj.style.display == 'none' ) {
               aobj.style.display = '';
        } else {
               aobj.style.display = 'none';
        }
}
function CrearXMLHttp(){
	XMLHTTP=false;
	if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	}else if(window.ActiveXObject){
		return new ActiveXObject("Microsoft.XMLHTTP");
	}
}
// suponiendo que tu div se llama loading
function OpenPage(url,id,loading){
//alert(url+' '+id);
	req=CrearXMLHttp();
	if(req){
		req.onreadystatechange = function() { manejador(id,loading); }; // aca cambie
		req.open("POST",url,true);
		req.send(null);
                toggle(loading); // ojo aqui
	}
}
function manejador(id,loading){
	if(req.readyState == 4){
		if(req.status == 200){
                        toggle(loading); // ojo aca
			document.getElementById(id).innerHTML=req.responseText;
		}else{
			//alert("Error"+req.statusText)
			alert("Error: es posible que tu navegador no sea compatible con las funciones de esta pagina, proba ingresando de nuevo desde Internet Explorer.");
		}
	}
}
</script>
Código:
<form><table border = 0 width = 95% cellspacing = 0 cellpading=2 class=carro2>
       <tr><th  align = right> Elige la modalidad de envio:&nbsp;&nbsp;&nbsp;
       <select onchange="OpenPage('pagina.php?val='+this.value,contenedor,loading)" class="carro2" name="envio"> 
       <option value="/checkout2.php">Correos - Paquete azul - 3 dias: &nbsp; 5'70 eu</option> 
       <option value="/checkout3.php">Nacex - Env. urgente - 24 horas: &nbsp;8,20 eu</option>  
       </select></th></tr></table></form>
Código:
<div id='contenedor'>
<br /><div id="loading" style="display:none; background-color:#FF0000; color:#FFFFFF; font-weight:bold;  width:120px;">Cargando...</div><br />
</div>
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #3 (permalink)  
Antiguo 02/04/2009, 03:04
 
Fecha de Ingreso: enero-2009
Ubicación: Valencia (España)
Mensajes: 29
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: ¿Se puede hacer esto?

Hola Farra.

Mucha gracias por tu respuesta.

Lo de ajax es bastante desconocido para mi, pero sabiendo que lo que me has respondido funciona, voy a ponerme a probar cosas hasta que funcione en mi web, y me voy iniciando en él.

Gracias de nuevo por la ayuda.
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 15:31.