Вставить данные в mysql через php

271
04 августа 2017, 01:59

Здравствуйте. Есть список, выводящийся на странице, с текстовым полем для изменения

 while ($row = $todb->fetch_array())
  { echo $row[id];
    echo $row[name];
    echo '<input type="text" name="text['.$row[id].']"
    value="'.$row[pages].'"><br>';
  }

При нажатии на кнопку, данные, которые были введены в поле text input должны быть записаны в базу, т.е. если такой id и pages существует, то сделать UPDATE, а если не существует, то INSERT INTO.

if (isset($_POST['submit'])) 
    {
    $text = !empty($_POST['text']) ? $_POST['text'] : null;
    foreach($text as $idt => $pages) {
       if ($pages != NULL)  {                   //idt это id товара
                                                //pages это значение
          $todb = $mysqli->query('UPDATE extendtovar 
                                  SET pages = "'.$pages.'"
                                  WHERE extendtovar.id = "'.$idt.'"');
            }
            else {
            $todb = $mysqli->query('INSERT INTO extendtovar (id, pages) 
                                   VALUES ("'.$idt.'", "'.$pages.'")'); 
            }
        } 
    } 

При таком запросе UPDATE проходит нормально, а INSERT INTO вставляет значения 0 в поля, которые были не заполнены. При запросе

elseif ($pages != "") {
        $todb = $mysqli->query('INSERT INTO extendtovar (id, pages) 
                                VALUES ("'.$idt.'", "'.$pages.'")');    
            }

не вставляется ничего. Как в итоге сделать такую логику:

  • Если число существует, то UPDATE этой строки
  • Если число не существует, и его ввели в поле, сделать INSERT INTO
  • Если число не существует, и его не вводили в поле, ничего с ним не делать
Answer 1

Посмотрите внимательно код. У вас условие, если введенные данные не пустые, обновляем запись, если пустые, вставить запись. Что просите, то и получаете. Используйте insert into on duplicate update

if (isset($_POST['submit'])) {
    $text = !empty($_POST['text']) ? $_POST['text'] : null;
    foreach ($text as $idt => $pages) {
        if ($pages != NULL) {     
            $todb = $mysqli->query('INSERT INTO extendtovar (id, pages) 
                                   VALUES ("' . $idt . '", "' . $pages . '") 
                                   ON DUPLICATE KEY UPDATE pages = "' . $pages . '"');
        }
    }
} 
READ ALSO
Как добавить meta-тег при пагинации в MODX Revo

Как добавить meta-тег при пагинации в MODX Revo

Подскажите, как добавить <meta name="robots" content="noindex,follow" />при пагинации от 2 и вышеТакое окончание ?page=3 Сайт на MODX Revo

278
Не открывается папка без index.php

Не открывается папка без index.php

не открываются ссылки без indexphp

235
Алгоритм выпадения случайной вещи

Алгоритм выпадения случайной вещи

Добрый день! Недавно возник вопрос, как реализован алгоритм выпадения вещей на всяких сs go рулетках, там где открывают ящики с вещами? Мучает...

291