Условие ELSE не работает в цикле while в PHP - PullRequest
0 голосов
/ 27 августа 2018
<?php
    $conn=mysqli_connect("localhost","id6755695_artemi8","sharanod"
    ,"id6755695_user_info");
    if (!$conn) {
        die("Connection failed: " . mysqli_connect_error());
    }
    $department = $_POST["department"];
    $year = $_POST["year"];
    $sem = $_POST["semester"];
    $reg = $_POST["regulation"];

    $sql = "SELECT  book_name, author, edition, image FROM dept_search WHERE 
    department='$department' AND year='$year' AND semester='$sem' AND 
    regulations='$reg' ";
    $result=mysqli_query($conn,$sql);

    while($row = mysqli_fetch_assoc($result))
    {
        if($row)
        {
            echo "<br>";
        ?>
        <img src=" <?php echo $row['image']; ?> " height="300" width="300">

        <?php
        echo "<br>";

        echo "<b>",$row['book_name'],"</b>";
        echo "<br>";
        echo $row['author'];
        echo "<br>";
        echo $row['edition'];

        }
        else
        {
            echo "sorry book not found";
        }
    }

    mysqli_close($conn);


?>

, пожалуйста, помогите мне с этим кодом, я строю систему управления библиотекой. Дело в том, что я должен иметь возможность отображать книги, если заданные значения присутствуют в базе данных, если не должна быть отображена книга, не найденная, но в цикле while после if, иначе не работает .....

Ответы [ 4 ]

0 голосов
/ 27 августа 2018

Все, что вам нужно сделать, это то, что вы должны изменить, если условие с if($row) на if($other_condition)

В настоящее время вы просто проверяете, есть ли что-то внутри $row, и это условие никогда не будет неправильным, если вы не назначите его null. Потому что, где $row будет иметь что-то, тогда будет выполняться цикл while, а когда цикл while будет выполняться, тогда будет выполнено условие.

вам нужно просто одну вещь, то есть изменить, если условие, подобное приведенному ниже ...

if($row['value'] == 'something')

0 голосов
/ 27 августа 2018

Как уже отмечали другие, ваш оператор else никогда не будет выполняться. Если вы уже находитесь в цикле while, у вас определенно будет определен $row, и по этой причине он никогда не запустится.

Что вы можете сделать , так это проверить заранее, если запрос вернул фактические результаты, например:

$result=mysqli_query($conn,$sql);

if($result->num_rows > 0){
   while($row = mysqli_fetch_assoc($result)){
      echo "<br>";
      ?>
      <img src=" <?php echo $row['image']; ?> " height="300" width="300">
      <?php
      echo "<br>";
      echo "<b>",$row['book_name'],"</b>";
      echo "<br>";
      echo $row['author'];
      echo "<br>";
      echo $row['edition'];
  }
}else{
    echo "Sorry book not found";
}
0 голосов
/ 27 августа 2018

Вы можете попробовать с mysqli_num_rows .. пример кода следующим образом:

$rowcount=mysqli_num_rows($conn,$sql);
if($rowcount!=0){
$result=mysqli_query($conn,$sql);

 while($row = mysqli_fetch_assoc($result))
 {
    echo "<br>";
?>
0 голосов
/ 27 августа 2018

Вы перебираете все строки, возвращаемые командой "mysqli_fetch ...". Ваши «если» и «еще» бесполезны - у вас всегда будут строки. Если у вас нет строк, вы даже не вводите тело цикла while.

Вам необходимо СЧИТАТЬ возвращенные строки (count ($ row)) и отобразить сообщение, что ничего не найдено, если число меньше единицы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...