#php #codeigniter #foreach
#php #codeigniter — инициализатор кода #предначертание
Вопрос:
Я использую Eclipse с CodeIgniter. Я пытаюсь создать страницу поиска по алфавиту, сгруппированную по буквам алфавита, как эта, но я не могу сделать это с помощью CodeIgniter.
Модель:
public function listarLojas() {
$this->db->order_by("nome_loja", "ASC");
return $this->db->get("lojas")->result_array();
}
Контроллер:
$dados['lojas'] = $this->lojas_model->listarLojas();
Вид:
(Вот моя проблема, я не могу сделать foreach
так, чтобы ссылка отображалась как в примере: https://www.cuponomia.com.br/desconto )
https://codepen.io/anon/pen/vMjLNz
HTML:
<div class="row" >
<div class="col mt-3">
<h5 class="text-muted pb-3 fonte-helvetica">Our main stores in alphabetical order</h5>
<div class="card card-personalizada">
<h6 class="card-header crd-hr-custom border-bottom-0 text-center bg-primary text-light">
1 2 3 4 5 6 7 8 9 A B C D E F G H I J K L M N O P Q R S T U V W Y X Z
</h6>
<div class="card-body crd-bdy-custom">
<!-- column -->
<div class="row">
<div class="col-lg-1">
<span class="font30">A</span>
</div>
<div class="col-lg-11">
<div class="container">
<ul class="list-unstyled row">
<li class="list-item col-md-3"> Test </li>
</ul>
</div>
</div>
</div>
<!-- column -->
<hr>
</div>
</div>
<?php
include 'buscar_lojas.php';
?>
</div>
</div>
CSS — код:
body {
background-color: #a3d5d3;
}
Комментарии:
1. Поскольку у вас на самом деле недостаточно кода для работы, и поскольку это не сервис для написания кода, я предлагаю вам поискать в Google следующие примеры: «разметка по алфавиту codeigniter» и вернуться, когда у вас возникнет более конкретная проблема, а не широкая «можете ли вы выполнить 90%это для меня» вопрос.
Ответ №1:
Вам нужно присвоить тег привязки буквам, которые будут ссылаться на идентификатор контейнера, на который он должен указывать.
<h6 class="card-header crd-hr-custom border-bottom-0 text-center bg-primary text-light">
1 2 3 4 5 6 7 8 9 <a href="#A">A</a> B C D E F G H I J K L M N O P Q R S T U V W Y X Z
</h6>
Затем назначьте идентификатор каждому столбцу в соответствии с буквами.
<!-- column -->
<div class="row" id="A">
<div class="col-lg-1">
<span class="font30">A</span>
</div>
<div class="col-lg-11">
<div class="container">
<ul class="list-unstyled row">
<li class="list-item col-md-3"> Test </li>
</ul>
</div>
</div>
</div>
<!-- column -->
Надеюсь, это может ответить на ваш вопрос.
Ответ №2:
Попробуйте так
$lastChar = '';
foreach ($dados['lojas'] as $row){
$char2 = str_split($row->name);
$char = $char2[0];
if ($char !== $lastChar) {
if(empty($last_char)){
$skill_data .= '<li><h3>'.strtoupper($char).'</h3></li>';
}
$lastChar = $char;
}
$skill_data .= '<li>'.$row->name.'</li>';
}
Это будет выглядеть так
<li>A</li>
<li>About Home</li>
<li>Absolut Leather</li>
<li>A Esportiva</li>
...
<li>B</li>
<li>B2 Smile</li>
<li>Balaroti</li>
<li>Barceló Hotels amp; Resorts</li>
....
Предположим $row->name
, это имя категории, получаемое из массива объектов
Примечание: — Потребуется магия CSS для создания в соответствии с вашими требованиями