sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo puedo reescribir mi PHP y MySQL para agrupar mi lista HTML por valores de columna iguales?

Antes de crear la lista, primero debe agruparlos en consecuencia (como muestra su estructura), a partir de entonces puede crear la lista. Considere este ejemplo:

<?php

$original_data = array();
$link = new MySQLI('localhost', 'username', 'password', 'database');
// normal select
$query = mysqli_query($link, 'SELECT * FROM Sheet1 order by country, state, city');
while($row = $query->fetch_assoc()) {
    $original_data[] = $row;
}

$ordered_data = array();
foreach($original_data as $key => $value) {
    // group them
    $ordered_data[$value['country']][$value['state']][$value['city']][] = $value;
}

?>

<!-- print them accordingly -->
<?php foreach($ordered_data as $country => $state_values): ?>
    <ul>
        <li><?php echo $country; ?></li>
        <?php foreach($state_values as $state => $city_values): ?>
        <ul>
            <li><?php echo $state; ?></li>
                <ul>
                    <?php foreach($city_values as $city => $value): ?>
                        <li><?php echo $city; ?></li>
                        <ul>
                            <?php foreach($value as $index => $element): ?>
                                <li><?php echo $element['Business'] . ' | ' . $element['Phone']; ?></li>
                            <?php endforeach; ?>
                        </ul>
                    <?php endforeach; ?>
                </ul>
        </ul>
        <?php endforeach; ?></li>
    </ul>
<?php endforeach; ?>

Salida de muestra