За последние 24 часа нас посетили 22548 программистов и 1143 робота. Сейчас ищут 665 программистов ...

Как сделать UPDATE в нужной строке? Помогите плиз

Тема в разделе "PHP и базы данных", создана пользователем IgoryanVL, 21 фев 2019.

  1. IgoryanVL

    IgoryanVL Новичок

    С нами с:
    29 мар 2018
    Сообщения:
    12
    Симпатии:
    0
    Привет.
    На страницу вывожу данные из таблицы БД.
    Есть столбец с заметками - http://prntscr.com/mo0w9l
    Сейчас если я обновляю заметку допустим в первой строке, то она прописывается во всех строках.
    Как сделать так, чтобы заметка перезаписывалась только в той строке, где её вбивают?

    Код обновления заметки:
    PHP:
    1. <?php
    2. header( 'Content-Type: text/html; charset=utf-8' );
    3. if (isset($_POST['note'])){
    4.  
    5. $note = $_POST['note'];
    6.  
    7. $db_host = "localhost";
    8. $db_user = "login";
    9. $db_password = "pass";
    10. $db_base = 'main_data';
    11. $db_table = "main_table";
    12.  
    13. $mysqli = new mysqli($db_host,$db_user,$db_password,$db_base);
    14. $mysqli->set_charset('utf8');
    15.  
    16. if ($mysqli->connect_error) {
    17.     die('Ошибка : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
    18. }
    19.  
    20. $result = $mysqli->query("UPDATE main_table SET note = '$note' WHERE phone = '$phone'");
    21.  
    22. if ($result == true){
    23. }else{
    24.     }
    25. }
    26. ?>
    Код вывода данных:
    PHP:
    1. <?php
    2. header( 'Content-Type: text/html; charset=utf-8' );
    3. $servername = "localhost";
    4. $username = "login";
    5. $password = "pass";
    6. $dbname = "main_data";
    7.  
    8. $conn = new mysqli($servername, $username, $password, $dbname);
    9. $conn->set_charset('utf8');
    10.  
    11. if ($conn->connect_error) {
    12.     die("Connection failed: " . $conn->connect_error);
    13. }
    14. $sql = "SELECT id, name, phone,email,time,ip_client,project,status,note FROM main_table";
    15.  
    16. $result = $conn->query($sql);
    17.  
    18. if ($result->num_rows > 0) {
    19.         echo "<table class=\"table table-hover\">";
    20. echo
    21. "
    22. <thead>
    23. <tr>
    24. <th style=\"cursor: pointer\" scope=\"col\"><b>ID</b></th>
    25. <th style=\"cursor: pointer\" scope=\"col\"><b>Имя</b></th>
    26. <th style=\"cursor: pointer\" scope=\"col\"><b>Телефон</b></th>
    27. <th style=\"cursor: pointer\" scope=\"col\"><b>E-mail</b></th>
    28. <th style=\"cursor: pointer\" scope=\"col\"><b>Время</b></th>
    29. <th style=\"cursor: pointer\" scope=\"col\"><b>IP клиента</b></th>
    30. <th style=\"cursor: pointer\" scope=\"col\"><b>Курс</b></th>
    31. <th style=\"cursor: pointer\" scope=\"col\"><b>Заметка</b></th>
    32. <th style=\"cursor: pointer\" scope=\"col\"><b>Статус</b></th>
    33. </tr>
    34. </thead>
    35. ";
    36.         echo "<tbody> \r\n";
    37.   while($row = $result->fetch_assoc()) {
    38.         echo "<tr>\r\n";
    39.         echo "<th scope=\"row\">" . $row["id"]. "</th>\r\n".
    40.         "<td>" . $row["name"]. "</td>\r\n".
    41.         "<td>" . $row["phone"]. "</td>\r\n".
    42.         "<td>" . $row["email"]. "</td>\r\n".
    43.         "<td>" . $row["time"]. "</td>\r\n".
    44.         "<td>" . $row["ip_client"]. "</td>\r\n".
    45.         "<td>" . $row["project"]. "</td>\r\n".
    46.         "<td>" .'<form method="POST"><input name="note" value="'.$row["note"].'" style="white-space: normal; background-color: lightyellow"><input type="submit" value="✔"/></form>'. "</td>\r\n".
    47.         "<td>" . "<b><div data-number=\"".$row["status"]."\"></div></b>". "</td>\r\n";
    48.         echo "</tr>\r\n";
    49.     }
    50.         echo "</tbody>\r\n";
    51.         echo "</table>";
    52. } else {
    53.     echo "0 results";
    54. }
    55. $conn->close();
    56. ?>
     
  2. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    У тебя же есть id уникальный передавай $_POST['id']
    Update делай по нему where id= $_POST['id']

    p.s. и чтобы слеши не ставить, можно кавычки одинарные поставить:
    PHP:
    1. echo '<table class="table table-hover">';
     
    #2 Artur_hopf, 21 фев 2019
    Последнее редактирование: 21 фев 2019
  3. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Освойте уже экранирование данных в запросах или подготовленные запросы, а также HTML-кодированный вывод.

    И ваши echo – это полный абзац. Освойте переключение php/html (лучше сразу разделение по файлам осн. кода и шаблона), альт. синтаксис алг. конструкций в шаблонах и т.п.
    --- Добавлено ---
    Редактировать лучше в вынесенной на отдельную страницу форме и там же сохранять. Либо использовать AJAX. В обоих случаях используете id. Лучше в адресе, на крайняк в POST-параметре.
    --- Добавлено ---
    К моменту выполнения шаблона соединение с БД уже можно закрыть.