За последние 24 часа нас посетили 73663 программиста и 10224 робота. Сейчас ищут 2077 программистов ...

Не получается реализовать удаление записей через checkbox

Тема в разделе "PHP для новичков", создана пользователем Sergooo, 7 янв 2018.

  1. Sergooo

    Sergooo Новичок

    С нами с:
    7 янв 2018
    Сообщения:
    8
    Симпатии:
    1
    <html>
    <head>
    <meta charset="utf-8">
    </head>
    <body>
    <form action="<?php print $SERVER['PHP_SELF'] ?>" method="POST">

    <table border="1" cellpadding="5">
    <tr>
    <td align="center"><b>Удалить</b></td>
    <td align="center"><b>Товар</b></td>
    <td align="center"><b>Цена</b></td>
    </tr>


    <?php

    $dbname="products.db";
    $db = new SQLite3('products.db');
    $values= $_POST['price'];
    $val = $_POST['id'];

    if (!$db) exit("Не удалось создать базу данных!");
    $result = $db->query('select * from Tovar') or die(mysql_error());
    // Вывод данных в таблицу
    while($row = $result->fetchArray()) {

    echo "
    <tr>";
    echo '<td><input type="checkbox" name="del[]" value="$id" /></td> ';
    echo "
    <td>". $row[tovar] ."</td>
    <td><input value=". $row[price]. "></td>
    <td>". $row[id]. "</td>
    </tr>
    ";

    }
    // Занесение данных в таблицу
    if (isset($_POST['zapis']) && !empty($_POST[add_tovar]) && !empty($_POST[add_price])) {

    $addtov = strip_tags(trim($_POST['add_tovar']));
    $addprr = strip_tags(trim($_POST['add_price']));

    $db->exec("INSERT INTO Tovar (tovar, price) values ('$addtov','$addprr')");
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////
    // Удаление данных через checkbox (НЕ РАБОТАЕТ)
    // Ошибок нет, но все равно не работает
    //
    $button = $_POST['delet'];
    $check = $_POST['del'];

    if ( isset($button) ){

    foreach ($check as $id) {
    $db->query(" DELETE FROM Tovar WHERE id = '$id' ");

    }
    }
    //
    //
    ////////////////////////////////////////////////////////////////////////////////////////////////
    $db->close();

    ?>

    <tr>
    <td></td>
    <?php
    echo '
    <td><input type="text" name="add_tovar" value="" /></td>
    <td><input type="text" name="add_price" value="" /></td>
    ';
    ?>
    </tr>
    <tr>
    <td colspan="3">
    <input type="submit" value="Записать" name="zapis">
    <input type="submit" value="Удалить" name="del">
    </td>
    </tr>
    </table>
    </form>
    </body>
    </html>
     
    #1 Sergooo, 7 янв 2018
    Последнее редактирование: 7 янв 2018
  2. Sergey_Tsarev

    Sergey_Tsarev Активный пользователь

    С нами с:
    17 мар 2016
    Сообщения:
    502
    Симпатии:
    105
    Ну, хотя бы вот здесь:
    PHP:
    1. if (isset($_POST['zapis']) && !empty($_POST[add_tovar]) && !empty($_POST[add_price])) {
    Почему кавычки не везде стоят?
     
  3. Sergooo

    Sergooo Новичок

    С нами с:
    7 янв 2018
    Сообщения:
    8
    Симпатии:
    1
    В этом фрагменте все работает, кавычки не обязательны.

    Я там в коде выделил, что именно не работает
    $button = $_POST['delet'];
    $check = $_POST['del'];

    if ( isset($button) ){

    foreach ($check as $id) {
    $db->query(" DELETE FROM Tovar WHERE id = '$id' ");

    }
    }
     
  4. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.601
    Симпатии:
    423
    Адрес:
    РД, г. Махачкала.
    Кавычки обязательны всегда.
    В коде выше ты обащаешься к несуществующим константам 'add_towar' и 'add_price'. А работает это только потому, что при отсутствии константы в качестве значение отдается имя константы. Включи вывод ошибок и ты увидишь нотис, что такой константы не сущетсвует.

    Опускать кавычки можно когда переменная подставляется в строку.
    PHP:
    1. echo "Тут можно опустить кавычки $test[test]";
    Относительно твоего вопроса, нихрена не видно, оформи код как полагается.
     
  5. Sergooo

    Sergooo Новичок

    С нами с:
    7 янв 2018
    Сообщения:
    8
    Симпатии:
    1
    PHP:
    1. $button = $_POST['delet'];
    2. $check = $_POST['del'];
    3.  
    4. if ( isset($button) ){
    5.  
    6. foreach ($check as $id) {
    7. $db->query(" DELETE FROM Tovar WHERE id = '$id' ");
    Вот тут не робит
     
  6. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    1. @Sergooo положи запрос в переменную и посмотри, что получилось
     
  7. Sergooo

    Sergooo Новичок

    С нами с:
    7 янв 2018
    Сообщения:
    8
    Симпатии:
    1
    Не знаю на сколько это правильно)
    Если я не так это сделал( скорее всего так и есть ), напиши как надо :)
    Так тоже не работает(

    PHP:
    1. $button = $_POST['delet'];
    2. $check = $_POST['del'];
    3.  
    4. if ( isset($button) ){
    5.  
    6.     foreach ($check as $id) {  
    7.     $rest = $db->query(" DELETE FROM Tovar WHERE id = '$id' ");
    8.     query($rest);
    9.     }
    10. }
     
  8. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    @Sergooo ты понял, что я имел ввиду?
     
  9. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.971
    Симпатии:
    753
    Ты создаешь переменную, а потом проверяешь её существование.
    Она будет существовать всегда.
    --- Добавлено ---
     
  10. Sergooo

    Sergooo Новичок

    С нами с:
    7 янв 2018
    Сообщения:
    8
    Симпатии:
    1
    Ну если то что я тебе ответил - не верно
    Значит не понял(
    --- Добавлено ---
    Так?

    PHP:
    1. if ( isset($button) ){
    2.     $button = $_POST['delet'];
    3.     $check = $_POST['del'];
    4.     foreach ($check as $id) {    
    5.     $rest = $db->query(" DELETE FROM Tovar WHERE id = '$id' ");
    6.     query($rest);
    7.     }
    8. }
     
  11. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    PHP:
    1. $delTovar =  "DELETE FROM Tovar WHERE id = '" . $id ."'";
     
  12. Sergooo

    Sergooo Новичок

    С нами с:
    7 янв 2018
    Сообщения:
    8
    Симпатии:
    1
    Попробовал, все также - ошибки нет, но и не работает

    PHP:
    1. if ( isset($button) ){
    2.     $button = $_POST['delet'];
    3.     $check = $_POST['del'];
    4.     foreach ($check as $id) {
    5.         $delTovar =  "DELETE FROM Tovar WHERE id = '" . $id ."'";
    6.     query($delTovar);
    7.  
    8.     }
    9. }
     
  13. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    @Sergooo ты посмотри, что лежит в переменной $delTovar, скопируй это, вставь в SQL запрос и смотри, что будет
     
  14. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.593
    Симпатии:
    362
    @Sergooo, присмотритесь к строке
    PHP:
    1. echo '<td><input type="checkbox" name="del[]" value="$id" /></td> ';
    и ответьте на вопрос: "Каким образом определяется переменная $id?