Вывести таблицу двойным циклом. Возможно ли это?

dimagolov

Новичок
Нет, может измениться.
(И количество пользователей тоже меняется.)
Значит надо делать агрегирующую таблицу stat:
user, cat, counter с уникальным ключом по паре полей (user, cat)
которую обновлять из триггеров к таблице table, например в after insert делать
PHP:
INSERT INTO stat (user, cat, counter) VALUES (NEW.user, NEW.cat, 1) ON DUPLICATE KEY UPDATE counter= counter + 1
Если предполагается изменение/удаление из table, то соответствующие обновления надо делать и на эти действия.

Как из такой таблицы отобрать значения и отсортировать для удобного вывода надо рассказывать?
 

zned

Новичок
Автор оригинала: *****
по одному-то юзеру просто
а как двойной делать, я забыл. ну, или вложенным, да.
Сначала ты сказал что если один пользователь - это не вложенный, а если много пользователей то это вложенный цикл.
А теперь говоришь, что по одному юзеру - это вложенный. Наверно мы не так друг друга поняли.

Кто-нибудь может просто ответить на простой вопрос:
возможно ли это сделать через вложенный цикл или это не возможно?
 

Фанат

oncle terrible
Команда форума
это как два пальца об асфальт. если понимать значение слов "вложенный цикл".
один пользователь - это один пользователь. без циклов.
если его вложить в цикл, получится много пользователей. что тут такого сложного, что ты два дня понять не можешь?
 

zned

Новичок
Автор оригинала: *****
это как два пальца об асфальт. если понимать значение слов "вложенный цикл".
один пользователь - это один пользователь. без циклов.
если его вложить в цикл, получится много пользователей. что тут такого сложного, что ты два дня понять не можешь?
Здесь меняется не только пользователи но и категории заявок, и в один цикл это не сделать,
Поэтому нужен вложенный цикл. Вложенный цикл состоит из нескольких циклов, что я и пытаюсь сделать.
Как это я представляю примерно, набросал в первом прримере. Он выводит нулевой реультат.
Соответственно и спрашиваю в принципе это воможно или я зря мучаюсь?
 

Фанат

oncle terrible
Команда форума
категории у тебя одни и те же.
-|-категория1--|-категория2--|-категория3--|-категория4--|
ничего не меняется.

юзера ты запрашиваешь со всеми его категориями одним запросом
после этого выводишь
 

prolis

Новичок
zned тогда так
1. Выбираем одним запросом из table список: user|cat|count(*), отсортированный по user,cat
2. В цикле (первый, внешний) пробегаем списку и при смене user создаем новую строку в html
2.1 Внутри внешнего цикла создаем цикл (второй, внутренний) по списку каталогов текущего (во внешнем цикле) user, где заполняется count в столбце, ответствующего cat
3. Profit?
 

Фанат

oncle terrible
Команда форума
не дофига ли оборотов в цикле будет холостых?
вложенный и то лучше будет - его хоть постранично по юзерам можно будет разбить.
 

zned

Новичок
Автор оригинала: *****
юзера ты запрашиваешь со всеми его категориями одним запросом
после этого выводишь
*****, то что ты сейчас говоришь это обычный цикл, это то как у меня сейчас работает,
но меня это не устраивает. Мне нужен вложенный цикл.
Автор оригинала: *****
категории у тебя одни и те же.
Еще раз говорю: категории могут меняться
 

Фанат

oncle terrible
Команда форума
Мне нужен вложенный цикл.
вкладываешь его в запрос к юзерам - вот тебе вложенный.
Еще раз говорю: категории могут меняться
во-первых, фитилек прикрути. задолбал капсом. купи себе программу микрософт ворд и там болдом хоть обвыделяйся.

Таблицу в первом посте кто рисовал? Я? Где там меняющиеся категории?
 

zned

Новичок
Re: Вывести таблицу двойным циклом. Возможно ли это?

Автор оригинала: *****
задолбал капсом.
Первый раз капсом написал, и то ты сразу стер.
Автор оригинала: *****
Таблицу в первом посте кто рисовал? Я? Где там меняющиеся категории?
В коментариях я объяснил что такое категории, и что они могут меняться.
Вначале про это не говорил, предположил что все и так понятно.
Автор оригинала: *****
вкладываешь его в запрос к юзерам - вот тебе вложенный.
Здесь есть ошибка или в принципе подход не верный?:
PHP:
$resultuser = mysql_query("SELECT user FROM userlist");//Подключаюсь к таблице пользователей
 $myrowuser = mysql_fetch_array($resultuser);//Массив пользователей
 do
 {//Перебор пользователей
 $user = $myrowuser[user];
 $result_cat = mysql_query("SELECT cat FROM catlist");//Подключаюсь к таблице категорий
 $myrow_cat = mysql_fetch_array($result_cat);//Массив категорий
  
 do
 {//Перебор категорий
 $cat = $myrow_cat[cat];
 $result_user_cat = mysql_query("SELECT * FROM table WHERE user='$user' cat = '$cat'");
 $num_rows_user_cat = mysql_num_rows($result_user_cat);
 }//Перебор категорий
  
 while ($myrow_cat = mysql_fetch_array($result_cat));
  
 echo "<table><tr><th>$user</th><th>$num_rows_user_cat</th><th>$num_rows_user_cat</th>
 <th>$num_rows_user_cat</th><th>$num_rows_user_cat</th></table>";
 }//Перебор пользователей
  
 while ($myrowuser = mysql_fetch_array($resultuser));
 

Фанат

oncle terrible
Команда форума
во-первых, избавься ты от идиотского
$myrowuser = mysql_fetch_array($resultuser);
do {
}//Перебор пользователей
while ($myrowuser = mysql_fetch_array($resultuser));
замени на
while ($myrowuser = mysql_fetch_array($resultuser)) {
}
во-вторых, оформи код с отступами.
отступы изобрели для того, чтобы отличать блоки, вложенные друг в друга.

в-третьих, подход у тебя тупейший. ты одни и те же данные (список категорий) получаешь сто раз. зачем? почему нельзя получить ОДИН раз, ДО основного цикла? положить в массив и потом юзать из массива?

в-четвертых, я тебе написал, как получать всю инфу по юзеру без твоих нубских num_rows
 
Сверху