Foros del Web » Programando para Internet » PHP »

Pasar datos del form sin presionar el boton Envia

Estas en el tema de Pasar datos del form sin presionar el boton Envia en el foro de PHP en Foros del Web. Hola a todos, quisiera que me ayudaran una vez mas; la idea es simple, tengo un form, con un <select>, lo que yo quisiera hacer ...
  #1 (permalink)  
Antiguo 17/12/2011, 06:08
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 13 años, 7 meses
Puntos: 28
Pasar datos del form sin presionar el boton Envia

Hola a todos, quisiera que me ayudaran una vez mas; la idea es simple,

tengo un form, con un <select>, lo que yo quisiera hacer es que cuando escojo una opcion del select, el input type que esta a la derecha cambie, y para esto necesito que cada vez que cambio de opcion (select), el valor sea enviado (como si hubiera dado click en el boton "envia");

La idea es esta (ambos hacen lo mismo, solo que la segunda opcion me vino en mente mientras escribia el post), todos los a href de la segunda opcion no son correctos, pero la cosa principal es como enviar el valor del selec simplemente al escogerlo:

Código:
<form method= "post" action="mismapagina.php">
Tramite:<select size="1" name="modo">
    <option value="ids">IDS</option>
    <option value="nomcog">Nome e Cognome</option>
	<option value="cognome">Cognome</option>
	<option value="citta">Citta</option>
	<option value="cap">CAP</option>
	<option value="annonascita">Anno di nascita</option>
	<option value="datanascita">Data di nascita</option>
</select>
<?php
$modo=$_POST["modo"];

switch($modo)
{
    case "ids":
    echo "<input type='text' size='3' maxlength='5' name='ids' />";
    break;
    case "nomcog":
    echo "Nome: <input type='text' size='30' maxlength='30' name='nome' /> Cognome: <input type='text' size='30' maxlength='30' name='cognomr'";
    break;
    case "cognome":
    echo "<input type='text' size='30' maxlength='30' name='cognomr' />";
    exit();
    case "citta":
    <input type='text' size='15' maxlength='15' name='citta' />;
    exit();
    case "cap":
    <input type='text' size='5' maxlength='5' name='cap' />;
    exit();
    case "annonascita":
    <input type='text' size='4' maxlength='4' name='aaaa' title='aaaa' />
    exit();
    case "datanascita":
    <input type='text' size='2' maxlength='2' name='gg' title='gg' /><input type='text' size='2' maxlength='2' name='mm' title='mm' /><input type='text' size='4' maxlength='4' name='aaaa' title='aaaa' />
    exit();
}
?>
<br /><br />
<input type="submit" name="invia" value="Invia" /> 
<input type="reset" value="Annulla" />
<a href="index.html" style=" text-decoration: none;"><input type="button" value="Torna al menu"/></a>
</form>
<?php
$invia=$_POST["invia"];
if($invia=="Invia")
{
switch($modo)
{
    case "ids":
    header('Location: stids.php');
    break;
    case "nomcog":
    header('Location: stnomcog.php');
    break;
    case "cognome":
    header('Location: stcognome.php');
    exit();
    case "citta":
    header('Location: stcitta.php');
    exit();
    case "cap":
    header('Location: stcap.php');
    exit();
    case "annonascita":
    header('Location: stannona.php');
    exit();
    case "datanascita":
    header('Location: stdatana.php');
    exit();
}
}
?>
o sino:

Código:
<form method= "post" action="mismapagina.php">
Tramite:<select size="1" name="modo">
    <option value="ids">IDS</option>
    <option value="nomcog">Nome e Cognome</option>
	<option value="cognome">Cognome</option>
	<option value="citta">Citta</option>
	<option value="cap">CAP</option>
	<option value="annonascita">Anno di nascita</option>
	<option value="datanascita">Data di nascita</option>
</select>
<?php
$modo=$_POST["modo"];

switch($modo)
{
    case "ids":
    echo "<input type='text' size='3' maxlength='5' name='ids' /> \n\n<a href="stids.php" style=" text-decoration: none;"><input type="button" value="Cerca"/></a>";
    break;
    case "nomcog":
    echo "Nome: <input type='text' size='30' maxlength='30' name='nome' /> Cognome: <input type='text' size='30' maxlength='30' name='cognomr' />\n\n<a href="stnomcog.php" style=" text-decoration: none;"><input type="button" value="Cerca"/></a>";
    break;
    case "cognome":
    echo "<input type='text' size='30' maxlength='30' name='cognomr'/>\n\n<a href="index.html" style=" text-decoration: none;"><input type="button" value="Cerca"/></a>";
    exit();
    case "citta":
    echo "<input type='text' size='15' maxlength='15' name='citta' />\n\n<a href="index.html" style=" text-decoration: none;"><input type="button" value="Cerca"/></a>";
    exit();
    case "cap":
    echo "<input type='text' size='5' maxlength='5' name='cap' />\n\n<a href="index.html" style=" text-decoration: none;"><input type="button" value="Cerca"/></a>";
    exit();
    case "annonascita":
    echo "<input type='text' size='4' maxlength='4' name='aaaa' title='aaaa' />\n\n<a href="index.html" style=" text-decoration: none;"><input type="button" value="Cerca"/></a>";
    exit();
    case "datanascita":
    echo "<input type='text' size='2' maxlength='2' name='gg' title='gg' /><input type='text' size='2' maxlength='2' name='mm' title='mm' /><input type='text' size='4' maxlength='4' name='aaaa' title='aaaa' />\n\n<a href="index.html" style=" text-decoration: none;"><input type="button" value="Cerca"/></a>";
    exit();
}
?>
</form>

Gracias de antemano...
  #2 (permalink)  
Antiguo 17/12/2011, 10:32
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 10 meses
Puntos: 288
Respuesta: Pasar datos del form sin presionar el boton Envia

y hacelo con js
  #3 (permalink)  
Antiguo 17/12/2011, 12:49
Avatar de jamie_88  
Fecha de Ingreso: abril-2011
Ubicación: Lima
Mensajes: 161
Antigüedad: 13 años, 7 meses
Puntos: 28
Respuesta: Pasar datos del form sin presionar el boton Envia

y como tendria que hacerlo en javascript? o como lo busco?

o lo mejor es abrir un nuevo tema en javascript?
  #4 (permalink)  
Antiguo 17/12/2011, 12:55
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 8 meses
Puntos: 326
Respuesta: Pasar datos del form sin presionar el boton Envia

Básicamente, con el evento "onchange", por ejemplo, sabrás cuando cambiar el valor de un select. Ahí puedes hacer una función js que "envíe" el form (algo así como document.form[0].submit() o algo parecido era!)
__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 17/12/2011, 14:30
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 4 meses
Puntos: 37
Respuesta: Pasar datos del form sin presionar el boton Envia

Lo que quieres hacer se logra manejando Ajax con Jquery. Mira esta referencia:

www.sitepoint.com/ajax-jquery/

Si no quieres usar Jquery prueba esto:

Incluyes una referencia a un archivo JS que tenga este contenido:

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. <!--//Quick Javascript Ajax
  3. //Browser Support Code
  4. function Ajax(App,Params,Container,Method){
  5.     var ajaxRequest;  // The variable that makes Ajax possible!
  6.     try{
  7.         // Opera 8.0+, Firefox, Safari
  8.         ajaxRequest = new XMLHttpRequest();
  9.     } catch (e){
  10.         // Internet Explorer Browsers
  11.         try{
  12.             ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
  13.         } catch (e) {
  14.             try{
  15.                 ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
  16.             } catch (e){
  17.                 // Something went wrong
  18.                 alert("Your browser broke!");
  19.                 return false;
  20.             }
  21.         }
  22.     }
  23.     // Create a function that will receive data sent from the server
  24.     ajaxRequest.onreadystatechange = function(Container){
  25.         if(ajaxRequest.readyState == 4){
  26.             var ajaxDisplay = document.getElementById(Container);
  27.             ajaxDisplay.innerHTML = ajaxRequest.responseText;
  28.         }
  29.     }
  30.     if(Method!='POST' && Method!='GET')Method='POST';
  31.   if(Params!='')Params='?'+Params;
  32.   ajaxRequest.open(Method, App + Params, true);
  33.     ajaxRequest.send(null);
  34. }
  35. //-->
  36. </script>

Donde:

App es la ruta al archivo PHP que va a generar el contenido nuevo para el select.
Params es la lista de parámetros que le vas a pasar a PHP. Ej: valor1=1&valor2&2&valor3=3
Container es el Id del objeto que va a contener los resultados, en tu caso el select que vas a rellenar.
Method es el método a usar para la llamada a PHP ('POST' o 'GET') (es case sentitive )

En el select1 pones por ejemplo: onchange="Ajax('MiScript.PHP','selecccionado='+thi s.value,'IddelSelect2','POST')"

Luego el código MiScript.PHP te lo tienes que ingeniar para que te devuelva la concatenación de los options que se van a incluir en el select2. Ej:

Código PHP:
Ver original
  1. $valor_entrada = $_POST['seleccionado'];
  2. //Haces la consulta en base a $valor_entrada y generas los resultados que va a contener el select2
  3. echo '<option>'.$Valor1.'</option>';
  4. echo '<option>'.$Valor2.'</option>';
  5. echo '<option>'.$Valor3.'</option>';

Ahora cada vez que cambie la selección de select1 se llama a MiScript.PHP y se asigna su resultado HTML al interior de select2. Como lo hace Ajax. Por lo menos así lo explican en la referencia, la cual lamentablemente ya no tengo. Aclaro que esto yo no lo he probado. Pero si funciona es exactamente lo que necesitas.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #6 (permalink)  
Antiguo 17/12/2011, 14:33
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 4 meses
Puntos: 37
Respuesta: Pasar datos del form sin presionar el boton Envia

Lo que quieres hacer se logra manejando Ajax con Jquery. Mira esta referencia:

www.sitepoint.com/ajax-jquery/

Si no quieres usar Jquery prueba esto:

Incluyes una referencia a un archivo JS que tenga este contenido:

Código Javascript:
Ver original
  1. <script language="javascript" type="text/javascript">
  2. <!--//Quick Javascript Ajax
  3. //Browser Support Code
  4. function Ajax(App,Params,Container,Method){
  5.     var ajaxRequest;  // The variable that makes Ajax possible!
  6.     try{
  7.         // Opera 8.0+, Firefox, Safari
  8.         ajaxRequest = new XMLHttpRequest();
  9.     } catch (e){
  10.         // Internet Explorer Browsers
  11.         try{
  12.             ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
  13.         } catch (e) {
  14.             try{
  15.                 ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
  16.             } catch (e){
  17.                 // Something went wrong
  18.                 alert("Your browser broke!");
  19.                 return false;
  20.             }
  21.         }
  22.     }
  23.     // Create a function that will receive data sent from the server
  24.     ajaxRequest.onreadystatechange = function(Container){
  25.         if(ajaxRequest.readyState == 4){
  26.             var ajaxDisplay = document.getElementById(Container);
  27.             ajaxDisplay.innerHTML = ajaxRequest.responseText;
  28.         }
  29.     }
  30.     if(Method!='POST' && Method!='GET')Method='POST';
  31.   if(Params!='')Params='?'+Params;
  32.   ajaxRequest.open(Method, App + Params, true);
  33.     ajaxRequest.send(null);
  34. }
  35. //-->
  36. </script>

Donde:

App es la ruta al archivo PHP que va a generar el contenido nuevo para el select.
Params es la lista de parámetros que le vas a pasar a PHP. Ej: valor1=1&valor2&2&valor3=3
Container es el Id del objeto que va a contener los resultados, en tu caso el select que vas a rellenar.
Method es el método a usar para la llamada a PHP ('POST' o 'GET') (es case sentitive )

En el select1 pones por ejemplo: onchange="Ajax('MiScript.PHP','selecccionado='+thi s.value,'IddelSelect2','POST')"

Luego el código MiScript.PHP te lo tienes que ingeniar para que te devuelva la concatenación de los options que se van a incluir en el select2. Ej:

Código PHP:
Ver original
  1. $valor_entrada = $_POST['seleccionado'];
  2. //Haces la consulta en base a $valor_entrada y generas los resultados que va a contener el select2
  3. echo '<option>'.$Valor1.'</option>';
  4. echo '<option>'.$Valor2.'</option>';
  5. echo '<option>'.$Valor3.'</option>';

Ahora cada vez que cambie la selección de select1 se llama a MiScript.PHP y se asigna su resultado HTML al interior de select2. Como lo hace Ajax. Por lo menos así lo explican en la referencia, la cual lamentablemente ya no tengo. Aclaro que esto yo no lo he probado. Pero si funciona es exactamente lo que necesitas.

Saludos.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.
  #7 (permalink)  
Antiguo 17/12/2011, 17:01
Avatar de jorgelpadronb  
Fecha de Ingreso: agosto-2011
Ubicación: Cuba
Mensajes: 281
Antigüedad: 13 años, 4 meses
Puntos: 37
Respuesta: Pasar datos del form sin presionar el boton Envia

Disculpen la reiteración. Fué un accedente.
__________________
Los hombres pequeños, nunca se sienten pequeños; los hombres grandes, nunca se sienten grandes.

No sé quien fué el que dijo eso, pero está bueno.

Etiquetas: envia, html, presionar, botones, formulario
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 13:25.