Как создать список по алфавиту

#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 для создания в соответствии с вашими требованиями