Есть ли простой способ повторить запрос php mysql?

0

Я надеюсь, что там будет небольшой трюк для 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-гармонике - поэтому отображение его на одной странице не является проблемой)

Теги:

2 ответа

2
Лучший ответ

Уникальные производители

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>';
}

Опять же, если вы можете быть более ясными, возможно, лучшее решение может быть заключено.

  • 0
    Спасибо, Брэд, извини, должен был быть яснее с намеченным конечным результатом. По сути, я хочу большой список производителей, и когда вы нажимаете на одного из производителей, он расширяется, чтобы показать все доступные модели. Ваш код прекрасно отображает все модели под их производителем, но у него все еще нет проблем с пониманием иерархии кода (т. Е. Чтобы определить, куда поместить заголовок гармошки h1)
  • 0
    После того, как у меня все получилось, у меня все заработало. Большое спасибо, ты молодец!
2

Если вы хотите получить все результаты из своей базы данных с помощью 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']; 

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню