UPDATE:很抱歉,我第一次的问题不清楚,希望这更有意义。我有一个查询,它列出了所有类别,现在它正在迭代并将其放置在段落标记中。
$data = $conn->query('SELECT * FROM category ORDER BY category_name');
foreach($data as $row) {
echo '
<p><a href="category/'.$row['category_slug'].'">'.$row['category_name'].'</a></p>';
}
我怎么能把所有的名字按字母顺序放在列里呢
A---------B--------C
动作--------Brah----卡通
冒险----布拉----漫画
我可以创建一列,然后在每个列中进行查询,但这意味着要对字母表中的每个字母进行查询。我可以用一个查询来实现这一点吗。
我想他想要的是这样的东西:
$wordArray = array('august', 'March', 'october', 'April', 'January', 'February', 'June', 'July');
foreach($wordArray as $word){
// Get first letter uppercased
$letter = ucfirst(substr($word, 0, 1));
$ordered[$letter][] = $word;
}
echo '<pre>';
print_r($ordered);
echo '</pre>';
输出为:
Array
(
[A] => Array
(
[0] => august
[1] => April
)
[M] => Array
(
[0] => March
)
[O] => Array
(
[0] => october
)
[J] => Array
(
[0] => January
[1] => June
[2] => July
)
[F] => Array
(
[0] => February
)
)
然后你可以构建一个像@CodeGodie这样的表,你就完成了:)
在获取数据并显示数据时,您可能需要定义显示顺序的东西。
$query = "SELECT * FROM category ORDER BY category_name ORDER BY `category` ASC";
$row = mysql_query($query);
$row = mysql_fetch_object($row);
//Count number of pets
$count = mysql_num_rows($query);
//Figure out how many pets to put in each column
$columncount = ceil($count/3);
$lastcolumncount = $count - $columncount *2;
$middlecolumnstart = $count - $columncount - $lastcolumncount +1;
$lastcolumnstart = $count-$lastcolumncount +1;
//Put the pets into three columns
if ($row):
$count = 0;
?>
<div class="column">
<?php
foreach ($rows as $cat):
$count ++;
if($count == $middlecolumnstart) {
echo '</div><div class="column">';
}
if($count == $lastcolumnstart) {
echo '</div><div class="column last-column">';
}
?>
<a href=""><?php echo $cat->category_name; ?></a>
<?php
endforeach;
endif; ?>
</div>
<div style="clear:both;"></div>
CSS:
.column {
width:180px;
float:left;
margin-right:26px;
}
.olumn a {
display:block;
width:100%;
margin-bottom:10px;
}
.column.last-column {
margin-right:0;
}
问题不清楚。
快速解决方案:
$data = $conn->query('SELECT * FROM category ORDER BY category_name');
echo '<table><tr><td>';
$curIndexLatter='';
foreach($data as $row) {
if ($curIndexLatter != '' && $curIndexLatter!=substr($row['category_name'],0,1) )
echo '</td><td>';
echo '<p><a href="category/'.$row['category_slug'].'">'.$row['category_name'].'</a></p>';
$curIndexLatter=substr($row['category_name'],0,1);
}
echo '</td</tr></table>';
首先,您对进行如下排序:
$array = $data->fetch_assoc();
$arr = array();
foreach ($array as $n) {
$f = substr($n, 0, 1);
$arr[$f] = array();
foreach ($array as $n2) {
$f2 = substr($n2, 0, 1);
if ($f2 === $f) {
array_push($arr[$f], $n2);
}
}
}
?>
然后,您可以对其进行迭代以构建您的列,如下所示:
$cols = "";
foreach ($arr as $letter => $names) {
$column = "<div class='column'>";
$column .= "<h3>$letter</h3>";
foreach ($names as $name) {
$column .= "<div>$name</div>";
}
$column .= "</div>";
$cols .= $column;
}
?>
现在使用HTML:
<body>
<?= $cols ?>
</body>
CSS:
.column{
float:left;
padding:10px;
}