有谁知道如何引入所有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';
}
答案 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