[英]PHP dynamic alphabetical list with headers
所以我想生產的是這樣的:
除非我不想重復,否則當有多個符號時,它就會重復,並重新創建“ C”列表視圖標題。 我的SQL查詢正在創建稱為first_char的列,該列保存其他列之一的第一個字符。......下面是我的代碼:
<?php foreach ($data as $name=>$signs): ?>
<!-- If name is not empty, create the header -->
<?php if (isset($name) && !empty($signs)): ?>
<div data-role='collapsible-set' data-theme='d'>
<h2>Username: <strong id="headerName"><?=$name?></strong></h2>
<?php endif; ?>
<?php endforeach; ?>
<!-- for every sign, take the first char and create a list view -->
<?php foreach ($signs as $char):
$current_char = '';
if ($char['first_char'] != $current_char){
$current_char = $char['first_char'];
echo '<ul data-role="listview" data-dividertheme="d" style="margin-top: 0;"><li data-role="list-divider">'.$current_char.'</li></ul><br>';
}
foreach ($signs as $sign):
if($current_char == $sign['first_char'] and !empty($signs)):
?>
<div data-role='collapsible' data-collapsed='true' data-icon='arrow-l'>
<h3><?=$sign['sign_name']?></h3>
<div class='ui-grid-a'>
<div class="ui-block-a">
<div class="ui-bar ui-bar-d" style="height:25px;">
<strong>Last Seen:</strong><strong id="text"><?=$sign['last_connected']?></strong>
</div>
</div>
<div class="ui-block-a">
<div class="ui-bar ui-bar-d" style="height:25px;">
<strong>Resolution:</strong><strong id="text"><?=$sign['resolution_x'].'x'.$sign['resolution_y']?></strong>
</div>
</div>
<div class="ui-block-a">
<div class="ui-bar ui-bar-d" style="height:25px;">
<strong>Group Name:</strong><strong id="text"><?=$sign['group_name']?></strong>
</div>
</div>
<div class="ui-block-a">
<div class="ui-bar ui-bar-d" style="height:25px;">
<strong>Sign Number:</strong><strong id="text"><?=$sign['sign_id']?></strong>
</div>
</div>
</div>
</div>
<?php endif; ?>
<?php endforeach; ?>
<?php endforeach; ?>
提前致謝
這可以修復先前的錯誤並消除重復。 $ current_char需要在foreach循環之外,並刪除了第二個foreach。
<?php $current_char = '';?>
<?php foreach ($signs as $sign):?>
<?php
if ($sign['first_char'] != $current_char){
$current_char = $sign['first_char'];
echo '<ul data-role="listview" data-dividertheme="b" style="margin-top: 0;padding-top: 3px;"><li data-role="list-divider">'.$current_char.'</li></ul><br>';
}
?>
上面用於SQL的查詢是這樣的:
SELECT
user.username,
groups.group_id, groups.group_name,
sign.last_connected, sign.sign_id, sign.sign_name, sign.resolution_x, sign.resolution_y, LEFT(sign.sign_name, 1) AS first_char
FROM
user
LEFT JOIN(
groups, sign
)ON(
user.user_id = groups.userID AND
groups.group_id = sign.groupID
)
WHERE
username = ? AND
UPPER(sign.sign_name) BETWEEN "A" AND "Z"
OR sign.sign_name BETWEEN "0" AND "9" ORDER BY sign.sign_name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.