【问题标题】:php echo page numbers in same linephp 在同一行中回显页码
【发布时间】:2012-10-10 05:03:27
【问题描述】:

我的回显结果有分页系统,但是页码在彼此下方回显

例如

                              1
                2 3 4 5

这是我的代码:

for($i=0;$i < $count1;$i=$i+$limit)
 {
if($i <> $start)
{       
    echo "<a href='view.php?search=$search&start=$i&limit=$limit&price=$price&category=$category'><font face='Verdana' size='2'><b>&nbsp;$l&nbsp;</b></font></a> ";
}
else
{
    echo "<center><font face='Verdana' size='4' color=#2E9AFE ><b>&nbsp;$l&nbsp;</b></font></center>";
}        

修改代码:

$i=0;
 $l=1;
   echo "<p align='left'>";
   for($i=0;$i < $count1;$i=$i+$limit)
   {
  if($i <> $start)
   {        
   echo '<a href="view.php?   search=$search&start=$i&limit=$limit&price=$price&category=$category">$i</a>';
}
else
{
   echo '<span class="current">$i</span>';
}        
$l=$l+1;
  }
 echo "</p>";
  }

【问题讨论】:

  • 只需使用带有float的DIV元素:left...看看我的答案。
  • + $limit 部分是关于什么的?变量名称命名错误或位置错误。当然应该是$i += $step$i++。您是否需要您的系统一次跳转多个页面?

标签: php css pagination echo


【解决方案1】:
<?php for($i=0;$i < $count1;$i=$i+$limit): ?>

  <?php if($i <> $start): ?>

 <a href="view.php?search=<?php echo $search;?>&start=<?php echo $i;?>&limit=<?php echo $limit;?>&price=<?php echo $price;?>&category=<?php echo $category;?>">
 <?php echo $i; ?></a>

  <?php else: ?>

  <span class="current"><?php echo $i;?></span>

  <?php endif; ?>
<?php endfor; ?>

CSS:

a,span.current{font-weight:bold;font-family:Verdana;}

所有都是内联元素,所以它们将保持...内联。在您的 CSS 中添加填充、文本装饰、颜色和任何内容。如果您的意图更加明确(中心?),我可以帮助您实现您想要的。远离旧的 html 和表格 :)

【讨论】:

  • +1 虽然我同意使用跨度(通过 div),但您需要修改链接,因为您目前没有回显 $vars。
  • @pebbl 谢谢,我错过了。相应地编辑
  • @DamienPirsy 谢谢你的回复!当我用我的代码替换它时出现错误,如果 标签已经在 php 文件中,我是否需要包含它?
  • 嗯,不,在这种情况下不是第一个开始标签。你得到什么错误?无论如何,这只是简短的语法,您可以照常写,这不是重点。
  • 现在它回显了 $i 而不是数字,(但它们是一致的,谢谢)知道我该如何解决这个问题吗?生病将我修改后的代码添加到问题中非常感谢您的帮助!
【解决方案2】:

这是执行上述操作的另一种方法,并添加了一些附加功能:

$count1 = 10;    
$menu = '';

$link = array(
  'search' => ( isset($search) ? $search : $search = '' ),
  'start' => ( isset($start) ? $start : $start = 0 ),
  'limit' => ( isset($limit) ? $limit : $limit = 1 ),
  'price' => ( isset($price) ? $price : $price = '' ),
  'category' => ( isset($category) ? $category : $category = '' ),
);

foreach( range(0, $count1, $limit) as $i ) {
  $menu .= ( ($link['start'] = $i) == $start ? 
    '<span class="current">'.$i.'</span>' :
    '<a href="view.php?'.http_build_query($link).'">'.$i.'</a>'
  ) . PHP_EOL;
}

echo $menu;

(以上需要php5+)

关于 neeko 的评论,要将 $start 变量与链接中显示的文本分开 - 您所要做的就是引入另一个在每个循环中计数的变量 - 或者,因为我们已经有了范围数组,我们可以使用它:

foreach( range(0, $count1, $limit) as $key => $i ) {
  $menu .= ( ($link['start'] = $i) == $start ? 
    '<span class="current">Page'.($key+1).'</span>' :
    '<a href="view.php?'.http_build_query($link).'">Page'.($key+1).'</a>'
  ) . PHP_EOL;
}

我使用了$key + 1,因为$key 将从零开始(即从零开始计数)但是 +1 只是改变了一些东西,所以我们从 1 开始计数。

【讨论】:

  • 感谢您的回复!这确实很好,但是,有一件事,无论如何让它显示 page1, page2 而不是 0, 4, 8
  • 谢谢,有没有办法让它显示 page1、page2... 等?
  • 如果您查看我上面的答案,您应该会看到第二部分代码(您可能需要重新加载页面)。这有我刚刚添加的修改以显示 Page1、Page2 等... :)
  • 如果广告少于 4 个,我会收到此错误,警告:range() [function.range]: step 超出第 627 行 public_html/search.php 中的指定范围
  • 我假设如果少于 4 个,您根本不需要显示页面菜单?因此您可以将整个代码包装在if ( $count1 &gt;= $limit ) { ... } 中。或者你可以把它放在 foreach if ( $count1 &lt;= $limit ) { $count1 = $limit = 0; } 之前,这将强制范围只返回一个项目 - 这将只呈现你的“当前”页面跨度。
【解决方案3】:

我认为这是因为 center 是一个块元素,这意味着它不会与其他数字内联(但这不是我的专长,所以我可能错了。你可以把它们放在一张桌子上。

echo "<table><tr>";

for($i=0;$i < $count1;$i=$i+$limit)
{
    echo "<td>";
    if($i <> $start)
    {       
        echo "<a href='view.php?search=$search&start=$i&limit=$limit&price=$price&category=$category'><font face='Verdana' size='2'><b>&nbsp;$l&nbsp;</b></font></a> ";
    }
    else
    {
        echo "<center><font face='Verdana' size='4' color=#2E9AFE ><b>&nbsp;$l&nbsp;</b></font></center>";
    }
    echo "</td>";
}
echo "</tr></table>";

【讨论】:

  • 你是对的, center 是一个块级元素,它也被弃用了,不应该再使用了。而且我想说,除了表格数据之外,人们也可以调用使用表格来处理其他任何事情;)
  • 哈哈,同意,我已经开始使用 div,但我没有做太多 html,所以我对它太生疏了,所以很好。
【解决方案4】:

试试这个:

for($i=0;$i < $count1;$i=$i+$limit)
{
if($i <> $start)
{       
    echo "<a href='view.php?search=$search&start=$i&limit=$limit&price=$price&category=$category'><div style='font-family: verdana; font-size: 12px; font-weight: bold; float: left; position: relative; padding: 5px; margin-right: 5px;'>$l</div></a>";
}
else
{
    echo "<div style='font-family: verdana; font-size: 14px; font-weight: bold; float: left; position: relative; color: #2E9AFE; padding: 5px; margin-right: 5px;'>$l</div>";
}   

我已经更改了您的 html 部分代码以显示在带有 float: left 和其他一些 css 调整的 div 元素中,所以现在它应该放在一行中......

【讨论】:

  • div 真的有必要吗?既然已经有内联元素,为什么还要使用浮动块?
  • 我通常用 div 来做,这样我可以更容易地在上面放一些想要的样式。最后,我个人更喜欢 div :p
  • 好吧,你可以给一个内联元素一个 display:block 并将它用作一个 div...你的方法在语义上不正确,并且可能导致 div 汤...只是我的 2 美分
猜你喜欢
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-10
  • 1970-01-01
  • 2017-12-23
  • 2011-07-20
  • 1970-01-01
相关资源
最近更新 更多