Помогите php+mysql

12
vlad00777
На сайте с 24.12.2009
Offline
119
772

Добрый вечер.

Помогите кто-то с небольшой частью скрипта. Что-то никак не получается реализовать задуманное.

Есть таблица в бд выглядит так:

Задача: Нужно выбирать из базы по полю idnews n количество записей.

Пробовал делать так:

$result3 = mysql_query("SELECT * FROM stat WHERE idnews='".$row['idnews']."' LIMIT ".$prosh);
while($myrow2 = mysql_fetch_array($result3)) { $summviews = $myrow2['views'] + $summviews; $effect = $summviews/$prosh; echo "<td>".$effect." посещ./день</td>";}

$prosh задается ранее и принимает разные численные значения.

При такой реализации получается что все данные с поля views суммируются независимо от id.

Нужно что-то типа: Если idnews изменилось, тогда обнулять переменную summviews.

Как такое реализовать не могу уже 2 дня вдуплить.

Спасибо всем не безразличным! :)

Верстка. Качественно! Адаптивная, резиновая, с параллаксом и прочими плюшками. В ЛС.
LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

ну можно массив свой собрать:

$var[$myrow2['id']]['views']=$var[$myrow2['id']]['views']+$myrow2['views'];

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
vlad00777
На сайте с 24.12.2009
Offline
119
#2
LEOnidUKG:
ну можно массив свой собрать:

$var[$myrow2['id']]['views']=$var[$myrow2['id']]['views']+$myrow2['views'];

Спасибо! Можно и так попробовать сделать.

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#3

У Вас в запрос подставляется что-то из другого запроса. Дайте код целиком, так будет проще, во всяком случае мне:)

Подпись))
[Удален]
#4

учебник почитайте)

Милованов Ю.С
На сайте с 24.01.2008
Offline
196
#5

Вообще я в таких случаях делаю так:

$arr[] = $row['idnews']; // создает массив с ячейкой на 1 большей чем максимальное в текущем массиве

И каждый раз чекаю последнюю ячейку массива на совпадение с текущим значением, ну и дальше уже делаю что надо по ИФу

RO
На сайте с 13.07.2009
Offline
88
#6

может я что-то не так понял, но разве это нельзя сделать средствами самого mysql без циклов на php?

select (sum(views)/3) effect from tbl where idnews=1 limit 3

vlad00777
На сайте с 24.12.2009
Offline
119
#7
RedOK:
может я что-то не так понял, но разве это нельзя сделать средствами самого mysql без циклов на php?

select (sum(views)/3) effect from tbl where idnews=1 limit 3

Ура! То что надо! 🍾

Спасибо большое! Не знал что можно суммировать прямо в запросе.

Все работает теперь как надо.

RO
На сайте с 13.07.2009
Offline
88
#8

честно говоря, не ожидал такого совета от LEOnidUKG, думал он шарит.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#9
RedOK:
честно говоря, не ожидал такого совета от LEOnidUKG, думал он шарит.

Не имею привычки нагружать БД никакими вычислениями. БД для хранения данных, а не для подсчётов и т.п.. 🍿

RO
На сайте с 13.07.2009
Offline
88
#10
LEOnidUKG:
Не имею привычки нагружать БД никакими вычислениями. БД для хранения данных, а не для подсчётов и т.п.. 🍿

то есть предпочтительнее юзать

echo mysql_num_rows(mysql_query('select * from tbl')); // или суммировать в цикле

нежели

echo mysql_result(mysql_query('select count(*) from tbl'),0);
?

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

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий