在php计算之前显示搜索结果的数量

时间:2015-11-29 16:14:41

标签: php

我正在完成一个搜索页面,显示它在我的数据库中找到的搜索结果。现在,我想显示它找到了多少。

为了做到这一点,我把一个计数器放在每次显示搜索结果时变大。问题是我不知道如何显示它发现了多少结果 BEFORE 它实际显示我的搜索结果,考虑到我只能在php计算我的搜索结果后才能回显计数器。 / p>

以下是我的代码的样子:

if(isset($_POST['caut']) && !empty($_POST['caut']))
        {
        $ok1=0;
        $ok2=0;
        $count1=0;
    $count2=0;
        $text=$_POST['caut'];
        $sql="select * from news where content like '%".$text."%' or title like '%".$text."%' order by date desc";
        $result=mysql_query($sql)or die("Unsuccessful".mysql_error());

        #search results displaying start
        while($getNews = mysql_fetch_object($result)){
                $ok1=1;
                $count1++;
                $title = $getNews->title;
                $authorPost = mysql_fetch_array(mysql_query("SELECT * FROM account WHERE id='$getNews->author'"));
                ?>
                <div class="news">
                        <a href="index.php?s=news_page&post=<?php echo $getNews->id; ?>" target="_blank"><?php echo truncatetext($title, 81); ?></a>
                        <?php
                        if (has_rights($rights['add_news'])){
                                echo '<a href="index.php?s=user_panel&a=news&delete='.$getNews->id.'"><div id="delete-button"></div></a>';
                                echo '<a href="index.php?s=user_panel&a=news&edit='.$getNews->id.'"><div id="edit-button"></div></a>';
                        }
                        ?>
                        <p>
                                <div class="news-author">By <a href="index.php?s=user&id=<?php echo $authorPost['id']; ?>"><?php echo $authorPost['real_name']; ?></a></div>
                                <div class="news-date"><img src="images/calendar-icon.png">On <?php echo $getNews->date; ?></div>
                        </p>
                </div>
                <div style="height: 1px; background-color: #cecece; margin-top: 10px; margin-bottom: 0px;"></div>

        <?php
        }

                $sql1="select * from events where content like '%".$text."%' order by date desc";
                $result1=mysql_query($sql1)or die("Unsuccessful".mysql_error());
                while($getEvents = mysql_fetch_object($result1)){
                        $ok2= 1;
                        $count2++;
                        $title = $getEvents->title;
                        $authorPost = mysql_fetch_array(mysql_query("SELECT * FROM account WHERE id='$getEvents->author'"));
                        ?>
                        <div class="news">
                                <div class="event-date" align="center">
                                        <div class="event-day"><?php echo $getEvents->event_day; ?></div>
                                        <div class="event-month"><?php echo $getEvents->event_month.'.'.$getEvents->event_year; ?></div>
                                </div>
                                        <a href="index.php?s=events_page&post=<?php echo $getEvents->id; ?>"><?php echo truncatetext($title, 36); ?></a>
                                <?php
                                if (has_rights($rights['add_news'])){
                                        echo '<a href="index.php?s=user_panel&a=events&delete='.$getEvents->id.'"><div id="delete-button"></div></a>';
                                        echo '<a href="index.php?s=user_panel&a=events&edit='.$getEvents->id.'"><div id="edit-button"></div></a>';
                                }
                                ?>
                        </div>
                        #search results displaying end


                <?php
                }      

                        #I want the following TWO lines showed BEFORE my search results are being displayed
                        $nr_rez= $count1 + $count2;
                        echo '<br><br><div class="info">Found '.$nr_rez.' results matching "'.$text.'".</div>';


                        if($ok1==0 && $ok2==0)
                        echo '<div class="error">No results found with that keyword.</div>';

}

这可以吗?

1 个答案:

答案 0 :(得分:1)

当然,请使用mysql_num_rows()http://php.net/manual/en/function.mysql-num-rows.php

此外,我会切换到mysqli,因为mysql很快就会死亡。

并且从不直接使用任何用户输入而不对其进行清理(例如您的$_POST['caut'])。 Google为'sql注入'。

相关问题