Member 13028613 Ответов: 1

Обновить строку базы данных при нажатии кнопки ввода с помощью PHP


У меня есть php-код, который получает непрочитанные (непрочитанные сообщения имеют столбец под названием flag, который всегда равен = 0) сообщения из базы данных и повторяет их. Проблема здесь в том, что я хочу, чтобы, когда пользователь нажимает на кнопку закрытия (которая находится в форме формы), он обновляет все столбцы флагов этого конкретного сообщения = 1. но я попробовал, и, похоже, ничего не происходит. Ниже приведен мой код, и, пожалуйста, я новичок в php так легко. Заранее спасибо.

Ниже приведен код для получения непрочитанных сообщений
require_once ("db.php");
$db = new MyDB();
session_start();

$log_id = $_SESSION['log_id'];
$unread = 0;

$sql =<<<EOF
SELECT *, COUNT(group_hash) AS NumOccurrences FROM messager WHERE from_id != '$log_id' AND flag = '$unread' GROUP BY group_hash, message ORDER BY from_id DESC; 
EOF;

$ret = $db->query($sql);

$by_hash = array();

while ($row = $ret->fetchArray(SQLITE3_ASSOC))
{
$hash = $row['group_hash'];
$message = $row['message'];
$from_id = $row['from_id'];

  if(!isset($by_hash[$hash])) $by_hash[$hash] = '';
  $by_hash[$hash] .= $message;

  $ssql =<<<EOF
SELECT * FROM connect WHERE user_one != '$log_id' OR user_two != '$log_id' AND hash = '$hash';
EOF;
  $sret = $db->query($ssql);

  $by_name = array();
  while ($srow = $sret->fetchArray(SQLITE3_ASSOC))
  {
      $hash = $srow['hash'];
      $_SESSION['hasher'] = $hash;
      $user_one = $srow['user_one'];
      $user_two = $srow['user_two'];

      if ($user_one == $log_id) {
          $select_id = $user_two;
      } else {
          $select_id = $user_one;
      }

      $sesql = <<<EOF
SELECT * FROM User WHERE ID = '$select_id';
EOF;
      $seret = $db->query($sesql);

      while ($serow = $seret->fetchArray(SQLITE3_ASSOC)) {
          $select_uname = $serow['fname'];
          $select_uimg = $serow['image'];

      }
  }

}

foreach ($by_hash as $key => $str)
{
echo "<form action='make_read.php' id='upd_unread' method='post' enctype='multipart/form-data'>
<input type='submit' name='make_read' id='make_read' class='not_bubble_closer' value='⨯'>//clicking here updates all $hash with flag= 0 to 1
</form>
<div class='not_msg_area'>";
        echo "<div class='not_msg_sender'><p>From: ".$select_uname."</p><img src='$select_uimg'></div>";
        echo "<div class='not_msg_display'><div class='not_bubble'><p>".$str."</p></div></div>";
        echo "<div class=\"not_msg_rep\">
            <form action=''' method='post' enctype='multipart/form-data'>
                <input type='text' name='not_msg_reply' id='not_msg_reply' placeholder='reply (press enter to send)'>
            </form>
        </div>";
    echo "</div>";
?>  


Что я уже пробовал:

Код для обновления

require_once ("db.php");
$db = new MyDB();

if (isset($_POST['make_read']) && isset($_GET['group_hash']) && !empty($_GET['group_hash']))
{

$log_id = $_SESSION['log_id'];
$hash = $_SESSION['hash'];
$read = 1;
$unread = 0;

$sql =<<<EOF
UPDATE messager SET flag = '$read' WHERE flag = '$unread' AND group_hash = '$hash';  
EOF;

$ret = $db->exec($sql);

if ($ret)
{
    echo "<script>alert('successful')</script>";
}
else
{
    echo "Nah!..";
}
}

1 Ответов

Рейтинг:
0

COBOLdinosaur

Вы используете метод post в форме, но в скрипте вы ссылаетесь на переменные $_GET.