Como puedo crear un formulario con varios botones y que cada boton ejecute un programa php

principiantePHP
18 de Marzo del 2008
saludos.
Estoy creando una serie de scripts para las tareas basicas de crear, modificar y borrar registros... hasta ahora tengo cada programa por separado y queria crear un solo formulario y debajo una serie de botones que me llamen o ejecuten cada programa, para manipular los datos que se muestran en el formulario.¿Como puedo hacer esto? no puedo con varios input type=submit ¿cierto?
gracias.

Omar Col
18 de Marzo del 2008
Me parece que es un poco mas lo que necesitas lo siguiente:

En cualquier parte del archivo donde esta el formulario defines un script que haga dinamico el direccionamiento del evento a disparar, algo asi:

<script>
function nombre_funcion(proceso,formul)
{
var x=esc(formul.nombre_variable_formulario.value);
... tantas variables como vayas a pasar por la URL;
// lo que sigue es lo importante
location=proceso+'?nombre_variable='+x+'&otra_variable='+valor_otra_variable;
}</script>

Claros hasta ahi ??

Ahora en el formulario:

<form name='nombre_formulario'>
<input type ... nombre de la variables a pasar>
<input type=... otra variable a pasar>
<--! OJO AQUI
<input type=button value=... name=... onclick=nombre_funcion('PROCESO.PHP',this.form)>
<input type=button value=... name=...
onclick=nombre_funcion('OTRO_PROCESO.PHP',this.form>
</form>

nombre_funcion=el que quiera (debe ser el mismo en el script y en el formulario)
proceso.php y otro_proceso.php son los php que va invocar en cada onclick diferente.

La verdad, si me entiende y lo escribe correctamente, funciona, este metodo lo utilizo en todo lo que hago.

Ahora si no me entiende, envieme un mail y le explico mas detalladamente.

Suerte

marco duarez
18 de Marzo del 2008
la mejor forma de aprender es enseñar y sobre todo con algun ejemplo...claro y conciso alli te va...

<?
include("conexion.php");
$hddaccion = $HTTP_POST_VARS['hddaccion'];
$caja = $HTTP_POST_VARS['caja'];
$tablename = $HTTP_POST_VARS['tablename'];
$formularionombre = $HTTP_POST_VARS['formularionombre'];
$txtcodigo = $HTTP_POST_VARS['txtcodigo'];
$txtarea = $HTTP_POST_VARS['txtarea'];

///*****************
function ultimoregistro($tablename)
{
global $conexion;
global $tablename;
// preparacion y ejecucion de la consulta
$cadsql="select * from autonum where tabla='$tablename'";
$cursorautonum= mysql_query($cadsql, $conexion);
// obteniendo el numero de filas del cursor
$num_filas=mysql_num_rows($cursorautonum);
// obteniendo el numero de campos(atributos o columnas) del cursor
$num_campos=mysql_num_fields($cursorautonum);
// recorrido del cursor y obtenemos la siguiente fila que nos interesa
while($lista=mysql_fetch_array($cursorautonum))
{
$ultreg=$lista['numero'];
$ultreg=$ultreg+1;
}
return $ultreg;
}
//********************/

function guardar()
{
global $conexion,$hddaccion,$caja;
global $tablename,$formularionombre;
global $txtcodigo,$txtarea;
// si el area es NUEVO
$ultreg= ultimoregistro("area");
$cadactautonum="update autonum set numero=$ultreg where tabla='$tablename'";
$cursorautonum=mysql_query($cadactautonum);
$cadacttabla="insert into $tablename(codigo,descripcion) values($ultreg,'$txtarea')";
echo $cadacttabla;
$cursortabla=mysql_query($cadacttabla);
}

function agregarfilagrid()
{
global $conexion;
global $caja;
$cadsql_consulta = "select codigo, descripcion from area;";
$cursor_consulta = mysql_query($cadsql_consulta);
while ($row = mysql_fetch_array($cursor_consulta))
{
echo "<tr onclick='javascript: Marca(this, ".$row["codigo"].", "".$row["descripcion"]."")'> n";
echo "<td><input type='hidden'>".$row["codigo"]."</td>n";
echo "<td>".$row["descripcion"]."</td> n";
echo "</tr> n";
}
}

function actualizar()
{
global $conexion,$hddaccion,$caja;
global $tablename,$formularionombre;
global $txtcodigo,$txtarea;
// si el area es modificada
$cad_modificatabla="update $tablename set descripcion='$txtarea' where codigo=$txtcodigo";
echo $cad_modificatabla;
$cursor_modificatabla=mysql_query($cad_modificatabla);
}

function borrar()
{
global $conexion,$hddaccion,$caja;
global $tablename,$formularionombre;
global $txtcodigo,$txtarea;
$cad_eliminaregistro = "delete from $tablename where codigo=$txtcodigo and descripcion='$txtarea'";
$cursor_eliminaregistro = mysql_query($cad_eliminaregistro);
}

?>
<html>
<head>
<title>ISIGROUP - CONFIGURACION - AREAS DE LA EMPRESA</title>
<link href='isigroup.css' rel='stylesheet' text='text/css'>
<script language="Javascript">
<!--
var IE4 = (document.all) ? true : false;
var lineaMarcada = "";

function CCA(CB)
{
if (CB.checked)
hL(CB);
else
dL(CB);
}

function hL(E)
{
if (IE4)
while (E.tagName!="TR") {E=E.parentElement;}
else
while (E.tagName!="TR") {E=E.parentNode;}
E.className = "H";
}

function dL(E)
{
if (IE4)
while (E.tagName!="TR") {E=E.parentElement;}
else
while (E.tagName!="TR") {E=E.parentNode;}
E.className = "";
}

function Marca(obj, intCodigo, strDescripcion)
{
if(lineaMarcada != "")
dL(lineaMarcada);
lineaMarcada = obj;
hL(obj);
window.document.formulario_area.txtcodigo.value = intCodigo;
window.document.formulario_area.txtarea.value = strDescripcion;
}
/////////////////////
function nuevo()
{
window.document.formulario_area.hddaccion.value="nuevo";
window.document.formulario_area.txtcodigo.disabled = true;
window.document.formulario_area.txtcodigo.value = '0';
window.document.formulario_area.txtarea.value = '';
}

function grabar()
{
var lcarea;
window.document.formulario_area.hddaccion.value="grabar";
lcarea=window.document.formulario_area.txtarea.value;
lccadena=lcarea.length;
if (lccadena==0)
{
alert("Debe de Ingresar el nombre del area");
}
else
{
enviar();
}
}

function enviar()
{
var respuesta=confirm("Acepta sus Datos");
if(respuesta==true)
{
window.document.formulario_area.submit();
}
}

function modificar()
{
window.document.formulario_area.hddaccion.value="modificar";
lcarea=window.document.formulario_area.txtarea.value;
lccadena=lcarea.length;
if (lccadena==0)
{
alert("Debe de Ingresar el nombre del area de la empresa");
}
else
{
if(confirm(" ¿ Realmente desea modificar los datos ? "))
window.document.formulario_area.submit();
}
}

function eliminar()
{
window.document.formulario_area.hddaccion.value = "eliminar";
if(confirm("¿ Está seguro de eliminar los registros ?"))
window.document.formulario_area.submit();
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF" text="#000000">
<center>
<p><font color="#000066"><font face="Arial, Helvetica, sans-serif"><strong>DATOS DEL AREA</strong></font></font></p>
<form name="formulario_area" method="post" action="fingreso_area_plus.php" enctype="multipart/form-data">
<table width="600" height="100" border="1" bordercolor="#000066">
<tr>
<td width="100" bgcolor="#000066">
<div align="center"><b><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">CAMPO</font></b></div>
</td>
<td width="260" bgcolor="#000066">
<div align="center"><b><font face="Arial, Helvetica, sans-serif" color="#FFFFFF">DATOS A INGRESAR</font></b></div>
</td>
</tr>
<tr>
<td width="100"><font color="#000066" size="2" face="Arial, Helvetica, sans-serif">Codigo</font></td>
<td width="260">
<?
$ultreg= ultimoregistro("area");
echo" <input type='text' name='txtcodigo' value='' ReadOnly (Default)>";
?>
</td>
</tr>
<tr>
<td width="100"><font color="#000066" size="2" face="Arial, Helvetica, sans-serif">Area</font></td>
<td width="260"> <input name="txtarea" type="text" id="area" size="40" maxlength="40"></td>
</tr>
<tr>
<td width='100%' colspan="2"><div align='center'>
<input name='search' type='button' value='Buscar' onClick="">
<input name='new' type='button' value='Nuevo' onClick='javascript: nuevo();'>
<input name='save' type='button' value='Guardar' onClick='javascript: grabar();'>
<input name='update' type='button' value='Modificar' onCLick='javascript: modificar();'>
<input name='delete' type='button' value='Eliminar' onClick='javascript: eliminar();'>
<input name='deshacer' type='reset' value='Deshacer'>
<input name='exit' type='button' value='Salir' onClick="window.close();">
<input type='hidden' name='hddaccion'>
<input type='hidden' name='tablename' value='area'>
<input type='hidden' name='formularionombre' value='fingreso_area_plus.php'>
</div></td>
</tr>
</table>

<table width='60%' border='1'>
<tr bordercolor='#CCCCCC' bgcolor='#000066'>
<td width='10%'><div align='center'><font color='#FFFFFF' size='2' face='Arial, Helvetica, sans-serif'>Codigo</font></div></td>
<td width='30%'><div align='center'><font color='#FFFFFF' size='2' face='Arial, Helvetica, sans-serif'>Area</font></div></td>
</tr>

<?

switch ($hddaccion)
{
case 'grabar':
guardar();
break;
case 'modificar':
actualizar();
break;
case 'eliminar':
borrar();
break;
}
agregarfilagrid();
?>
</table>
<!-- </table> -->
</form>
</center>
</body>
</html>

Cristian
18 de Marzo del 2008
Tienes que hacerlo así:

<form action="pagina1.php" method="post">
<input type="submit" value="Boton2">
</form>
<form action="pagina2.php" method="post">
<input type="submit" value="Boton1">
</form>

Es decir ... crear un formulario para cada boton ...

Ojala te sirva


Chao.

DiegoSolo
18 de Marzo del 2008
Es un quilombo, no entendí nada de lo anterior, pero la mejor forma es hacer varios submits. La idea es que si necesitás que todos los valores del formulario vayan a la página siguiente, no tesirve que hagas varios formularios diferentes. Entonces lo que tenés que hacer es definir tantos submits como necesites en el mismo form, así:

echo "<input type=submit value="Ir a página 1" name=pagina1>";
echo "<input type=submit value="Ir a página 2" name=pagina2>";
echo "<input type=submit value="Ir a página 3" name=pagina3>";

Entonces, en el formulario que recibe la variable $_POST identificás qué botón se apretó de acuerdo al nombre que tengas, por ej:

if ($_POST["pagina1"])
{
//Ejecutar Página 1
}
if ($_POST["pagina2"])
{
//Ejecutar Página 2
}
if ($_POST["pagina3"])
{
//Ejecutar Página 3
}

Bueno... ahí tienen, creo que es la forma más fácil y la mejor. Espero les sirva, suerte...