[ Foro de PHP ]

Ir a varias páginas con un solo formulario.

30-Jul-2014 17:41
Jose Valdes Sirvent
3 Respuestas

Me presento primero: Soy Jose, y estoy realizando un proyecto en php en el que me han surgido varias dudas.. La mayoría las estoy resolviendo yo solo, pero luego hay algunas que me traen más problemas, y esta, es una de ellas:

Cómo puedo hacer que un formulario me lleve a "varias" direcciones distintas? Lo que estoy haciendo es poner varios input tipo submit, y que el formulario me envie a una página intermedia "gestion.php", que ya procesa según el input que has pinchado.. ejemplo:

 
<form action="gestion.php" method="post">
   <input type="submit" name="borrar" value="borrar"/>
   <input type="submit" name="modificar" value="modificar"/>
   <input type="submit" name="pagar" value="pagar"/>
</form>
 


y ya en gestion.php:

 
if ($_POST["modificar"])
{  acciones... }
 
if ($_POST["borrar"])
{  acciones... }
 
if ($_POST["pagar"])
{  acciones... }
 


Y hasta aquí todo bien, pero ahora me surge un problema.. cómo puedo hacer para que dentro de esas {acciones..} directamente me redirija automáticamente a borrar.php, modificar.php, o pagar.php...?

Y peor aún... Cómo puedo hacer para que ese borrar.php o modificar.php o pagar.php, reciba todas las variables que recibía la página intermedia gestion.php?

No se si me he explicado bien.. he leido que la forma más correcta sería con ajax y javascript.. el problema es que no tengo ni idea ni de javascript, ni de ajax.. En fin!! muchas gracias a todos por adelantado!!! :D


30-Jul-2014 18:10
Jose Valdes Sirvent

Vale, parece que he encontrado una forma mucho más sencilla, y que me soluciona todo el problema de golpe:

 
        <form method="post">
            <input type="submit" name="verPagos" onclick="this.form.action='listadoPagos.php'" value="Ver Pagos"/>
            <input type="submit" name="participar" onclick="this.form.action='participar.php'" value="Participar"/>
 


Este código te crea dos botones, que te cambian el action de formulario al pulsarlos, y de esa forma me evito la página intermedia, y envia las variables por post... PERFECTO!! :D


31-Jul-2014 14:39
Nacho Cabanes (+30)

Esa forma es buena, y soluciona la mayoría de problemas que comentabas. Hay otras muchas alternativas, como que no todo sea parte de un formulario, sino usar "button" que sean enlaces a las otras páginas, y pasar los datos por GET que necesites (que sólo debería ser el código del cliente o del elemento que sea).

Aun así, me tomo la libertad de hacerte un comentario. Como recomendación, en tu equipo de desarrollo usa una versión reciente de PHP y dile que te muestre todo tipo de Warnings. Verás que es fácil que te dé un Warning en órdenes como "if ($_POST["pagar"]) ..." porque si no has hecho clic en ese botón, esa variable no está definida. Es más seguro comprobar si existe la variable con "isset":

 
if (isset($_POST["pagar"])) ...
 




31-Jul-2014 18:07
Jose Valdes Sirvent

Gracias Nacho! Ya uso php superior a la versión 5, y uso isset para todo. Y sí, me da warnings por casi todo..
Al final lo solucioné como dije, y ya parece que se ha quedado perfecto... ;)
Ahora tengo problemas con los mails.. :P






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)