如果没有找到数据,如何制作表格行?

时间:2015-06-07 07:15:48

标签: php html mysql mysqli

<?php 
    include "db.php";
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        $search_date = $_POST['search'];
    }

    $show_result = mysqli_query($con, "SELECT * FROM data_input where input_date = '$search_date' ");
    // var_dump($show_result);
    $row_count = mysqli_num_rows($show_result);
    echo $row_count;

    if ($show_result){
        ?> 

        <table class="table table-bordered table-striped">

            <tr>
                <th>id</th>
                <th>date</th>
                <th>items</th>
                <th>description</th>
                <th>cost</th>
                <th>person</th>
            </tr>       
        <?php
    }
    else{

        if ($row_count == 0) {?>

        <tr>
            <td colspan="6">
                <?php echo "no data found"; ?>
            </td>
        </tr>
            <?php
        }

    }
    while($row = mysqli_fetch_object($show_result)){?>
        <tr>
            <td>
                <?php echo $row->id ?>
            </td>
            <td><?php echo $row->input_date ?></td>
            <td><?php echo $row->input_items ?></td>
            <td><?php echo $row->input_description ?></td>
            <td><?php echo "$".$row->input_cost ?></td>
            <td><?php echo $row->input_person ?></td>
        </tr>

    <?php


    }?>
    </table>

    <a href="index1.php" class="btn btn-default">Back</a>
    <?php

?>

这是一个搜索结果页面。一个包含搜索框和提交按钮的简单表单。首先,日期输入和查询找到的数据然后显示表中的数据,但如果没有找到任何数据,则表中没有显示。我该如何解决这个问题?谢谢你的回答。

3 个答案:

答案 0 :(得分:2)

if ($row_count == 0)的{​​{1}}分支中有else 这是不正确的,因为if ($show_result)仅在出现错误时才返回false。如果结果中没有行,则不会。

解决方案:在创建表标题后,将mysqli_query块向上移动到右侧。

if ($row_count == 0)

(那么else块是空的,所以你可以在这种情况下删除它,或者你可以回应一些关于出错的诊断。)

答案 1 :(得分:0)

您应该在循环行之前创建表,然后检查行数

  • 如果,则使用while显示表格行...AND (p.c=:c OR (:c IS NULL and p.c IS NULL))... 。 所以下面我已经做到了。

                              ID             日期             项目             描述             成本             人         

    else loop

答案 2 :(得分:0)

请使用以下代码替换您的while循环代码。如果没有找到数据,则找不到字符串&#39;将显示任何行。我也用mysqli_fetch_assoc代替mysqli_fetch_object。

while($row = mysqli_fetch_assoc($show_result)){ ?>
    <?php if(!empty($row)){ ?>
            <tr>
                <td>
                   <?php array_key_exists('id', $row) && $row['id'] != "" ? $id = $row['id']: "not found"; echo $id; ?>
                </td>
                <td><?php array_key_exists('input_date', $row) && $row['input_date'] != "" ? $input_date = $row['input_date']: "not found"; echo $input_date; ?></td>
                <td><?php array_key_exists('input_items', $row) && $row['input_items'] != "" ? $input_items = $row['input_items']: "not found"; echo $input_items; ?></td>
                <td><?php array_key_exists('input_description', $row) && $row['input_description'] != "" ? $input_description = $row['input_description']: "not found"; echo $input_description; ?></td>
                <td><?php array_key_exists('input_cost', $row) && $row['input_cost'] != "" ? $input_cost = $row['input_cost']: "not found"; echo "$".$input_cost; ?></td>
                <td><?php array_key_exists('input_person', $row) && $row['input_person'] != "" ? $input_person = $row['input_person']: "not found"; echo $input_person; ?></td>
            </tr>
    <?php }else if(empty($row)){ ?>
            <tr>
                <td>
                   <?php echo "not found";   ?>
                </td>
                <td><?php echo "not found";   ?></td>
                <td><?php echo "not found";   ?></td>
                <td><?php echo "not found";   ?></td>
                <td><?php echo "not found";   ?></td>
                <td><?php echo "not found";   ?></td>
            </tr>        
<?php } }?>