Переменные не будут отображаться после неудачного запроса на удаление - PullRequest
0 голосов
/ 24 марта 2019

Я работаю над удалением запроса бренда.Если у Бренда есть какие-либо продукты, он не будет удален, иначе он будет удален.При работе с брендом без продукта он удаляется, но при работе с брендом с продуктом отображается сообщение об ошибке, что его невозможно удалить, но данные, связанные с этим брендом, на странице удаления не отображаются после того, как я нажимаю кнопку удаления.Все переменные не распечатываются и не отражают ничего, просто появляется сообщение об ошибке с кнопкой «Удалить» и другим HTML-кодом.

<?php 
require_once('../auth.php');
require_once('../constants.php'); 
$errors = array();
$id = $_GET['id'];
$select = mysqli_query($conn,"SELECT * FROM brands Where `id` = '".$id."'");
$row = mysqli_fetch_array($select);
$brandname = $row['brand_name'];
if(!isset($_GET['id']))
{
    header("Location: http://localhost/php/brands/index.php");
}
if(isset($_POST['submit'])){
    $selectProducts = mysqli_query($conn,"SELECT * FROM `products` Where `brand_id` = '".$id."'");
    $select = mysqli_query($conn,"SELECT * FROM brands Where `id` = '".$id."'");
    $selectrow = mysqli_fetch_array($select);
    $brandName = $selectrow['brand_name'];
    if($row = mysqli_num_rows($selectProducts) > 0)
    {
        $errors[] = "Cannot Delete this brand, it has products in it.";     
    }
    else{
    $id = $_GET['id'];
    $sql ="DELETE FROM `brands` WHERE `brands`.`id` = '".$id."'";
    $result = mysqli_query($conn,$sql) or die(mysqli_error($conn));
    if($result){
        echo $msg = $id." is deleted.";
        header("Location: http://localhost/wsp/php/brands/index.php");
        }
        else{
            $msg = $id." cannot be deleted.";
        }
    }
}
?>

форма:

<form method="post" action="delete.php?id=<?php echo $id; ?>">
    <h2 class="panel-title">Delete <?php echo $brandname; ?>?</h2>

    <div class="messages">
        <?php if($errors){
            foreach ($errors as $key => $value) {
                echo '<div class="alert alert-warning" role="alert">
                <i class="glyphicon glyphicon-exclamation-sign"></i>
                '.$value.'</div>';
            }
        }?>

    </div>
    <img src="<?php echo ASSETS;?><?php echo $row['brand_logo']; ?>" style="max-width:195px"/>
    <h2><?php echo strtoupper($row['brand_name']); ?></h2>
    <br><?php echo $row['brand_type']; ?><br><?php echo $row['status']; ?>
    <button type="submit" id="submit" name="submit"  class="btn btn-danger">Delete</button>
    <button name="reset" type="reset" class="btn btn-default">Cancel</button>
</form>

Я хотел бы знатьпочему все переменные в $ row [''] отображаются пустыми после того, как запрос говорит, что не может удалить марку?Почему не отображаются переменные?

1 Ответ

1 голос
/ 24 марта 2019

В вашем коде происходит много (плохих) вещей, но я думаю, что ваша проблема сводится к следующему:

if ($row = mysqli_num_rows($selectProducts) > 0)

Там вы назначаете true или false на $rowвместо строки данных.Вы должны изменить это на что-то вроде

if (mysqli_num_rows($selectProducts) > 0) {
} else {
   $row = mysqli_fetch_array($selectProducts);
}

На плохих вещах:

  1. Используйте подготовленные операторы вместо построения ваших запросов с помощью оператора ..
  2. Используйте правильные отступы, чтобы код был более читабельным.(Код чаще читается, чем пишется).
  3. Попробуйте структурировать немного лучше.Делайте одно в то время, а не четыре вещи переплетаются.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...