Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak mogę przepisać PHP i MySQL, aby pogrupować listę HTML według równych wartości kolumn?

Zanim zbudujesz listę, powinieneś najpierw odpowiednio je pogrupować (jak pokazuje twoja struktura), od tego czasu możesz budować listę. Rozważ ten przykład:

<?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; ?>

Przykładowe dane wyjściowe



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL — Zapytanie, aby sprawdzić, czy ciąg zawiera część wartości w kolumnie

  2. Oblicz dokładność zbioru danych

  3. Nie można połączyć się z „/var/run/mysqld/mysqld.sock”

  4. Przyrost wartości PDO PHP, Mysql

  5. MySQL:jak uzyskać różnicę między dwoma znacznikami czasu w kilka sekund