форматирование данных MySQL для выхода в таблицу - PullRequest
0 голосов
/ 03 мая 2010

В ответ на вопрос, который был дан сегодня ранее, этот ответ был дан для считывания данных в массив и разделения их на тип транспортного средства, а затем некоторые данные для каждого транспортного средства.

<?php
$sql = "SELECT * FROM apparatus ORDER BY vehicleType";
$getSQL = mysql_query($sql);
// transform the result set:
$data = array();
while ($row = mysql_fetch_assoc($getSQL)) {
$data[$row['vehicleType']][] = $row;    
}
?>
<?php foreach ($data as $type => $rows): ?>
<h2><?php echo $type?></h2>
<ul>
  <?php foreach ($rows as $vehicleData):?>
    <li><?php echo $vehicleData['name'];?></li>
  <?php endforeach ?>
  </ul>
<?php endforeach ?>

Это почти идеально подходит для того, что я хочу сделать, но мне нужно распечатать два столбца из базы данных, т.е. ford и mondeo, прежде чем перейти ко второму циклу foreach. Я попытался напечатать $ row ['model'] и все другие комбинации, которые я могу придумать, но это не работает. Любая помощь высоко ценится

1 Ответ

0 голосов
/ 03 мая 2010

Меня немного смущает ваш вопрос, но SELECT * в выражении SQL означает, что каждый столбец из базы данных должен присутствовать в виде пары ключ => значение в массиве $ row. Таким образом, если вам нужен еще один «столбец», выводимый здесь в элемент списка HTML <li>, вы просто выводите (а не «печатаете») это имя столбца в качестве ключа массива. Поэтому, если вам нужен тип автомобильного столбца, найденного в столбце с именем «модель», вы должны сделать это:

<?php
$sql = "SELECT * FROM apparatus ORDER BY vehicleType";
$getSQL = mysql_query($sql);
// transform the result set:
$data = array();
while ($row = mysql_fetch_assoc($getSQL)) {
$data[$row['vehicleType']][] = $row;    
}
?>
<?php foreach ($data as $type => $rows): ?>
<h2><?php echo $type?></h2>
<ul>
  <?php foreach ($rows as $vehicleData):?>
    <li><?php echo $vehicleData['name'];?></li>
    <li><?php echo $vehicleData['model'];?></li>
  <?php endforeach ?>
  </ul>
<?php endforeach ?>

РЕДАКТИРОВАТЬ : Мне все еще неясно по вашему вопросу, но если у каждой машины один и тот же тип транспортного средства, и вы просто пытаетесь получить его, прежде чем просмотреть все результаты, я думаю это сделает это:

<?php
// Set up a SQL query to grab one row
$query_to_grab_only_vehicle_type = "SELECT vehicleType FROM apparatus WHERE 1 LIMIT 0,1";
// Fetch that row and turn it into an array
$vehicle_type_array = mysql_fetch_array(mysql_query($query_to_grab_only_vehicle_type));
// Initialize a variable with the array value that came from the vehicleType column
$vehicle_type = $vehicle_type_array['vehicleType'];
// You could uncomment and use the following to echo out the variable
// echo "Vehicle type: $vehicle_type";

$sql = "SELECT * FROM apparatus ORDER BY vehicleType";
$getSQL = mysql_query($sql);
// transform the result set:
$data = array();
while ($row = mysql_fetch_assoc($getSQL)) {
$data[$row['vehicleType']][] = $row;    
}
?>
<?php foreach ($data as $type => $rows): ?>
<h2><?php echo $type?></h2>
<ul>
  <?php foreach ($rows as $vehicleData):?>
    <li><?php echo $vehicleData['name'];?></li>
    <li><?php echo $vehicleData['model'];?></li>
  <?php endforeach ?>
  </ul>
<?php endforeach ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...