Llamar funcion de una clase php desde jquery

Iniciado por Ethgar, 24 Noviembre 2015, 18:56 PM

0 Miembros y 1 Visitante están viendo este tema.

Ethgar

Buenas tardes, he tenido la necesidad de ejecutar una función desde jquery, lo explico un poco más;
Tengo un archivo "Funciones.php" donde tengo obviamente mis funciones, y tengo un archivo en el que tengo un formulario, el cual mandaría la información a guardar, utilizando jquery logro enviar el formulario a un archivo externo (Sin funciones), el cual recibe el post y lo guarda, tuve que hacerlo así por que no he podido lograr que mande el formulario a una función; les dejo el siguiente código que es lo que tengo:

archivo funciones.php
Código (php) [Seleccionar]

<?php 
error_reporting
(E_ALL);
ini_set('display_errors''1');
require_once(
'../conex.php');

class 
Funciones {
function __construct() {

}
       public function 
guarda() {
            
$guardar Conex::conex()->query("INSERT INTO tabla (valor1, valor2, valor3) VALUES (:valor1, :valor2, :valor3)'); 
           
$guardar->execute($_POST);
      }
}



archivo que contiene el formulario
solo pondré el encabezado del form y el jquery que utilizo  (en el action del form puse el archivo que actualmente tengo para recibir el form):

Código (html4strict) [Seleccionar]

<form role="form"  method="POST" action="guarda.php" class="formulario" id="formulario">



y este es el jquery:

Código (javascript) [Seleccionar]

$(document).ready(function() {
$(this).on("submit", ".formulario", function(e) {
e.preventDefault();
var enlace = $(this).attr('action');
var formulario = $(this);
$.ajax({
url: enlace,
        data: $('#formulario').serialize(),
        type: 'post',
        success: function(data) {
            }
});

})




})



Espero Alguien me pueda ayudar, me atasque aquí ya como tres días, saludos!!

Mod: Temas sobre PHP van al subforo de PHP.

gAb1

#1
Los formularios no se pueden (o deben) procesar directamente, primero hay que hacer ciertas comprobaciones y si todo esta correcto entonces se llama a la función para que procese los datos.

En el archivo Guarda.php (el que veo en el action del formulario y el del jquery supongo) tienes que llamar a la función guarda().

Primero declaras las variables del post y luego las envias como parametros al llamar la función.

Código (php) [Seleccionar]
// Si el formulario esta en el mismo archivo simplemente envuelves el código en un if
if (@$_POST['current_email'] && @$_POST['new_email'] && @$_POST['confirm_new_email']) {

   $valor1 = filter_input(INPUT_POST, 'valor1', FILTER_SANITIZE_STRING);
   $valor2 = filter_input(INPUT_POST, 'valor2', FILTER_SANITIZE_STRING);
   $valor3 = filter_input(INPUT_POST, 'valor3', FILTER_SANITIZE_STRING);

   if ($valor1 && $valor2 && $valor3) {
       // depende de como instancies la clase
       $returned = $change_email = $Funciones->guarda($valor1, $valor2, $valor3);
   }
   else {
       // error falta rellenar formulario...
   }

   // lo que quieras devolver de la función si hay algun problema lo indicas aqui
   if ($returned == 'error') {
       // error al guardar la info...
   }
}

// Aquí puedes poner el formulario html
?>

<form role="form"  method="POST" action="guarda.php" class="formulario" id="formulario">

#!drvy

CitarLos formularios no se pueden (o deben) procesar directamente, primero hay que hacer ciertas comprobaciones y si todo esta correcto entonces se llama a la función para que procese los datos.

En este caso parece que utiliza sentencias preparadas y por tanto se evita directamente cualquier SQLi.

@Ethgar, probablemente quieras implementarte una pequeña API para controlar eventos solicitados vía ajax.

Saludos