Почему запрос не обновлялся после нажатия на кнопку обновления? - PullRequest
0 голосов
/ 19 апреля 2019

Из моего предыдущего поста (дублированный - Как редактировать и обновлять в php? )

Задача

После того, как я нажму на кнопку обновления (в front.php), отобразится сообщение сеанса, но запрос не обновился.

То, что я пробовал до сих пор

В edit&update.php, count() недоступен после PHP 7.0 +.

Итак, я перешел на is_countable(), но я не знаю, эквивалентна ли это / совместимая функция count() или нет.

Примечания

Для edit&update.php я перейду в подготовленный оператор позже, если запрос может быть обновлен после нажатия на кнопку обновления.

Нет предупреждений или уведомлений во время выполнения кода, но запрос не обновился после нажатия на кнопку обновления.

front.php

<html>
<?php 
require_once 'edit&update.php';
include 'connection.php';
?>
<body>
<!--ID (hidden)-->
<input type="hidden" name="id" value="<?php echo $id; ?>"><!--ID-->
<!--Category-->
<label>Category</label>:
<select name="category" value="<?php echo $category; ?>">
       <option value="0">(Please any type below)</option>
       <option value="A">A</option>
       <option value="D">D</option>
       <option value="M">M</option>
       <option value="S">S</option>
       <option value="T">T</option>
       <option value="Tr">Tr</option>
       <option value="Other">Other</option>
</select>
<!--URL-->
<label>URL</label>:
<input type="url" name="url" value="<?php echo $url; ?>" placeholder="URL (www.)" required>
<!--Issued date-->
<label>Issued date:</label><br>
<input type="datetime-local" name="datetime" value="<?php echo $datetime; ?>" required>
<!--Latitude-->
<label>Latitude</label>:
<input type="text" value="<?php echo $lat; ?>" name="lat" placeholder="Latitude">
<!--Longitude-->
<label>Longitude</label>:&nbsp
<input type="text" value="<?php echo $lng; ?>" name="lng" placeholder="Longitude">

<div class="row" style="padding: 10px">
    <div class="col">
        <?php if($update == true):
        ?>
        <button type="submit" name="Update">Update</button>
        <?php else: ?>
        <button type="submit" name="Save">Save</button>
        <?php endif ?>
    </div>
    <div class="col">
        <button type="reset" value="Reset">Reset</button>
    </div>
</div>
</body>
</html>

редактировать и update.php

<?php
include 'connection.php';

      //Default
      $id=0;
      $update = false;
      $category = '';
      $url = '';
      $datetime = '';
      $lat = '';
      $lng = '';

if (isset($_GET['id']))
      {
          $id = $_GET['id'];
          $update = true;
          $sql = "SELECT * FROM crimenews WHERE crimenews_id=$id";
          $query = mysqli_query($conn,$sql);

          if(mysqli_num_rows($query) == 1)
          {
              $row = mysqli_fetch_array($query);
              $category = $row['crimenews_cat'];
              $url = $row['crimenews_url'];
              $datetime = $row['crimenews_datetime'];
              $lat = $row['crimenews_locationLat'];
              $lng = $row['crimenews_locationLong'];
          }
      }
  if (isset($_POST['Update']))
      {
          $id = $_POST['id'];
          $category = mysqli_real_escape_string($conn,$_POST['category']);
          $url = mysqli_real_escape_string($conn,$_POST['url']);
          $datetime = mysqli_real_escape_string($conn,$_POST['datetime']);
          $lat = mysqli_real_escape_string($conn,$_POST['lat']);
          $lng = mysqli_real_escape_string($conn,$_POST['lng']);

          $conn->query("UPDATE crimenews SET crimenews_cat='$category', crimenews_url='$url', crimenews_datetime='$datetime', crimenews_locationLat='$lat', crimenews_locationLong='$lng' WHERE crimenews_id=$id");

          $_SESSION['message'] = "This news has updated";
          $_SESSION['msg_type'] = "warning";

          header('location: front.php');
        }

1 Ответ

1 голос
/ 19 апреля 2019

Вы не должны пытаться count результат вызова mysqli_query вообще (это mysqli_result объект, а не массив).Вместо этого, чтобы узнать, сколько строк было возвращено запросом, проверьте значение mysqli_num_rows, т. Е. Измените

if (is_countable($query)==1)

на

if (mysqli_num_rows($query) == 1)

Вы такженеобходимо изменить

$row = $sel->fetch_array();

на

$row = $query->fetch_array();

, так как $query - это имя вашего объекта результата, а не $sel.

На основе результатовВаш запрос и следующий код обновления, кажется, что вы действительно хотите это:

$category = $row['crime_cat'];
$url = $row['crimenews_url'];
$datetime = $row['crimenews_datetime'];
$lat = $row['crimenews_locationLat'];
$lng = $row['crimenews_locationLong'];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...