2016-05-29 3 views
2

enter image description hereКак удалить строку из корзины дб в соответствии с нажатой кнопкой пользователем

Я работаю на веб-сайте торт, где пользователь может добавить торты в их корзину. Затем их сводка в корзине будет отображаться на этой странице. Пока я могу только генерировать сводку корзины из базы данных. Мне нужно разрешить пользователю нажимать на желаемую кнопку удаления и удалять соответствующую строку корзины из базы данных.

Php код

// To display the summary 

$pick = "SELECT bname,quantity,price,sum FROM cart WHERE user_id LIKE '$search'"; 
$result1 = mysqli_query($conn, $pick); 
$counting = 1; 


if (mysqli_num_rows($result1) > 0) { 

echo "<table align='center' class='summarytbl'>"; 
echo "<tr><th>No</th><th>Book Title</th><th>Price</th><th>Quantity</th><th>Total Price</th><th>Delete Order</th></tr>"; 

while($row = mysqli_fetch_assoc($result1)) { 

echo "<tr><td>".$counting."</td><td>".$row['bname']."</td><td>".$row['price']."</td><td>".$row['quantity']."</td><td>".$row['sum']."</td><td><button type='button' class='delete' name=".$row['bname']." value=".$row['quantity'].">Delete</button></td></tr>"; 


$counting++; 
} 
    echo"</table><br/><br/><br/>"; 

echo "<table align='center' class='new'>"; 
echo "<tr><td>Total Price</td><td>".$total."</td></tr>"; 
echo "<tr><td>Discount</td><td>".$discount."</td></tr>"; 
echo "<tr><td>Postage</td><td>".$postage."</td></tr>"; 
echo "<tr><td><b>Nett Price</b></td><td><b>".$nett."</b></td></tr>"; 
echo"</table>"; 


} 

я надеялся использовать это заявление, чтобы получить значение баттона (количество) и имя (название торта), чтобы удалить строку из таблицы. Но это не работает. Пожалуйста, помогите.Спасибо.

if(isset($_POST['delete'])) 
{ 
    $command = "DELETE FROM cart WHERE bname= ".$row['bname']." AND quantity=".$row['quantity']; 
    mysqli_query($conn,$command); 


} 
+1

Вы должны сначала исправить все эти уязвимости SQL-инъекций (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php). – Mike

+1

Далее я не вижу ни одного столбца пользователя в вашей базе данных. Что делать, если у вас несколько пользователей? Если вы удалите 'WHERE bname = 'something'', вы удалите это для ** всех ** пользователей. Также после того, как вы добавили в этот запрос/таблицу поле пользователя, что мешает кому-либо вводить идентификатор другого пользователя и добавлять или удалять из своей корзины? – Mike

+0

Добавление 'количества' к запросу бесполезно, потому что предположительно' bname' и 'user_id' (или все, что вы хотите назвать) вместе уникальны. Поэтому вам следует добавить [уникальный индекс] (http://stackoverflow.com/questions/635937/how-do-i-pecpeci-unique-constraint-for-multiple-columns-in-mysql) на обоих этих. – Mike

ответ

0

Вы делаете все это неправильно. Если у вас есть основной в вашей корзине, используйте этот код, иначе добавьте его в свою таблицу. Очень простой способ сделать это.

<form action="/delete.php" method="post"> 
    <input type="hidden" name="cart_id" value=".$row['id']."> 
    <button type='submit' class='delete' value="Delete">Delete</button> 
</form> 

delete.php

// POST method take the input box value by using its name as an index 
if(isset($_POST['cart_id'])) 
{ 
    $command = "DELETE FROM cart WHERE id= ".$_POST['cart_id']."; 
    mysqli_query($conn,$command); 

//Redirect to cart page after this by using header("location") 

} 

Другие способы сделать это.

Сначала с помощью запроса Ajax, чтобы сделать вашу страницу более динамичной и интуитивно понятной. Когда кто-то нажимает кнопку «Удалить», вы получаете идентификатор корзины и передаете данные на конкретный URL-адрес для выполнения действий по этому вопросу. Убедитесь, что эта корзина принадлежит пользователю в настоящее время.

Или добавив привязную ссылку на эту кнопку удаления с URL-адресом, таким как/cart/delete/id. После выполнения действия на этом URL-адресе вы можете перенаправить пользователя на страницу корзины. Он будет загружать страницу каждый раз, когда пользователь удаляет элемент из корзины. Так что это не очень хороший способ сделать это.

+0

Отличный ... 2 способа сделать это ... но где код? – charlietfl

Смежные вопросы