格式化MySQL搜索结果

时间:2015-12-13 07:27:31

标签: php html mysql

我目前正在开发一个网站数据库。整个网站用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>';

1 个答案:

答案 0 :(得分:0)

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

  

$ a的剩余除以$ b。

如果你没有进入数学,那么可能是一个奇怪的概念 - 编程完全是关于逻辑的 - 但是一旦你得到了模数(余数)运算符可以做的事情,这是一个神奇的事情。

基本上根据循环内的计数器计算模数。然后在那时,模数值的其余部分将是0 ......Etvoilà!你可以做点什么!下面的示例使用表格和行,但相同的基本概念可用于其他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;又名:没有余数。因此,对于2

,输出看起来像$row_cell_amount
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方法,因为您可能正在处理非关联数组关键值的数值或非数字排序。