Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Form llama función y abre otra página

Estas en el tema de Form llama función y abre otra página en el foro de PHP en Foros del Web. Hola a todos, estoy empezando con php y aunque más o menos le voy cogiendo el truco, tengo una duda que creo que es bastante ...
  #1 (permalink)  
Antiguo 12/06/2014, 15:20
 
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Form llama función y abre otra página

Hola a todos,

estoy empezando con php y aunque más o menos le voy cogiendo el truco, tengo una duda que creo que es bastante básica pero que me tiene bloqueada.

Tengo una página ('intro.php') en la que creo un item mediante la introducción de algunos datos en un formulario. A continuación quiero que al hacer clic en 'continuar' me abra una nueva página 'calcular.php', pero que al mismo llame a una función ('grabaData()') que guarde los datos introducidos en mi base de datos.

El código que tengo en el form es el siguiente:

<form id="datosItem" action="calcular.php" onclick="grabaData();" method="post">

Este código si que me lleva a la página 'calcular.php', pero no me graba nada en la base de datos (la conexión con la bbdd funciona perfectamente).

¿Alguien me puede ayudar?

Muchas gracias.
  #2 (permalink)  
Antiguo 12/06/2014, 15:38
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Form llama función y abre otra página

Ese form tiene un onclick que no deberia ...........
__________________
Salu2!
  #3 (permalink)  
Antiguo 13/06/2014, 06:48
 
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Form llama función y abre otra página

Si, eso era una de mis suposiciones, pero lo que no sé es ¿cómo debería ponerlo para que primero llame a la función y después me abra la nueva página?

Muchas gracias de nuevo..
  #4 (permalink)  
Antiguo 13/06/2014, 06:51
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Form llama función y abre otra página

Debes "capturar" el evento "onSubmit" registrando una funcion que hace lo que necesitas y finalmente llama a document.form.submit()

Aca seguro te lo responden pero tambien te lo mueven al foro de Javascript
__________________
Salu2!
  #5 (permalink)  
Antiguo 13/06/2014, 09:17
 
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Form llama función y abre otra página

Mi código es el siguiente:


<html>
<head>
<title>Cálculos</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

</head>
<body>
<p>Hola App</p>
<br/>

<form id="datosPersonales" action="calcular.php" onSubmit="grabaData();" method="post">
<table>

<tr>
<td>Introduzca el nombre de cliente: </td>
<td><input type="text" name="name_control" autofocus required /></td>
</tr>
<tr>
<td>Teléfono: </td>
<td><input type="tel" name="tel_control" required /></td>
</tr>
<tr>
<td>Fecha: </td>
<td><input type="date" name="date_control" required/></td>
</tr>
</table>

<br/>
<button>Continuar pedido</button>

</form>

</body>
</html>



<?
function grabaData(){
$nombre=$_POST['name_control'];
$telefono=$_POST['tel_control'];
$fecha=$_POST['date_control'];
$link = mysql_connect('localhost:8080', 'root', 'root')
or die('No se pudo conectar: ' . mysql_error());

mysql_select_db('mi_db') or die('No se pudo seleccionar la base de datos');
$query = "INSERT INTO mi_db.datos VALUES (0,'".$nombre."','" .$fecha."','N',0)";
$result = mysql_query($query) or die('Consulta fallida: ' . mysql_error());

mysql_close($link);

}
?>



Yo lo que quiero es que al hacer clic en 'continuar pedido', me grabe los datos y al mismo tiempo me abra la pagina 'calcular.php'
Gracias de nuevo

Última edición por asf_il; 13/06/2014 a las 09:24
  #6 (permalink)  
Antiguo 13/06/2014, 09:39
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Form llama función y abre otra página

Pense querias llamar a una funcion grabaData() pero de Javascript !!!

Tienes una confusion ahi...... lo que necesitas es ejecutar la funcion grabaData() del archivo calcular.php y eso es asi:

Código HTML:
Ver original
  1. <form id="datosPersonales" action="calcular.php?action=grabadata"  method="post">
  2. ...
  3. </form>

En calcular.php .... si bien no es necesario llamar especificamente a una funcion excepto tengas varias... y existan varios flujos posibles........

Código PHP:
Ver original
  1. <?php
  2.  // separas la conexion:
  3. include "conexion_db.php";
  4.  
  5. // de muchas otras formas incluso mejor
  6. if ($action=='grabadata')
  7. {
  8.     mysql_select_db('mi_db') or die('No se pudo seleccionar la base de datos');
  9.     grabaData();
  10.     mysql_close($link);
  11. }
  12.  
  13. function grabaData()
  14. {
  15.     $nombre= isset($_POST['name_control'] ? $_POST['name_control'] : null;
  16.     $telefono=$_POST['tel_control']; // lo mismo con isset() para los demas campos
  17.     $fecha=$_POST['date_control'];
  18.     $link = mysql_connect('localhost:8080', 'root', 'root') or die('No se pudo conectar: ' . mysql_error());   
  19.     $query = "INSERT INTO mi_db.datos VALUES (0,'".$nombre."','" .$fecha."','N',0)";
  20.     $result = mysql_query($query) or die('Consulta fallida: ' . mysql_error());
  21.    
  22.     return $result;
  23. }
__________________
Salu2!
  #7 (permalink)  
Antiguo 13/06/2014, 09:41
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Form llama función y abre otra página

Sino directamente:

Código HTML:
Ver original
  1. <form id="datosPersonales" action="calcular.php"  method="post">

Código PHP:
Ver original
  1. <?php
  2.  // separas la conexion:
  3. include "conexion_db.php";
  4.  
  5.  
  6. mysql_select_db('mi_db') or die('No se pudo seleccionar la base de datos');
  7. grabaData();
  8. mysql_close($link);
  9. }
  10.  
  11. function grabaData()
  12. {
  13.     global $link;
  14.  
  15.     $nombre= isset($_POST['name_control'] ? $_POST['name_control'] : null;
  16.     $telefono=$_POST['tel_control']; // lo mismo con isset() para los demas campos
  17.     $fecha=$_POST['date_control'];
  18.     $query = "INSERT INTO mi_db.datos VALUES (0,'".$nombre."','" .$fecha."','N',0)";
  19.     $result = mysql_query($query) or die('Consulta fallida: ' . mysql_error());
  20.    
  21.     return $result;
  22. }

y se me olvido que $action proviene de $_POST['action']
__________________
Salu2!

Última edición por Italico76; 13/06/2014 a las 09:49
  #8 (permalink)  
Antiguo 14/06/2014, 03:46
 
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Form llama función y abre otra página

Ante todo muchísimas gracias por tu respuesta y por tu paciencia!

He probado a hacer lo que me has dicho y he comprobado y no llega a entrar en el 'if($action=='grabadata')'

He probado a hacerlo sin la condición y si que funciona, el problema es que necesito dicha condición porque no quiero que grabe datos todas las veces...

Última edición por asf_il; 14/06/2014 a las 04:29
  #9 (permalink)  
Antiguo 14/06/2014, 05:40
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Form llama función y abre otra página

Código PHP:
Ver original
  1. $action = isset($_POST['action']) ? $_POST['action']  : null;
  2.  
  3. if($action=='grabadata'){
  4. }


No leiste mi comentario final ?

Cita:
y se me olvido que $action proviene de $_POST['action']
__________________
Salu2!
  #10 (permalink)  
Antiguo 14/06/2014, 05:58
 
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Form llama función y abre otra página

Si, si que lo había leido, pero aún así no entra por el 'if'..

por un lado tengo esto en 'intro.php':

Código PHP:
<form id="datosPersonales" action="calcular.php?action=grabadata"  method="post"
y por otro en 'calcular.php':

Código PHP:
<?
$action 
= isset($_POST['action']) ? $_POST['action']  : null;

if (
$action =='grabadata')
{
        
$nombre=$_POST['name_control'];
        
$telefono=$_POST['tel_control'];
        
$fecha=$_POST['date_control'];
        
$link mysql_connect('localhost:8080''root''root')
        or die(
'No se pudo conectar: ' mysql_error());
        
mysql_select_db('mi_db') or die('No se pudo seleccionar la base de datos');
        
$query "INSERT INTO mi_db.datos VALUES (0,'".$nombre."','" .$fecha."','N',0)";
        
$result mysql_query($query) or die('Consulta fallida: ' mysql_error());
        
mysql_close($link);
}

?>
Ahora mismo lo tengo así puesto, pero más o menos siendo así tendría que funcionar..
qué torpe soy!
  #11 (permalink)  
Antiguo 14/06/2014, 11:11
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Form llama función y abre otra página

Me imagino habras hecho un var_dump($action) o var_dump($_POST) para ver que tienes, cierto ?
__________________
Salu2!
  #12 (permalink)  
Antiguo 14/06/2014, 13:02
 
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Form llama función y abre otra página

Al hacer
Código PHP:
Ver original
  1. var_dump($action)
me devuelve
Código PHP:
Ver original
  1. bool(false)
, y al hacer
Código PHP:
Ver original
  1. var_dump($_POST)
me devuelve
Código PHP:
Ver original
  1. array(3) { ["name_control"]=> string(17) "Ahora si lo creas" ["tel_control"]=> string(9) "000000000" ["date_control"]=> string(10) "2014/05/24" }
  #13 (permalink)  
Antiguo 14/06/2014, 13:55
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Form llama función y abre otra página

Pido disculpas........ y enfatizo que 'action' no es necesario de pronto en este caso solo que quiero introducirte en el concepto de los "controladores" y sus "acciones" como parte del modelo MVC,

Código PHP:
Ver original
  1. $action = isset($_GET['action']) ? $_GET['action']  : null;

<<< perdon.. va por GET !!!
__________________
Salu2!
  #14 (permalink)  
Antiguo 15/06/2014, 11:09
 
Fecha de Ingreso: febrero-2014
Mensajes: 15
Antigüedad: 10 años, 2 meses
Puntos: 0
Respuesta: Form llama función y abre otra página

funciona! genial! muchísimas gracias!!

Etiquetas: form, formulario, llama, página
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 12:48.