Неверный вариант, но PHP выполняется на стороне серверов. Так как это действие клиента, вам нужно будет использовать JavaScript для того, чтобы поднять действие. (вы также можете использовать старую форму fasion). Я предпочитаю использовать jQuery, поскольку он hasready имеет встроенную поддержку ajax и упрощает ее. В принципе, просто вызовите функцию из onClick, которая передает «идентификатор» элемента, который вы хотите удалить. Затем эта функция вызовет вызов AJAX другому скрипту, который примет этот идентификатор и удалит элемент. Когда этот скрипт вернется к успеху, удалите JavaScript (или скройте) элемент. Таким образом, пользователь никогда не покидает или обновляет страницу, и сценарий может сделать некоторые дополнительные очистки (например, обновление базы данных, обновление сеанса, проверками запроса и т.д.)
i = 0;
foreach($_SESSION['cart'] as $item)
{
//Populate items in a table ?>
<tr>
<td><center><?php echo $i; ?></center></td>
<td><center><?php echo $item['item'];?></center></td>
<td><center><?php echo '£'. $item['unitprice'];?></center></td>
<td><center><?php echo $item['quantity'];?></center></td>
<td><center><?php echo '£'.($item['unitprice'] * $item['quantity']) ?></center></td>
<td><input type="submit" value="Remove" onClick="RemoveItem(<?= $i ?>)" ></td>
</tr>
<?php
$total += ($item['unitprice'] * $item['quantity']);
$i++;
}
Здесь я изменил раздел OnClick для использования вместо этого используется javascript-вызов. Вы заметите, что я использовал <?= tag
вместо полного <?php echo
. Это связано с тем, что с php5 вы можете использовать стенографию <?=
для эхо-выражения.
В разделе сценария вы можете сделать что-то подобное. Я использую POST, поскольку он более безопасен.
function RemoveItem(id) {
$.post('script-to-remove.php',
{ ItemID: id },
function(data) {
if(data==='success') {
//Remove item from DOM
} else alert("There was an error!"); //If you want error handling
}
);
}
Для удаления элементов из РОМА, его немного сложнее с таблицами, так как ни один из крутых эффектов будут действительно работать, такие как FADEOUT, slideUp, анимировать, и т.д. Я хотел бы посмотреть на переформатирование с дивами.
Что касается скрипта php, который он вызывает, его так же просто, как вызов unset. Вы можете разработать его больше, чтобы, возможно, проверить правильность запроса, но пока я просто собираюсь сделать это незавершенным.
<?php
$ItemID = isset($_POST['ItemID'])?intval($_POST['ItemID']):-1;
if($ItemID<0) die("Invalid ID"); //Change this if you want
if(isset($_SESSION['cart'][$ItemID])) unset($_SESSION['cart'][$ItemID]);
echo 'success';
?>
В основном в этом, я сначала проверить, что правильный параметр пришел, убедитесь, что это целое число и сохранить его, в противном случае я по умолчанию это значение -1. Тогда, если Item ID находится под 0 (так определенно неправильно), я говорю сценарию, чтобы вывести сообщение и выйти. Наконец, я проверяю, есть ли значение для этого идентификатора или индекса, как оно есть на самом деле, и отключите его. Если это дойдет до конца, выведите успех.
Эй! Спасибо за быстрый ответ ..., но, честно говоря, я никогда не пробовал AJAX или jQuery, поэтому я не думаю, что у меня возникла идея ... Извините, я не очень опытный, я нооб))) –
Я обновил его немного, чтобы помочь вам, некоторые дополнительные чтения можно сделать с помощью Google. Если вы действительно не хотите погружаться в AJAX (но вы должны), вы также можете использовать форму, которая подходит к сценарию unset. Но вам нужно пройти по идентификатору должным образом. В противном случае, вот некоторые чтения. http://phpcodeforbeginner.blogspot.com/2013/01/jquery-ajax-tutorial-and-example-of.html http://net.tutsplus.com/articles/web-roundups/jquery-for- absolute-beginners-video-series/ – CP510
Это замечательно, спасибо большое! Эта функция RemoveItem .. это php-функция? –