Combobox con url

Que onda experto aquí molestando tengo un formulario donde tengo dos campo de texto y uno de combobox en el combobox tengo 5 opciones donde puedo eligir alguna de ella me gustaría saber como puedo ponerle una link diferente a cada opción por decir lleno los campos y en el combobox elijo la primera opción al momento de enviar que me dirija a un url y después si elijo la segunda opción que me mande a otra url como se aria este es mi formulario

<form name="formulario" action = "" method="post" >
Nombre Completo
<input name="nombre" type="text" id="nombre" size="50" >
edad
<input type="text" name="edad">
Escuela
<p><select name="escuela" id="escuela"><option value="">Elija escuela</option>
<option value="UVM">UVM</option>
<option value="TESE">TESE</option>
<option value="IPN">IPN</option>
<option value="UNAM">UNAM</option>
</select>
<input name="Enviar" type="submit" style="background-color:#999999; color:#FFFFFF" id="Enviar" value="Enviar" size="3" >
<input name="reset" type="reset" style="background-color: #999999; color:#FFFFFF" value="Limpiar" >

Aquí en el combobox debo de eligir una opción pero cada opción quiero un url diferente al momento que ponga el botón de enviar

1 respuesta

Respuesta
1

Intenta con esto. Está documentado

<html>
     <head>
         <title>dsdas</title>
         <script>
             //RESCATO EL VALOR DESDE EL ELEMENTO SELECT
             function modForm(valor){
                //REFERENCIO AL FORMULARIO y lo guardo en una variable
                //asi ahorro escribir la misma funcion muchas veces
                formulario = document.getElementById("formulario");
                //en función del valor cambio el action del formulario
                if(valor=='UVM'){
                   //modifico la propiedad actio directamente gracias a la referencia
                   formulario.action="index1.html";
                }
                if(valor=='TESE'){
                      formulario.action="index2.html";
                }
                if(valor=='IPN'){
                     formulario.action="index3.html";
                }
                if(valor=='UNAM'){
                     formulario.action="index4.html";
                }
            }
        </script>
     </head>
     <body>
          <!-- le agrego el id para reconocerlo desde javascript facilmente
          <form name="formulario" id="formulario" action = "" method="post" >
          Nombre Completo
          <input name="nombre" type="text" id="nombre" size="50" >
          edad
          <input type="text" name="edad">
          Escuela
          <p>
          <!-- LE DIGO QUE CUANDO SE HAGA UN CAMBIO DEL VALOR DEL SELECT SE 
              ENVÍE EL VALOR DEL MISMO A LA FUNCION modForm-->
          <select name="escuela" id="escuela" onchange="modForm(this.value)">
               <option value="">Elija escuela</option>
               <option value="UVM">UVM</option>
               <option value="TESE">TESE</option>
               <option value="IPN">IPN</option>
               <option value="UNAM">UNAM</option>
          </select>
          </p>
          <input name="Enviar" type="submit" style="background-color:#999999; color:#FFFFFF" id="Enviar" value="Enviar" size="3" >
          <input name="reset" type="reset" style="background-color: #999999; color:#FFFFFF" value="Limpiar" >
      </form>
    </body>
</html>

experto ya lo hice como me avías dicho pero que crees que no me lo guarda en mi base de datos ese formulario lo tengo conectado a una base de datos no me guarda los datos de los 3 campos el de nombre edad y el de escuela

ahora cambie esto:

if(valor=='TESE'){

formulario.action="index2.html";

por esto

if(valor=='TESE'){
formulario.action="https://www.google.com";

me manda esto:405. Eso es un error.
El método de la petición de POST no es apropiado para la URL /? seguro = active & ssui = encendido . Eso es todo lo que sabemos.

Te dejo este link con información del error http 405

<a>http://www.checkupdown.com/status/E405_es.html</a>

La idea de lo que estamos trabajando es para que cada vez que cambies el valor del select y hagas submit del formulario, te envié la información del formulario dentro del mismo sitio y que la proceses con tus scripts.

Si intentas hace eso sobre el sitio de google es evidente que lo interpretará como una acción "maligna" estás intentando enviar información de tu formulario a los "reyes" de la internet.

Para esto trabaja con páginas de tu sitio o con sitios a los cuales tengas permisos para trabajar.

este es mi formulario completo conectada a una base de datos ya modifique lo que me mandaste pero en la url me manda error no me guarda los datos en mi base y no me sale el alerta de números duplicados ya en mi campo e puesto como única pero no así como esta ahorita si me los guarda y me sale el alerta cuando hay numero duplicados pero cuando le pongo los cambios que me mandaste no me los guarda y me dirige error cuando le pongo una url

<?php
if ($_POST){
function conectarse(){
if(!$conect=mysql_connect("localhost","",""))
die("Error en conexión a base de datos");
if(!mysql_select_db("escuela",$conect))
die("Error al seleccionar base de datos");
@mysql_query("SET NAMES 'utf8'");
return $conect;
}
$conexión=conectarse();
$nombre=$_POST["nombre"];
$edad=$_POST["edad"];
$escuela=$_POST["escuela"];
$resultado=mysql_query ("INSERT INTO datos (nombre,paterno,materno,expediente,empresa) VALUES ('".$nombre."','".$edad."','".$escuela."')");
if(!$resultado){
echo "<script type='text/javascript'>alert('El numero ya fue registrado');</script>";
}else{
echo "<script type='text/javascript'>alert('Guardado exitoso');</script>";
}
echo mysql_error();//con esta linea podrías ver si hay un error en el sql
mysql_close($conexión);
}
?>

<form name="formulario" action = "" method="post" >
Nombre Completo
<input name="nombre" type="text" id="nombre" size="50" >
edad
<input type="text" name="edad">
Escuela
<p><select name="escuela" id="escuela"><option value="">Elija escuela</option>
<option value="UVM">UVM</option>
<option value="TESE">TESE</option>
<option value="IPN">IPN</option>
<option value="UNAM">UNAM</option>
</select>
<input name="Enviar" type="submit" style="background-color:#999999; color:#FFFFFF" id="Enviar" value="Enviar" size="3" >
<input name="reset" type="reset" style="background-color: #999999; color:#FFFFFF" value="Limpiar" >

¿Qué error te arroja?

si ya puse otro url y si ya me quedo, ahora lo que no me hace es guardar los datos en mi base de datos no me guarda el nombre ni la edad y tampoco la escuela cuando le doy enviar si me redirecciona a otra pagina cuando yo selecciono una escuela pero la situación es que no me guarda los datos y en mi base de datos puse como única en el campo de edad entonces cuando le doy enviar me lo envía a ala pagina que puse pero no guarda nada y menos me hacer el alerta cuando es la misma edad

Te recomiendo hacer un echo a la sentencia sql para ver si falla la sentencia y poner atención si php genera algún error por algún problema de sintaxis o de la información enviada.

Como desconozco el error no se si el problema está en la conexión a la base de datos, en las variables o en otra parte.

Si tienes información sobre el error y si funciona bien la sentencia sql te agradecería que me envíes eso para continuar.

ok lo que pasa que mi formulario así como te lo mande completo conectada a una base de datos si me guarda los registros en mi base cuando ingreso :

nombre xxxx

edad xxx

seleccione la escuela: xxx

hasta ahí si me guarda los registros en mi base pero cuando le pongo el script y el onChange="modForm(this.value) que me mandaste si puedo ingresar y me redirecciona a otra pagina que yo quiera pero lo que no hace es guardar los registros que ingreso a mi base de datos

Lo que tienes que hacer es guardar los datos en cada pagina a la cual redireccionas.

El post no se hará nunca en el mismo script donde está el formulario ya que antes de eso enviará toda la información a la página donde has hecho que se vaya el script.

Tienes que conectar a la base de datos y guardar en cada script que has generado y revisar como funcionan los flujos en http cuando modificas el action de un formulario ya que presiento que tienes confusiones con esa parte.

si creo que hay un pequeña confusión yo no me e podido explicar mira esta es mi formulario completo conectada a una base de datos vale

<?php
if ($_POST){
function conectarse(){
if(!$conect=mysql_connect("localhost","",""))
die("Error en conexión a base de datos");
if(!mysql_select_db("escuela",$conect))
die("Error al seleccionar base de datos");
@mysql_query("SET NAMES 'utf8'");
return $conect;
}
$conexión=conectarse();
$nombre=$_POST["nombre"];
$edad=$_POST["edad"];
$escuela=$_POST["escuela"];
$resultado=mysql_query ("INSERT INTO datos (nombre,paterno,materno,expediente,empresa) VALUES ('".$nombre."','".$edad."','".$escuela."')");
if(!$resultado){
echo "<script type='text/javascript'>alert('El numero ya fue registrado');</script>";
}else{
echo "<script type='text/javascript'>alert('Guardado exitoso');</script>";
}
echo mysql_error();//con esta linea podrías ver si hay un error en el sql
mysql_close($conexión);
}
?>
<form name="formulario" action = "" method="post" >
Nombre Completo
<input name="nombre" type="text" id="nombre" size="50" >
edad
<input type="text" name="edad">
Escuela
<p><select name="escuela" id="escuela"><option value="">Elija escuela</option>
<option value="UVM">UVM</option>
<option value="TESE">TESE</option>
<option value="IPN">IPN</option>
<option value="UNAM">UNAM</option>
</select>
<input name="Enviar" type="submit" style="background-color:#999999; color:#FFFFFF" id="Enviar" value="Enviar" size="3" >
<input name="reset" type="reset" style="background-color: #999999; color:#FFFFFF" value="Limpiar" >

si yo ejecuto haci mi formulario si me guarda los registros en mi base y funciona bien pero si yo le pongo el script que me mandaste que es así

<html>
<head>
<title>dsdas</title>
<script>
//RESCATO EL VALOR DESDE EL ELEMENTO SELECT
function modForm(valor){
//REFERENCIO AL FORMULARIO y lo guardo en una variable
//así ahorro escribir la misma función muchas veces
formulario = document.getElementById("formulario");
//en función del valor cambio el action del formulario
if(valor=='UVM'){
//modifico la propiedad actio directamente gracias a la referencia
formulario.action="index1.html";
}
if(valor=='TESE'){
formulario.action="index2.html";
}
if(valor=='IPN'){
formulario.action="index3.html";
}
if(valor=='UNAM'){
formulario.action="index4.html";
}
}
</script>
</head>
<body>
<!-- le agrego el id para reconocerlo desde javascript fácilmente
<form name="formulario" id="formulario" action = "" method="post" >
Nombre Completo
<input name="nombre" type="text" id="nombre" size="50" >
edad
<input type="text" name="edad">
Escuela
<p>
<!-- LE DIGO QUE CUANDO SE HAGA UN CAMBIO DEL VALOR DEL SELECT SE
ENVÍE EL VALOR DEL MISMO A LA FUNCIÓN modForm-->
<select name="escuela" id="escuela" onchange="modForm(this.value)">
<option value="">Elija escuela</option>
<option value="UVM">UVM</option>
<option value="TESE">TESE</option>
<option value="IPN">IPN</option>
<option value="UNAM">UNAM</option>
</select>
</p>
<input name="Enviar" type="submit" style="background-color:#999999; color:#FFFFFF" id="Enviar" value="Enviar" size="3" >
<input name="reset" type="reset" style="background-color: #999999; color:#FFFFFF" value="Limpiar" >
</form>
</body>
</html>

ya no me guarda los datos en mi base de datos es script esta muy bien y me funciona de maravilla pero lo que no me hace ahora es guardar los registros en mi base de datos como puedo hacerle para que ingrese yo los datos le de enviar me guarde los datos en mi base y me redireccione a otra pagina cuando elija una escuela

Hay que rehacer tu formulario. Solo hemos perdido el tiempo con todo esto.

Dame un par de horas y te respondo con una solución especifica a lo que realmente deseas.

 

Descarta todo lo hecho. No estás entendiendo como funcionan los flujos en las solicitudes post y eso ha provocado que hayas formulado mal la pregunta y hacernos perder tiempo en esto.

Lo que deseas hacer es que el submit se ejecute sobre la misma página pero cuando termine de ejecutarse el guardado del registro te envíe a una pagina que has prediseñado.

Para esto tienes que olvidar todo el javascript que hicimos al comienzo y en el momento de guardar la información hacer un redirect con php para que te envíe e la pagina de aterrizaje que deseas mostrar.

Intenta con esto.

Tienes que poner atención en el insert ya que estas pidiendo 5 campos y solo estas estregando 3 por lo cual tu query no funcionará

$resultado=mysql_query ("INSERT INTO datos 
(nombre,paterno,materno,expediente,empresa) VALUES 
('".$nombre."','".$edad."','".$escuela."')");

<?php
if ($_POST){
 function conectarse(){
 if(!$conect=mysql_connect("localhost","",""))
 die("Error en conexión a base de datos");
 if(!mysql_select_db("escuela",$conect))
 die("Error al seleccionar base de datos");
 @mysql_query("SET NAMES 'utf8'");
 return $conect;
 }
 $conexión=conectarse();
 $nombre=$_POST["nombre"];
 $edad=$_POST["edad"];
 $escuela=$_POST["escuela"];
$resultado=mysql_query ("INSERT INTO datos (nombre,paterno,materno,expediente,empresa) VALUES ('".$nombre."','".$edad."','".$escuela."')");
 echo mysql_error();//con esta linea podrías ver si hay un error en el sql
 mysql_close($conexión);
 if(!$resultado){
 echo "<script type='text/javascript'>alert('El numero ya fue registrado');</script>";
 }else{
 echo "<script type='text/javascript'>alert('guardado exitoso');</script>";
 switch($_POST["escuela"]){
 case "UVM":
 header("Location: index1.php");
 break;
 case "TESE":
 header("Location: index2.php");
 break;
 case "IPN":
 header("Location: index3.php");
 break;
 case "UNAM":
 header("Location: index4.php");
 break;
 }
 }
}
?>
<html>
<head>
<title>dsdas</title>
</head>
<body>
<form name="formulario" id="formulario" action = "" method="post" >
Nombre Completo
<input name="nombre" type="text" id="nombre" size="50" >
edad
<input type="text" name="edad">
Escuela
<p>
<select name="escuela" id="escuela">
<option value="">Elija escuela</option>
<option value="UVM">UVM</option>
<option value="TESE">TESE</option>
<option value="IPN">IPN</option>
<option value="UNAM">UNAM</option>
</select>
</p>
<input name="Enviar" type="submit" style="background-color:#999999; color:#FFFFFF" id="Enviar" value="Enviar" size="3" >
<input name="reset" type="reset" style="background-color: #999999; color:#FFFFFF" value="Limpiar" >
</form>
</body>
</html>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas