【问题标题】:Formatting MySQL Search Results格式化 MySQL 搜索结果
【发布时间】:2015-12-13 07:27:30
【问题描述】:

我目前正在开发一个网站数据库。整个网站都是用 PHP 编码的(过程式风格,不是面向对象的),当然还有强制性的 CSS/HTML 等等。

我的一切工作正常,但我无法弄清楚如何按照自己的方式设置搜索结果的格式。

现在,我以表​​格格式显示我的搜索结果,表格的每个单元格都显示来自搜索的不同变量。所有这些小表格在一列中垂直显示,一个接一个,直到结果结束。

我想要做的是并排显示两列搜索结果,以便一次在屏幕上显示更多结果。我已经能够显示两列重复的结果,但我想要两列交替的非重复结果。

我的结果的当前布局类似于:

Result 1
Result 2
Result 3
Result 4

我在尝试中能够完成的事情:

Result 1  Result 1
Result 2  Result 2
Result 3  Result 3
Result 4  Result 4

我想要什么:

Result 1  Result 2
Result 3  Result 4
Result 5  Result 6
Result 7  Result 8

任何人都可以阐明如何实现这一目标吗?我不确定它是简单的 CSS/HTML 格式化解决方案,还是 PHP/MySQL 解决方案。

以下是与显示我的结果的循环特别相关的代码:

$link = mysqli_connect( ALL MY INFO );

include('strings.php'); //This script sets the SQL search string based on user input.

echo '<br />';

$query = mysqli_query($link, $string) or die ("Error retrieving search results. Error in (main.php) search function.");

$resultrows = mysqli_num_rows($query);

echo '<table>
         <tr>
            <td colspan=2>
               <h3>Showing '.$resultrows.' results. </h3>
            </td>
         </tr>
         <tr>
            <td>';

while ($result = mysqli_fetch_assoc($query)){    
  include('results.php'); //This script formats each search result    
}

echo '     </td>
           <td>';

$query = mysqli_query($link, $string) or die ("Error retrieving search results. Error in (main.php) search function.");

while ($result = mysqli_fetch_assoc($query)){
  include('results.php');    
}

echo '     </td>
       </tr>
  </table>';

【问题讨论】:

  • (顺便说一句,我为格式错误的代码道歉。我正在使用一台古老的笔记本电脑,并且受制于记事本......)
  • @Nathan 在您发布代码之前开始编写答案,但我相信我的示例应该能够干净地混入您的代码中。也许它应该以results.php 逻辑结束,但一般概念有效。祝你好运!

标签: php html mysql


【解决方案1】:

我相信解决您问题的神奇方法是使用modulus (remainder) operator in PHP

$a 的余数除以 $b。

如果您不喜欢数学,这可能是一个奇怪的概念——而编程实际上就是关于逻辑的——但一旦你了解了模数(余数)运算符可以做什么,它就是一件神奇的事情。

基本上根据循环内的计数器计算模数。然后在这一点上,模值的剩余部分将是0...等等!你可以做点什么!下面的示例使用表格和行,但相同的基本概念可用于其他 HTML 元素或任何格式化逻辑。

例如,让我们用这个简单的 PHP 代码来创建一个基于简单字母数组的表:

$array = range('a','z');

echo '<table border="1">';
echo '<tr>';

foreach ($array as $key => $value) {
  echo '<td>';
  echo $value;
  echo '</td>';
}

echo '</tr>';
echo '</table>';

输出将是一张带有一大丑行的表格,呈现如下:

a   b   c   d   e   f   g   h   i   j   k   l   m   n   o   p   q   r   s   t   u   v   w   x   y   z

但是如果我们像这样添加一些模数逻辑:

$row_cell_amount = 2;
$array = range('a','z');

echo '<table border="1">';
echo '<tr>';

$counter = 1;
foreach ($array as $key => $value) {
  echo '<td>';
  echo $value;
  echo '</td>';
  if ($counter % $row_cell_amount == 0 && $counter != 0) {
    echo '</tr>';
    echo '<tr>';
  }
  $counter++;
}

echo '</tr>';
echo '</table>';

每当$counter 值与模运算符均匀匹配时,输出将干净地添加一个新行,从而导致0;又名:没有余数。所以输出看起来像这样,$row_cell_amount 的值为 2

a   b
c   d
e   f
g   h
i   j
k   l
m   n
o   p
q   r
s   t
u   v
w   x
y   z

如果您将$row_cell_amount 调整为类似于4,则输出将是这样的:

a   b   c   d
e   f   g   h
i   j   k   l
m   n   o   p
q   r   s   t
u   v   w   x
y   z

小注意,但在这个简单的示例中,您也许可以设置$key+1 而不是创建$counter,但只显示$counter 方法,因为您可能正在处理非数字或非数字排序的关联数组就关键值而言。

【讨论】:

    猜你喜欢
    • 2012-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    • 1970-01-01
    • 2023-02-23
    相关资源
    最近更新 更多