Вот мой код:
<div class="widgeter-content no-padding"> <ul id="contacts"> <?php while ($r = mysql_fetch_array($q)){ $currentletter = substr($name,0,1); if ($currentletter != $lastletter){ ?> <!-- start li data group for specific alphabetic letter --> <li data-group="<?=$currentletter;?>"> <a class="title"><?=strtoupper($currentletter);?></a> <? } ?> <ul> <li> <a href="#"> <span><?=$name;?></span> </a> </li> </ul> <? if ($currentletter != $lastletter){ ?> </li> <!-- end data group (not currently working, ends on first result) --> <? } $lastletter = $currentletter; } ?> </ul> </div>
То, что я пытаюсь сделать:
A: Alfred Annie B: Bob Billy
Как вы можете видеть, данные обернуты в группу данных li.
Первая часть кода работает отлично, но последняя часть (где я пытаюсь поместить закрытый тег li перед комментарием конца, показывает после первого результата каждого цикла, где ему нужно показать в КОНЕЦ каждой буквы Результаты).
Какой был бы лучший способ сделать это? Я уверен, что его совершенно очевидно, чего я пытаюсь достичь, но я не могу представить логического способа получить структуру кода, как я этого хочу.
спасибо
$res = array(); while ($r = mysql_fetch_array($q)){ $currentletter = substr($name,0,1); $res[$currentletter][] = $name; } foreach($res as $key=>$val){ /// here you add your li /// here $key will give you letter and $val will give you name echo $key; foreach($val as $reqvals){ echo $reqvals; echo "<br>"; } }
Какой был бы лучший способ сделать это?
Если вы извлекаете строку из базы данных, почему она не может содержать GROUP BY и получать записи. Это предпочтительный способ сделать это.
Предполагая, что имя столбца first_name
group by substr(first_name,1,1)