Помогите, пожалуйста с запросом в БД (MySQL)

Isherath

Новичок
Всем привет.

Есть две таблицы.
На рисунке все показано.

Нужно в цикле вывести на одной странице Все логины и рядом все картинки соответствующие user_id

То есть:

логин 1 - картинка 1, картинка 2, картинка 3
логин 2 - картинка 4, картинка 5
и т.д..

Какие бы я запросы не писал, как бы не изощрялся - выводится либо несколько одинаковых логинов, зато все картинки как надо, либо только уникальные логины, но по одной ратинке. Например:

логин 1 - картинка 1
логин 2 - картинка 4

или:

логин 1 - картинка 1
логин 1 - картинка 2
логин 1 - картинка 3
логин 2 - картинка 4
логин 3 - картинка 5

Бьюсь уже второй день. Доселе все методом тыка решал, а эту задачу ни в какую вообще...

Помогите, пожалуйста.

Это как в идеале должно быть

1.png
 

Andkorol

Новичок
... выводится либо несколько одинаковых логинов, зато все картинки как надо
А кто ж заставляет выводить одинаковые логины? :)
При отображении результатов на странице выводи только уникальные логины, без повторов.
Или сгруппируй результаты запроса по user_id средствами PHP в удобный для отображения формат.
 

Isherath

Новичок
А кто ж заставляет выводить одинаковые логины? :)
При отображении результатов на странице выводи только уникальные логины, без повторов.
Или сгруппируй результаты запроса по user_id средствами PHP в удобный для отображения формат.
Дело в том, что как бы вы не группировали (особенно по user_id), результата нужного не будет. Если так сгруппировать, то логины правда будут уникальные и не повторяющиеся столько раз, сколько и картинок. Но есть прикол - картинки тоже по одной будут отображаться, а не сразу несколько для конкретного юзера.
 

Andkorol

Новичок
Дело в том, что как бы вы не группировали (особенно по user_id), результата нужного не будет. Если так сгруппировать, то логины правда будут уникальные и не повторяющиеся столько раз, сколько и картинок. Но есть прикол - картинки тоже по одной будут отображаться, а не сразу несколько для конкретного юзера.
А если внимательно мой ответ прочитать?
Группировать НЕ в запросе – а уже сами результаты запроса, средствами PHP.
Делается элементарно, при помощи цикла.
Результат получается ровно тот, который нужен.
 

Isherath

Новичок
А если внимательно мой ответ прочитать?
Группировать НЕ в запросе – а уже сами результаты запроса, средствами PHP.
Делается элементарно, при помощи цикла.
Результат получается ровно тот, который нужен.
К сожалению я не знаю как это делать, ни разу с таким не сталкивался, работа стоит второй день...Если у вас есть решение этой проблемы - напишите, пожалуйста, код.
 

Andkorol

Новичок
PHP:
$grouped_array = array();
foreach ($query_results as $row) {
    $grouped_array[$row['user_id']]['login'] = $row['login'];
    $grouped_array[$row['user_id']]['images'][] = $row['image'];
}
var_dump($grouped_array);
Результат:
PHP:
array (size=3)
  1 =>
    array (size=2)
      'login' => string 'login1' (length=6)
      'images' =>
        array (size=3)
          0 => string 'image1' (length=6)
          1 => string 'image2' (length=6)
          2 => string 'image3' (length=6)
  2 =>
    array (size=2)
      'login' => string 'login2' (length=6)
      'images' =>
        array (size=2)
          0 => string 'image4' (length=6)
          1 => string 'image5' (length=6)
  3 =>
    array (size=2)
      'login' => string 'login3' (length=6)
      'images' =>
        array (size=1)
          0 => string 'image6' (length=6)
 

Isherath

Новичок
PHP:
$grouped_array = array();
foreach ($query_results as $row) {
    $grouped_array[$row['user_id']]['login'] = $row['login'];
    $grouped_array[$row['user_id']]['images'][] = $row['image'];
}
var_dump($grouped_array);
Результат:
PHP:
array (size=3)
  1 =>
    array (size=2)
      'login' => string 'login1' (length=6)
      'images' =>
        array (size=3)
          0 => string 'image1' (length=6)
          1 => string 'image2' (length=6)
          2 => string 'image3' (length=6)
  2 =>
    array (size=2)
      'login' => string 'login2' (length=6)
      'images' =>
        array (size=2)
          0 => string 'image4' (length=6)
          1 => string 'image5' (length=6)
  3 =>
    array (size=2)
      'login' => string 'login3' (length=6)
      'images' =>
        array (size=1)
          0 => string 'image6' (length=6)
Благодарю, буду разбираться!
 

Isherath

Новичок
PHP:
$grouped_array = array();
foreach ($query_results as $row) {
    $grouped_array[$row['user_id']]['login'] = $row['login'];
    $grouped_array[$row['user_id']]['images'][] = $row['image'];
}
var_dump($grouped_array);
Результат:
PHP:
array (size=3)
  1 =>
    array (size=2)
      'login' => string 'login1' (length=6)
      'images' =>
        array (size=3)
          0 => string 'image1' (length=6)
          1 => string 'image2' (length=6)
          2 => string 'image3' (length=6)
  2 =>
    array (size=2)
      'login' => string 'login2' (length=6)
      'images' =>
        array (size=2)
          0 => string 'image4' (length=6)
          1 => string 'image5' (length=6)
  3 =>
    array (size=2)
      'login' => string 'login3' (length=6)
      'images' =>
        array (size=1)
          0 => string 'image6' (length=6)
Нет, к сожаленияю, не работает у меня почему-то. Я использовал цикл WHILE для записи в массив инфы, но все равно, записываются исключительно только одна фото для каждого юзера..Тогда это была первая фотка, теперь же записывается тольо последняя. Видимо, есть смысл на это просто забить и обойти стороной и не выводить так как я хотел изначально. А просто сделать так, чтобы фотки все только на КОНКТРЕТНОЙ странице юзера были все. Иначе с ума сойду.
 

Andkorol

Новичок
Нет, к сожаленияю, не работает у меня почему-то. Я использовал цикл WHILE для записи в массив инфы, но все равно, записываются исключительно только одна фото для каждого юзера.
Может, пора уже свой код показать?
А то на пальцах всё, «я пробовал ...», «я использовал ...» – и не работает почему-то.
 

Isherath

Новичок
Может, пора уже свой код показать?
А то на пальцах всё, «я пробовал ...», «я использовал ...» – и не работает почему-то.
Вопрос снят. Насчет кода, я использовал просто тот, которые написали вы. Только не форич, а вайл. Форичем я вывожу инфу упакованную в массив из базы, как показали вы. Большое спасибо за помощь =)
 
Сверху