Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problema con logica raggruppamento alfabeto

    ciao!

    ho un piccolo problemino di logica, probabilmente banale, ma non ne esco fuori.
    allora, ho una query che mi tira fuori i recordi in ordine alfabetico.
    io vorrei impaginarli in questo modo:
    codice:
    A         B
    ------   ------
    A1       B1 
    A2       B2
    A3       B3
    ecc
    ma sinceramente non riesco.

    o meglio, usando una sotto query riuscirei, ma se possibile eviterei.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    Ciao, questa è la prima soluzione che mi viene in mente:
    Codice PHP:
    $array = [];
    foreach(
    $risultatoQuery as $r) { //$risultatoQuery = array con tutti i risultati ordinati alfabeticamente
        
    $key strtolower(substr($r01));
        
    $array[$key][] = $r;
    }
    return 
    $array
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  3. #3
    ciao!

    partendo dal tuo spunto sono riuscito a risolvere:
    Codice PHP:
    <?php
    $alphas 
    range('A''Z');
    $array = [];
    foreach (
    $objsBrands as $r) {
        
    $key substr($r['brand_nome'], 01);
        
    $array[$key][] = $r['brand_nome'];
    }
    ?>
    <div class="row">
        <div class="col-sm-12">
            <div class="row">
                <?php
                
    foreach ($alphas as $a):
                    foreach (
    $array as $key => $val):
                        if (
    $key == $a):
                            
    ?>
                            <div class="col-sm-2">
                                <h4 class="page-header">
                                    <?php echo $a?>
                                </h4>
                                <ul>
                                    <?php foreach ($val as $v): ?>
                                        <li><?php echo $v '<br>'?></li>
                                    <?php endforeach; ?>
                                </ul>
                            </div>
                            <?php
                        
    endif;
                    endforeach;
                endforeach;
                
    ?>
            </div>
        </div>
    </div>
    mi sembra funzionare correttamente!
    grazie per l'aiuto!

  4. #4
    Utente di HTML.it
    Registrato dal
    Apr 2012
    residenza
    Lima, Perù
    Messaggi
    212
    se non ci sono parole che inizino con una certa lettera, ad esempio X, questa lettera deve mostrarsi tra etichette h4?
    tutti gli elementi iniziano (o sono) in maiuscola?

    Codice PHP:
    $array = [];
    foreach (
    $objsBrands as $r) {
        
    // * se non sei sicuro che tutti gli elementi inizino (o siano) in maiuscola, devi fare strtoupper quando ottieni $key
        
    $key substr($r['brand_nome'], 01);
        
    // php 5.5 in avanti
        // $key = $r['brand_nome'][0];
        
    $array[$key][] = $r['brand_nome'];

    Se devi mostrare solo le iniziali delle parole ottenute dalla query
    Codice PHP:
    <div class="row">
        <div class="col-sm-12">
            <div class="row">
                <?php foreach ($array as $key => $val) { ?>
                    <div class="col-sm-2">
                        <h4 class="page-header">
                            <?= $key?>
                        </h4>
                        <ul>
                            <?php foreach ($val as $v) {?>
                                <li><?= $v ?><br></li>
                            <?php ?>
                        </ul>
                    </div>
                } ?>
            </div>
        </div>
    </div>
    se devi mostrare tutte le lettere del alfabeto
    Codice PHP:
    <div class="row">
        <div class="col-sm-12">
            <div class="row">
                <?php foreach (range('A''Z') as $key) { ?>
                    <div class="col-sm-2">
                        <h4 class="page-header">
                            <?= $key?>
                        </h4>
                        <?php if (isset($array[$key])) { ?>
                            <ul>
                                <?php foreach ($array[$key] as $v) {?>
                                    <li><?= $v ?><br></li>
                                <?php ?>
                            </ul>
                        <?php ?>
                    </div>
                } ?>
            </div>
        </div>
    </div>
    Jamie Ynonan - Web Developer / Desarrollador Web - HTML5 - CSS3 - Javascript/jQuery - PHP/CodeIgniter/Laravel - SQL/MySQL - Wordpress
    Telelavoro / Teleworking - jamiea31[at]gmail.com - Lima - Perù - GMT -5

  5. #5
    ciao!

    si tutte le parole iniziano con la maiuscola, sono i nomi dei brands disponibili.
    e non devo mostrare le lettere se non ci sono record che iniziano con quella lettera.
    quindi alla fine non devo mostrare tutto l'alfabeto per forza.

    appena riesco provo la tua soluzione e ti dico.
    intanto grazie!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.