2015-07-17 2 views
0

Я довольно новичок в php и столкнулся с проблемой адаптации чужой программы. Я пытаюсь внедрить программу php и javascript в стиле корзины покупок. Корзина принимает новые записи по значениям POSTing посредством кнопки отправки, включая идентификатор, количество, имя и цену.Вызов нескольких функций PHP одним нажатием кнопки

<form method="post" style="border:0px solid yellow;" ><fieldset> 
    <input type="hidden" name="jcartToken" value="<?php echo $_SESSION['jcartToken'];?>" /> 
     <input type="hidden" name="my-item-id" value="1" /> 
     <input type="hidden" name="my-item-name" value="apples" /> 
     <input type="hidden" name="my-item-price" value="2" /> 
     <input type="hidden" name="my-item-qty" value="1" size="3" /> 


<input id="apples" type="submit" name="my-add-button" class="add" value="&nbsp"/>Apples - $2 

</fieldset></form> 

Тележка удаляет элементы посредством команд GET через PHP файл

if($_GET['jcartRemove'] && !$_POST) { 
     $this->remove_item($_GET['jcartRemove']); 
    } 

Эта команда GET может быть вызвана через

<a href="index.php?jcartRemove=apples">no more apples</a> 

Но это будет только вызвать один раз. То, что я хочу, чтобы иметь список элементов

  • яблоки
  • апельсины
  • бананы

и когда один выбран и добавлен в корзину с помощью метода формы пост, два других автоматически удаляются из корзины. Есть ли способ использовать AJAX для нажатия функции jcartRemove и удаления двух элементов по их идентификатору?

Любая помощь будет оценена по этому вопросу.

ответ

1

Вместо того, чтобы делать несколько вызовов AJAX, вам лучше изменить свой PHP и позволить функции remove принимать массив вместо одного элемента. Затем вы можете передать ему один или несколько элементов, чтобы удалить все сразу.

Например:

if($_GET['jcartRemove'] && !$_POST) { 
    if (is_array($_GET['jcartRemove'])) { 
     foreach($_GET['jcartRemove'] as $item) { 
      $this->remove_item($item); 
     } 
    } else { 
     $this->remove_item($_GET['jcartRemove']); 
    } 
} 

Ваша ссылка будет выглядеть следующим образом с несколькими элементами:

<a href="index.php?jcartRemove[]=apples&jcartRemove[]=bananas">no more apples or bananas</a> 

Поскольку мы проверка, если jscartRemove массив, вы можете передать ему один элемент как и всегда, и он будет продолжать работать.

+0

Как мне это сделать? – Patrick

+0

Обновлен ответ –

+0

Наличие такого подхода для рассмотрения как html/js/ajax, так и php в качестве инструментов для выполнения ваших требований - это ядро. –