使用php在gridview中垂直显示数据
一个fo客户机需要按照网格的字母顺序显示产品。 像这样展示。 将从数据库中查询产品使用php在gridview中垂直显示数据,php,gridview,Php,Gridview,一个fo客户机需要按照网格的字母顺序显示产品。 像这样展示。 将从数据库中查询产品 A H O U B I P V C J Q W D K R X E L S Y 行可以递增,但列不能递增。 最大列数为4。 有人可以提出这样做的想法 提前谢谢 如果你有一系列想要显示的结果,那就很简单了。只需计算每个最后一列中的行数(在本例中,显示的结果总数除以4,然后向上取整)。然后,如果给定当前列中项目的索引,则这将成为获取下一列中项目索引的偏移量 类似这样的方法会奏效:
A H O U
B I P V
C J Q W
D K R X
E L S Y
行可以递增,但列不能递增。
最大列数为4。
有人可以提出这样做的想法
提前谢谢 如果你有一系列想要显示的结果,那就很简单了。只需计算每个最后一列中的行数(在本例中,显示的结果总数除以4,然后向上取整)。然后,如果给定当前列中项目的索引,则这将成为获取下一列中项目索引的偏移量 类似这样的方法会奏效:
<?php
$rows= array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X');
$numberOfTableRows= ceil(count($rows)/4.0);
?>
<table>
<?php
for($ndx=0;$ndx<$numberOfTableRows;$ndx++)
{
?>
<tr>
<td><?php echo $rows[$ndx]; ?></td>
<td><?php echo (isset($rows[$ndx+$numberOfTableRows]) ? $rows[$ndx+$numberOfTableRows] : ''); ?></td>
<td><?php echo (isset($rows[$ndx+($numberOfTableRows*2)]) ? $rows[$ndx+($numberOfTableRows*2)] : ''); ?></td>
<td><?php echo (isset($rows[$ndx+($numberOfTableRows*3)]) ? $rows[$ndx+($numberOfTableRows*3)] : ''); ?></td>
</tr>
<?php
}
?>
</table>
试试这个:
<?php
$rows = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X');
$numberOfTableRows = ceil(count($rows)/4.0);
?>
<table>
<?php
for($ndx=0;$ndx<$numberOfTableRows;$ndx++)
{
?>
<tr>
<td><?php echo $rows[$ndx]; ?></td>
<td><?php echo $rows[$ndx+$numberOfTableRows]; ?></td>
<td><?php echo $rows[$ndx+($numberOfTableRows*2)]; ?></td>
<td><?php echo $rows[$ndx+($numberOfTableRows*3)]; ?></td>
</tr>
<?php
}
?>
</table>
- 谢谢
<?php
$pdo = new PDO('mysql:host=localhost;dbname=store', 'youruser', 'yourpasswd');
$pdo->query('SET NAMES UTF8'); # here we say NO to latin1
if(isset($_GET['id'])) {
$category_id = (int) $_GET['id'];
$prepared = $pdo->prepared('SELECT * FROM products WHERE category_id = :category_ud ORDER BY title ASC');
$prepared->execute([':category_id' => $category_id]);
# don't use this in production with large data sets
$a = $prepared->fetchAll(PDO::FETCH_ASSOC);
# spit data into columns
$size = round(sizeof($a) / 4);
$b = [];
for($i = 0; $i < 4; $i++) {
$b[] = array_slice($a, $i * $size, $size);
}
# transform it to rows
$c = [];
for($i = 0; $i < $size; $i++) {
$c[$i] = [];
for($j = 0; $j < 4; $j++) {
if(isset($b[$j][$i]))
$c[$i][$j] = $b[$j][$i];
else
$c[$i][$j] = '';
}
}
# send $c to output code here
}
你研究过tablesorter插件吗?没有。你能告诉我那是什么吗?到目前为止你尝试过什么吗?@DamForums这是一个jquery插件,它将获取你返回的所有数据,并将其放入一个漂亮整洁的可排序表中。只需谷歌jquery表排序器插件就可以找到它,还有一些例子,我试图显示字母表。但问题是我知道如何将查询集成到其中。我刚刚在stackthis上发表了一篇文章,这对字母表有效。但是如果我使用mysql查询来获取数据,它只会显示动态表中的第一个数据项。这就是我所做的。我编写了一个查询来获取用户。$sql=mysql\U查询(“通过tbl\U user.user ASC从tbl\U用户订单中选择用户”)$cath=mysql\u fetch\u数组($sql);然后我将$cath传递给$rows。我做错了什么吗?@Danielpsc。我试图使用您的帮助显示所有USR。但是我遇到了一些问题。你能帮我吗?。我需要在一个单独的
- 标签中显示用户。每个用户都列在一个
- 标签中。我必须在href中列出他们的用户id。这是我做的代码 。你能帮我一下吗?我有大麻烦了。因此将有4个ul标签。我可以重复这些吗?您不需要重复字段名称。因此,类似这样的方法应该有效:
。当然,您还需要将user\u id
添加到SELECT
语句中。假设表中有25个用户。那么我如何在第一个标签中显示前7个用户,在另一个标签中显示第二个7个用户基本上会有4个独立的标签。这些标签将在div标签中。我如何使用这些代码来做到这一点?你能在这方面提供更多帮助吗?我是一个新手。如何使用mysql查询来获取要在这里显示的数据?但我使用的是5.4.7php@DamForums我已经更新的代码,它现在应该说明如何可以做到这一点。请注意,我在这里使用
short\u open\u tags=on
ini设置和PDO
mysql驱动器这适用于字母表。但是如果我使用mysql查询来获取数据,它只显示动态表中的第一个数据项。这就是我所做的。编写一个查询来获取用户。$sql=mysql\u query(“通过tbl_user.user ASC从tbl_user ORDER中选择user”);$cath=mysql_fetch_数组($sql);然后我将$cath传递给$rows。我做错了什么?
<?php
$rows = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X');
$numberOfTableRows = ceil(count($rows)/4.0);
?>
<table>
<?php
for($ndx=0;$ndx<$numberOfTableRows;$ndx++)
{
?>
<tr>
<td><?php echo $rows[$ndx]; ?></td>
<td><?php echo $rows[$ndx+$numberOfTableRows]; ?></td>
<td><?php echo $rows[$ndx+($numberOfTableRows*2)]; ?></td>
<td><?php echo $rows[$ndx+($numberOfTableRows*3)]; ?></td>
</tr>
<?php
}
?>
</table>
<?php
# generate alphabet for demo
# warning: php5.5 generator
function az1() { for($a = 65; $a < 91; $a++) { yield chr($a); } }
$a = [];
foreach(az1() as $s) { $a[] = $s; }
# spit data into columns
$size = round(sizeof($a) / 4);
$b = [];
for($i = 0; $i < 4; $i++) {
$b[] = array_slice($a, $i * $size, $size);
}
# transform it to rows
$c = [];
for($i = 0; $i < $size; $i++) {
$c[$i] = [];
for($j = 0; $j < 4; $j++) {
if(isset($b[$j][$i]))
$c[$i][$j] = $b[$j][$i];
else
$c[$i][$j] = '';
}
}
print_r($c);
id | category_id | title | content | image | price | qty
SELECT * FROM products WHERE category_id = 5 ORDER BY title ASC
<?php
$pdo = new PDO('mysql:host=localhost;dbname=store', 'youruser', 'yourpasswd');
$pdo->query('SET NAMES UTF8'); # here we say NO to latin1
if(isset($_GET['id'])) {
$category_id = (int) $_GET['id'];
$prepared = $pdo->prepared('SELECT * FROM products WHERE category_id = :category_ud ORDER BY title ASC');
$prepared->execute([':category_id' => $category_id]);
# don't use this in production with large data sets
$a = $prepared->fetchAll(PDO::FETCH_ASSOC);
# spit data into columns
$size = round(sizeof($a) / 4);
$b = [];
for($i = 0; $i < 4; $i++) {
$b[] = array_slice($a, $i * $size, $size);
}
# transform it to rows
$c = [];
for($i = 0; $i < $size; $i++) {
$c[$i] = [];
for($j = 0; $j < 4; $j++) {
if(isset($b[$j][$i]))
$c[$i][$j] = $b[$j][$i];
else
$c[$i][$j] = '';
}
}
# send $c to output code here
}
<? foreach($c as $row): ?>
<tr>
<? foreach($row as $product): ?>
<td>
.. product information
</td>
<? endforeach ?>
</tr>
<? endforeach ?>