Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (8) 1 [2] 3 4 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Данные за каждый месяц, как лучше реализовать?
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




$totalValue = array_fill(1, 12, 0);
while($resultTotal = mysql_fetch_array($total))
{
$totalValue[$resultTotal['month']] = $resultTotal['number'];
}


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (Invis1ble @ 25.12.2014 - 12:44)
не хватает оперативки на обработку большой выборки, приходится в цикле извращаться с лимитом и оффсетом

Не понял. Ты имеешь ввиду, что Мускуль может выбрать данные, а вот передать их в ПХП уже не в состоянии?


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Okulo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 177
Пользователь №: 29636
На форуме: 5 лет, 2 месяца, 23 дня
Карма:




Цитата (Valick @ 25.12.2014 - 09:33)
$totalValue = array_fill(1, 12, 0);
while($resultTotal = mysql_fetch_array($total))
{
$totalValue[$resultTotal['month']] = $resultTotal['number'];
}

так пустой месяц отобразился, но исчез январь ..
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11788
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 15 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 16 дней


Valick
Это не выдуманный пример, последний раз месяц назад примерно столкнулся. Оперативки не хватает на уровне php.
Есть таблица с ~1kk записей. Нужно обработать каждую запись в скрипте согласно нетривиальной логики.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11788
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 15 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 16 дней


sergeiss
на этапе PDOStatement::fetchAll, емнип.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Цитата
Нужно обработать каждую запись в скрипте согласно нетривиальной логики.

с этого и надо было начинать, с того что не хватает ума решить задачу на уровне SQL
по хорошему за таким "решением" должны последовать увольнения biggrin.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Цитата
так пустой месяц отобразился, но исчез январь ..

не может быть smile.gif
покажите как выводите массив smile.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11788
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 15 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 16 дней


Цитата (Valick @ 25.12.2014 - 12:52)
Цитата
Нужно обработать каждую запись в скрипте согласно нетривиальной логики.

с этого и надо было начинать, с того что не хватает ума решить задачу на уровне SQL

ну давай, расскажи мне, как на уровне СУБД сделать CURL-запросы по каждой записи
user posted image


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11788
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 15 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 16 дней


А пока ты будешь придумывать, я запилю скрипт с циклом и сделаю 10 запросов вместо одного.


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Invis1ble, может всё таки стоит выбирать кому мозг клепать? smile.gif
из БД в РНР достаётся циклом по одной строке, делай CURL сколько влезет
другое дело если у тебя результат работы CURL запросов некуда девать, то тут уж я точно не виноват, как собственно и БД
Цитата
А пока ты будешь придумывать

мне не надо ничего придумывать, придумал ты сам, а теперь как уж на сковородке smile.gif
я за язык никого не тяну wink.gif


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
sergeiss  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Сидел он, дум великих полон - и вдаль глядел
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 14978
Пользователь №: 4190
На форуме: 8 лет, 10 месяцев, 3 дня
Карма: 444




Цитата (Valick @ 25.12.2014 - 13:54)
не может быть
покажите как выводите массив

Вангую, что у него январь имеет индекс 0 smile.gif Или что-то близкое к оному.

Цитата (Invis1ble @ 25.12.2014 - 13:51)
sergeiss
на этапе PDOStatement::fetchAll, емнип

Цитата (Invis1ble @ 25.12.2014 - 12:44)
не хватает оперативки на обработку большой выборки, приходится в цикле извращаться с лимитом и оффсетом

"Ахренеть, дайте два!" (с) wink.gif

В итоге получается так, что ты каждый раз делаешь полную выборку данных в БД, но из нее только часть, отсеянную лимитом и оффсетом, передаешь в ПХП? И всё это в цикле??? Ну так и нахрена так нагружать БД?
Тут как минимум 2 вариант можно предложить.
1. Выборку сливать в файл, к которому уже обращаться из ПХП.
Если это невозможно в силу каких-то причин, то тогда п.2:
2. Слить выборку во временную таблицу. Из нее уже выбирать в цикле. Но без оффсетов!!! Только с лимитом и началом выборки по условию в WHERE - мы же знаем, какая последняя запись была в предыдущей выборке (да, надо будет не забыть создать индекс для временной таблицы). И выборка будет простейшая, на уровне "SELECT * FROM ...", что также ускорит процесс.
Пусть здесь и в цикле будет запрос, но каждый запрос будет намного "легче".

Цитата (Valick @ 25.12.2014 - 14:07)
из БД в РНР достаётся циклом по одной строке, делай CURL сколько влезет

У меня есть подозрение, что его "PDO.... fetchAll" хочет сначала вытащить всё в ПХП, а потом только работать с данными.

Это сообщение отредактировал sergeiss - 25.12.2014 - 14:13


--------------------
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
PMICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Okulo  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Местный житель
****

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 177
Пользователь №: 29636
На форуме: 5 лет, 2 месяца, 23 дня
Карма:




Цитата (Valick @ 25.12.2014 - 09:54)
Цитата
так пустой месяц отобразился, но исчез январь ..

не может быть :)
покажите как выводите массив :)

к сожалению не знаю как показать вам вывод
данный код я использую для рисования графика

$sqlTotal = "SELECT t.`month` `month`, COUNT(t.`month`) `number`
FROM (SELECT MONTH(`date_reg`) `month`
FROM `guest_card`
WHERE YEAR(`date_reg`) = YEAR(NOW())) t
GROUP BY t.`month`"
;
$total = mysql_query($sqlTotal);


$totalValue = array_fill(1, 12, 0);
while($resultTotal = mysql_fetch_array($total))
{
$totalValue[$resultTotal['month']] = $resultTotal['number'];
}

$datay=$totalValue;

там где нет данных отображается 0. но почему то массив начинается со второго месяца
(могу картинку показать)

PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




сделайте вот так
$totalValue = array_fill(1, 12, 0);
while($resultTotal = mysql_fetch_array($total))
{
$totalValue[$resultTotal['month']] = $resultTotal['number'];
}
print_r($totalValue);


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Invis1ble  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 11788
Пользователь №: 23195
На форуме: 6 лет, 4 месяца, 15 дней
Карма: 429

Трезвый :
7 лет, 3 месяца, 16 дней


Valick
всё понятно, слив защитан
Свернутый текст
user posted image


sergeiss
Цитата
Слить выборку во временную таблицу.

честно говоря, не понял, зачем?

Цитата
И выборка будет простейшая, на уровне "SELECT * FROM ...", что также ускорит процесс.

она у меня и так простейшая, SELECT * FROM `table_name`


--------------------
PMПисьмо на e-mail пользователюСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Valick  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 5497
Пользователь №: 35718
На форуме: 4 года, 20 дней
Карма: 167




Invis1ble, какой слив? ты только что на весь форум признался в говнокодерстве, так и не доказав несостоятельность SQL обойтись без циклов.


--------------------
wmr - R281553014107
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (8) 1 [2] 3 4 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса