我目前正在开发一个网站数据库。整个网站用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>';
答案 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
方法,因为您可能正在处理非关联数组关键值的数值或非数字排序。