Интервал между отображаемым результатом запроса - PullRequest
1 голос
/ 06 июля 2011

Я новичок в php и MySQL.

На моем веб-сайте я создаю сценарий для мобильных загрузок.

У меня есть 3 таблицы, с которыми я здесь работаю.

  1. загрузок (содержит информацию о конкретной загрузке, каждая со своим идентификатором).
  2. моделей (содержит список возможных моделей устройств (названий моделей), каждая со своим идентификатором).
  3. downloads_models (таблица ссылок с указанием download_id = model_id, например (1,2) (1,3) (2,1)).

У меня есть простой запрос для отображения моделей, которые поддерживают каждую конкретную загрузку. Это выглядит следующим образом:

    $dlDetailsQuery = 'SELECT models.model
    FROM models,downloads_models
    WHERE downloads_models.modId = models.model_id
    AND downloads_models.downId = "'.$pageId.'"
    ORDER BY models.model ASC; 
    ';

Чтобы отобразить, какие модели поддерживают загрузку, введите следующую строку: echo d:

    $dpModSupport .= stripslashes($row['model']);

Теперь в качестве примера моя страница имеет $ pageId «1», который является загрузкой «example1», «example1» поддерживает модели 1 (model1), 2 (model2) и 3 (model3). Когда $dpModSupport равно echo d, оно отображается как "model1model2model3".

У меня такой вопрос: как получить интервал или запятую между результатами?

Я стремлюсь к выводу "model1, model2, model3".

Я ищу способ сделать это через php. Я не знаю, можно ли структурировать запрос, чтобы выводить интервал между результатами, поэтому я предполагаю, что php - единственное решение там.

Я не хочу добавлять интервал или запятые в поле имени модели или создавать новое поле, содержащее интервал или запятые вместе с именем модели.

Ответы [ 2 ]

1 голос
/ 06 июля 2011

Задача

Написав это в цикле:

$dpModSupport .= stripslashes($row['model']);

вы создаете строку, подобную этой:

$dpModSupport .= stripslashes(<MODEL1>);
$dpModSupport .= stripslashes(<MODEL2>);
$dpModSupport .= stripslashes(<MODEL3>);

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


Решение

Вместо этого вы могли бы написать это до цикла:

$dpModSupport = Array();

И затем, внутри него, вместо строки с .=, строящей строку, строится массив:

$dpModSupport[] = stripslashes($row['model']);

Наконец, для получения вывода, состоящего из каждого элемента указанного массива, соединенного запятой:

echo implode(', ', $dpModSupport);

Я оставлю читателю в качестве упражнения поиск этих функций и возможностей языка в руководстве по PHP.

0 голосов
/ 06 июля 2011

Сохраните имена в массиве, а затем объедините их в конце.

$dpModSupport = array();
$dpModSupport[] = stripslashes($row['model']);
echo implode(', ', $dpModSupport);
...