За последние 24 часа нас посетили 21519 программистов и 1690 роботов. Сейчас ищут 1796 программистов ...

Запрос удаляет лишь нулевой элемент массива(

Тема в разделе "MySQL", создана пользователем geslow, 1 авг 2017.

  1. geslow

    geslow Новичок

    С нами с:
    16 янв 2015
    Сообщения:
    2
    Симпатии:
    0
    Рад всех приветствовать!
    Занимаюсь изучением PHP (поэтому сильно не топчите[​IMG]), и вот возник такой вопрос:
    - удалить товары из базы данных по их артикулу;
    В итоге, получился скрипт, который может удалять записи в таблице, но только если в поле вводить по одному значению. Буду благодарен любой помощи в том, как реализовать удаление сразу нескольких значений, указанных в поле формы.

    PHP:
    1. <body>
    2. <div class="wrapper">
    3.     <center>
    4.         <form action="" method="POST">
    5.             <h3>
    6.                 Введите артикул товаров для удаления:
    7.             </h3>
    8.             <textarea name="input_artikul" cols="55" rows="10"></textarea>
    9.  
    10.  
    11.         <hr />
    12.         <br /><br />
    13.         <button name="delete_button">УДАЛИТЬ ТОВАРЫ !</button>
    14.         </form>
    15.     </center>
    16. </div>
    17.  
    18. <?php
    19. ini_set("display_errors","1");
    20. ini_set("display_startup_errors","1");
    21. ini_set('error_reporting', E_ALL);
    22.  
    23.  
    24. // подключаемся к базе
    25. const HOST = 'localhost';
    26. const DATABASE = 'mdgsi96_test';
    27. const USER = 'mdgsi96_test';
    28. const PASS = 'hfsmQpHAmT5X7';
    29. $connect = mysqli_connect(HOST, USER, PASS, DATABASE);
    30. if($connect){
    31.     echo "Соединение установлено ! <br />";
    32. }
    33.  
    34.  
    35. // получаем массив значений
    36. $inform_artikul = ($_POST['input_artikul']);
    37. $artikul_array = explode(" ", $inform_artikul);
    38. foreach ($artikul_array as $k => $v)
    39. {
    40.     $artikul_array[$k] = '"' . mysqli_real_escape_string($connect, $v) . '"';
    41.     echo $v;
    42. }
    43.  
    44. // удаляем массив из базы
    45. $query = 'DELETE FROM gdlaj_virtuemart_products WHERE product_sku IN ('  . implode(',', $artikul_array) .  ')';
    46. if (mysqli_query($connect, $query))
    47. echo "<h1>ТОВАР УСПЕШНО УДАЛЁН !!!</h1>";
    48.     else
    49.         echo "К СОЖАЛЕНИЮ УДАЛИТЬ ТОВАР НЕ УДАЛОСЬ (((" . mysqli_error();
    50. mysqli_close( $connect );
    51. ?>
    52.  
    53. </body>
    54. </html>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.860
    Симпатии:
    749
    Адрес:
    Татарстан
    почему, вроде прописано что если через пробел перечислил то удалит все
     
    Maputo нравится это.
  3. geslow

    geslow Новичок

    С нами с:
    16 янв 2015
    Сообщения:
    2
    Симпатии:
    0
    Спасибо! Прошу прощения - снимаю. В explode() указал случайно не тот разделитель((:)(
    А так всё ок!
     
  4. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Обычное дело. На мелочах даже опытные дядьки ловятся порой.