Вызов PHP-функции с параметром события onSubmit/onClick

У меня есть файл PHP, содержащий класс shop, который имеет несколько статических общедоступных функций, таких как:

  • createBasket()
  • getProductNameFromId()
  • ...

Файл: shop.php

И одна из моих функций:

static public function insertProductIntoBasket($id, $quantity, $name)

{ 
$basket = self::createBasket(); // We create the basket in another function if not exist before handling a product for a basket.

$query = mysql_query("INSERT INTO myTable(id_order, id_product, quantity_product, file_name)
VALUES('".$basket['id_order']."', '".$id."', '".$quantity."', '".$name."')

;") or die($query.' '.mysql_error());

}

В другом файле (файле продукта) я хочу сделать кнопку для обработки этой функции благодаря событию на ней.

Итак, я пытаюсь вызвать эту функцию PHP insertProductIntoBasket($id, $quantity, $name) вот так, с событием на кнопке:

Файл: product.php

<form name="addProduct" method="post" action="shop.php">
   <input type="submit" value="Add to basket" name="pdt_basket"/>
</form>

Я видел, что Javascript обрабатывается при нажатии кнопки, и есть способ вызвать функцию с помощью AJAX. Но я определенно не знаю, как передать параметры из моей функции insertProductIntoBasket.


person Benjamin Robert    schedule 14.01.2014    source источник
comment
Посмотрите на $_POST['pdt_basket'] в shop.php. Вы не можете вызвать функцию напрямую, но вы можете проверить значение $_POST['pdt_basket'] и выполнить функцию, если она установлена. Если вы хотите добавить дополнительные данные в свою форму, попробуйте сделать собственный вызов ajax (jQuery проще всего)   -  person Rick Hoving    schedule 14.01.2014
comment
Вы не можете вызывать функцию PHP из JavaScript. Что вы можете сделать, так это вызвать AJAX к серверной части PHP, а затем вызвать любой PHP-код, который вы хотите, передавая параметры, которые вы получаете с помощью суперглобальных переменных GET или POST. Если вы хотите сделать это правильно, взгляните на компонент Symfony HttpFoundation, который позволяет вам создать хороший объект запроса, который вы можете передать своим функциям.   -  person Tomasz Kowalczyk    schedule 14.01.2014


Ответы (3)


Используйте ajax для вызова product.php

function blah() { $.ajax({ url: 'product.php?arg1=val1&arg2=val2&arg3=val3' }); }

и используйте $1 $2 и т. д. для доступа к переданным значениям

person Noel Samuel    schedule 21.04.2015

Просто вызовите функцию из вашего файла shop.php. Вы можете получить пост-переменные и вызвать оттуда соответствующие функции.

person mjdth    schedule 14.01.2014

person    schedule
comment
Спасибо Л.К. Эхо Чан. Так что теперь я использую свою форму следующим образом: <form name="addProduit" method="post" action="shop.php"> > <input hidden="true" type="text" name="pdt_id" value="3"/> > <label>Quantité du produit </label><input type="text" name="pdt_qtte" value="2"/> > <input hidden="true" type="text" name="pdt_name" value="Test"/> > <input type="submit" value="Ajouter au panier" name="pdt_panier"/> > </form> Но где я должен написать это: shop::insertProduitIntoPanier($_POST['pdt_id'], $_POST['pdt_qtte'], $_POST['pdt_name']); Из моего shop.php, который содержит мою функцию? - person Benjamin Robert; 14.01.2014
comment
Просто напишите это в любом месте, где может быть вызов функции. Если вы не можете понять, что я говорю, попробуйте написать это в самой нижней части в shop.php - person L.C. Echo Chan; 15.01.2014