PHP / MySQL显示第一个X结果,隐藏其余部分

时间:2010-09-29 11:00:17

标签: php jquery mysql

有谁知道如何引入所有mysql表的结果,只显示第一个X,(比如10),然后使用jquery隐藏其余部分?基本上,因为我已经有了jquery,我只需要知道如何只显示一个div中的前X个结果,然后将其余部分显示在一个单独的div中。

我的目标是仅显示前10个结果,但在页面底部提供一个链接,允许用户显示所有结果。认为超链接只能重新执行查询,但认为使用jquery显示/隐藏会更容易。

非常感谢提前。小号

以为我会添加我正在使用的代码

$query = "SELECT * FROM ispress WHERE active = '1' ORDER BY YEAR(date) DESC, MONTH(date) DESC LIMIT 0, 7";
                        $resultSet = mysql_query($query);

                        if (mysql_num_rows($resultSet))
                        {
                          $newsArray = array();
                          while ($newsResult = mysql_fetch_array($resultSet))
                          {                                   
                        $newDate =  $newsResult['date'] ;    
                        $timePeriod = date('F  Y ',strtotime($newDate));    
                        $bFirstTime = true;

                        if (!isset($newsArray[$timePeriod]))
                        {
                          $newsArray[$timePeriod] = array();
                        }
                        $newsArray[$timePeriod][] = $newsResult;                            
                          }
                          foreach ($newsArray as $timePeriod => $newsItems)
                          {                                                                                    
                        echo '<div class="date">' . $timePeriod . '</div>' . PHP_EOL;          
                           echo '<ul class="press">' . PHP_EOL;
                        foreach ($newsItems as $item)
                        {                    
                        if ($bFirstTime) {
                        echo '<li>';
                         echo '<img src="'.$wwwUrl.'images/news/'.$item['image'].'" width="'.$item['imgWidth'].'" height="'.$item['imgHeight'].'" title="'.$item['title'].'" alt="'.$item['title'].'" />
                                <h3><a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php">'.$item["title"].'</a></h3>                                    
                                <p>'.substr($item['descrip'],0,244).'...</p>
                                <p><a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php">Read more</a></p>    
                                ';
                         echo '</li>' . PHP_EOL;    
                        $bFirstTime = false;
                        } else {
                           echo '<li>';
                         echo '<a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php"><img src="'.$wwwUrl.'images/news/'.$item['image'].'" width="'.$item['tnWidth'].'" height="'.$item['tnHeight'].'" title="'.$item['title'].'" alt="'.$item['title'].'" /></a>
                                <h3><a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php">'.$item["title"].'</a></h3>                                    
                                <p>'.substr($item['descrip'],0,100).'...</p>
                                <p><a href="'.$wwwUrl.'press-releases/'.$item["id"].'/'.$item["title"].'.php">Read more</a></p>    
                                ';
                        echo '<div class="clear"></div>' . PHP_EOL;
                         echo '</li>' . PHP_EOL;                            
                            }                                                        
                           }
                        echo '</ul>' . PHP_EOL;                            
                              }
                            echo '<p><a href="#" id="slick-toggle">Older posts...</a></p>'. PHP_EOL;
                            echo '<div id="slickbox">This is the box that will be shown and display the rest of the news results. :)</div>'. PHP_EOL;
                        }                                                
                        else
                            {
                          echo 'We currently have no press releases available';
                        }

6 个答案:

答案 0 :(得分:2)

如果你的元素已经存在于jQuery对象中(比如说,$('#sql-results')包含你的所有结果),你总是可以这样做:$('#sql-results:lt(10) ')使用前十个元素和$('#sql-results:gt(9)')来处理其余的元素。

您必须自行决定您处理此数据量的方法效率。

是的,因此对于您的特定标记结构,您可以将其添加到JS:

// Obviously this is untested and probably not bug-/typo-free

(
  function($) {
    var $slickbox = $('#slickbox').hide();

    $('<ul></ul>')
      .appendTo($slickbox)
      .append('ul.press li:gt(9)');

    $('#slick-toggle')
      .bind(
        'click',
        function(){
          $slickbox.toggle();
        }
      );
  }
)(jQuery);

答案 1 :(得分:2)

这将隐藏前10个孩子。您打算如何展示其他结果?按钮,字段,jqueryui小部件? 您只需要添加一个调用此函数的click事件。

function limit_results(start, end) {
    $('#things > .thing').each(index) {
        if(index < end && index >= start) {
            $(this).hide();
        }  
    }
}
limit_results(1,10);

答案 2 :(得分:1)

这将涉及大量重写,但jquery有datatables plugin将显示数据。要使用它,您需要执行类似

的操作
echo '<table id="news-table">'
echo '<thead>';//Datatables needs a thead with the correct number of columns. However you don't need to fill them in.
echo '<th>Date</th>';
echo '<th>Time Period</th>'
echo '</thead><tbody>';
while ($data = my_sql_fetch_array($result)) {
    echo '<td>Whatever</td>';
    echo '<td>Another Field</td>';
}
echo '</tbody></table>';

然后是jquery

$('#news-table').dataTable();

我不确定如何自定义没有数据消息,我知道使用你编写的代码这对你来说可能没有任何好处,但我发布它是因为它可能对某些人看起来很有用对于分页信息,或者如果你想再次做类似的事情。数据表也很有用,因为用户可以选择他们想要显示的结果数,他们想要排序的列以及排序的方向。

答案 3 :(得分:0)

在您的查询中

限制0,10 对于其余的 限制11,xxx

答案 4 :(得分:0)

通过递增计数器打印每行的数据计数。当你到11开始一个新的div,其id与你已经为你定义id的第一个div的id不同。现在使用jQuery,您可以隐藏并显示第二个div,其余的结果可以随意显示。

答案 5 :(得分:0)

将php文件中的返回值除以字符 例如:

echo "this is first value +";

echo "this is second value +";

echo "this is third value +";



使用javascript分隔返回值 例如:

var ajaxArray = ajaxValues.split("+");  



现在所有三个值都放在ajaxArray中,您可以使用任何您想要的人 例如:

ajaxArray[0] = this is first value