Я надеюсь, что там будет небольшой трюк для php, который спасет мне 100 копий > пастa > номер изменения - спасибо, что посмотрели!
У меня есть относительно большой набор данных в MySQL db.
Есть только два столбца: Модели (около 7000 уникальных записей) и Производители (около 100 уникальных, т.е. модели из 100 разных производителей)
В настоящий момент (ну, поскольку я пишу очень медленный, повторяющийся способ), у меня есть огромный список запросов к базе данных PHP в соответствии с:
$result = mysql_query ( "SELECT * FROM products WHERE manufacturer = '3M'" );
while ($ row = mysql_fetch_array ($ result)) {
echo $row ['производитель']. "". $Строки [ 'модель']; }
То, что я делаю, работает, но есть ли способ получить список всех производителей, а затем запустить php выше в списке?
Или что-то другое, о котором я не думал?
Спасибо, кучи,
(Фактический вывод выполняется в javascript-гармонике - поэтому отображение его на одной странице не является проблемой)
Уникальные производители
SELECT manufacturer
FROM products
GROUP BY manufacturer
Но я не уверен, что вы хотите получить конечный результат. Можете ли вы рассказать об этом, и я дам более краткий ответ?
РЕДАКТИРОВАТЬ. Это должно делать то, что вы ищете (или, по крайней мере, является хорошей базой для вас, чтобы играть). Это поместит производителей в качестве заголовка аккордеона, затем перечислит модели внутри.
$sql = "SELECT * FROM products ORDER BY manufacturer,product";
$lastMfg = null;
if (($result = mysql_query($sql)) !== false)
{
echo '<div id="accordion">';
while (($row = mysql_fetch_array($result)) !== false)
{
if ($row['manufacturer'] != $lastMfg)
{
if (!is_null($lastMfg))
echo '</div>';
echo '<h3><a href="#">'.$row['manufacturer'].'</a></h3>';
echo '<div>';
$lastMfg = $row['manufacturer'];
}
echo '<p>'.$row['model'].'</p>';
}
echo '</div></div>';
}
else
{
echo '<p>MySQL Error: Unable to fetch products</p>';
}
Опять же, если вы можете быть более ясными, возможно, лучшее решение может быть заключено.
Если вы хотите получить все результаты из своей базы данных с помощью 1 запроса, вы можете просто получить все без предложения where и заказа производителю, чтобы вы могли "группировать" строки в php. Я понимаю, что это вы хотите, вы все равно должны разбиваться на страницы.
$result = mysql_query("SELECT * FROM products ORDER BY manufacturer ASC;" );
$last_manufacturer = false;
while ($row = mysql_fetch_array($result)) {
if ($last_manufacturer !== $row['manufacturer']) {
//we got a different manufacturer since we ordered in alphabetical order
$last_manufacturer = $row['manufacturer'];
#... do something like put an separator between manufacturers
# in this example we put a title, you should put the accordion markup or something similar
echo "<h1> Manufacturer:", $row['manufacturer'] ,"</h1>";
}
echo $row['manufacturer'] . " " . $row['model'];
}