格式化MySQL搜索结果


Formatting MySQL Search Results

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

我相信你的问题的神奇解决方案是在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方法,因为您可能处理的是非数字或非数字排序的关联数组,直到键值为止。