Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 120

Три строчки кода (с использованием ajax), а счётчик неправильно работает

02.04.2015, 02:31. Показов 770. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Имеется страница mypaints в личном кабинете юзера. На этой странице висит javascript, который аяксом каждые 1,5 сек дёргает файл mypaints_process. На страничке mypaints_process работает функция count_paint(), которая в базе данных MySQL подсчитывает число добавленных юзером в избранное рисунков, при этом старое значение счётчика записывается в переменную сессии и если счётчики различны, обновляем страницу.
Проблема какая-то странная. Я как юзер добавляю пару изображений, вручную проверяю страницу mypaints_process, а оба счётчика равны (равны старшему, то есть новому значению), хотя ведь должны отличаться. При этом в JSON нужный флаг записан не был, а отладочный алерт на яваскрипте также не выводился.
Вроде полторы строки кода, но я уже всю голову сломал, второй день мучаюсь.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?PHP
function count_paint(){
//здесь подсчитываем количество добавленных юзером рисунков и записываем результат в переменную $accum. Далее будем сравнивать эти две переменные - $accum и $_SESSION['accum'], чтобы отслеживать новые добавленные юзером рисунки
//Данная функция была проверена, работает она хорошо без ошибок, в том числе и в других скриптах, так что проблема не в ней
}
count_paint();//вызываем её, подсчитывая таким образом значение $accum
 
if (!isset($_SESSION['accum'])) $_SESSION['accum']=0;//если это новая сессия и счётчик-сессия не инициализирован, то инициализируем его нулём
 
if ($_SESSION['accum'] < $accum){//если изменилось (увеличилось) количество выбранных в этой сессии рисунков, которые выбрал пользователь, то
    $flag_paints_refresh='ref';//записываем для json флаг, сообщающий о необходимости перезагрузить страницу. 
    echo ("<script type='text/javascript'>window.alert('OK')</script>");//ну или хотя бы просто сообщить что всё работает. НО ЭТОТ БЛОК IF НИКОГДА ВООБЩЕ НЕ ВЫПОЛНЯЕТСЯ, ПОТОМУ ЧТО $_SESSION['accum'] И $accum ВСЕГДА РАВНЫ. КОГДА Я ДОБАВЛЯЮ КАК ЮЗЕР НОВЫЙ РИСУНОК В КОЛЛЕКЦИЮ, $accum ДОЛЖЕН СТАТЬ БОЛЬШЕ ЧЕМ $_SESSION['accum'], НО ОНИ ВСЕГДА РАВНЫ. ПОЧЕМУ?
 
}
?>
Добавлено через 6 минут
Да, кстати, в блоке IF я опустил строку $_SESSION['accum']=$accum; для простоты кода
Дело не в ней, я и так и эдак пробовал отлаживать. и с ней тоже и без неё. Не срабатывает даже один раз!
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.04.2015, 02:31
Ответы с готовыми решениями:

Неправильно работает post запрос Ajax к php
JS-функция делает post запрос к файлу process.php который проверяет наличие пользователя в БД. Если пользователей не найдено возвращает...

Неправильно работает перевод кода с С на C#
Есть программа на C. Мне требуется ее переписать на C#. Программа распараллеливает вычисления на потоки с указанием уровня загрузки...

ajax не работает с использованием jquery
Решил прикрутить jquery для работы с ajax. На чистом js с ajax никаких проблем не возникало.. И вот простейший код: index.php:&lt;script...

7
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
02.04.2015, 07:10
А где формируется переменная $accum?
0
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 120
24.12.2015, 02:05  [ТС]
Вспомнил эту свою тему. А беда была в том, что обычная переменная и переменная сессии с одинаковыми именами в РНР будут ссылаться на одну и ту же область памяти, то есть по сути это ОДНА И ТА ЖЕ переменная.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
24.12.2015, 02:18
Цитата Сообщение от Никита-2012 Посмотреть сообщение
переменная сессии с одинаковыми именами в РНР будут ссылаться на одну и ту же область памяти, то есть по сути это ОДНА И ТА ЖЕ переменная
наверное только в вашем коде забыли добавить
0
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 120
24.12.2015, 02:28  [ТС]
[quote="Никита-2012;7421670"]if ($_SESS
Цитата Сообщение от Poznakomlus Посмотреть сообщение
наверное только в вашем коде забыли добавить
Что я забыл добавить? Вот эта строчка кода:
PHP
1
if ($_SESSION['accum'] < $accum)
Это не две переменные а одна и та же.
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
24.12.2015, 03:23
разные переменные еще раз повторяю.
то, что они равны 0 и NULL, то это у вас так
переменная $accum не объявлена и по умолчанию равна NULL
Массив $_SESSION не имеет элемента с индексом accum, $_SESSION['accum'] равна NULL по умолчанию вы присвоили ей 0
выше написали же
Цитата Сообщение от Para bellum Посмотреть сообщение
А где формируется переменная $accum?
вы же сравниваете if (0 < NULL)
0
0 / 0 / 0
Регистрация: 14.12.2011
Сообщений: 120
26.12.2015, 18:20  [ТС]
Цитата Сообщение от Poznakomlus Посмотреть сообщение
разные переменные еще раз повторяю.
Да нет же, одна и та же переменная. Вы забейте в код эту ситуацию и сами посмотрите.
У меня получалось не
if 0 < NULL

а с каждым изменением значения счётчика например так
if 5 < 5

или так

if 11 < 11
0
Эксперт PHP
 Аватар для Fedor Vlasenko
936 / 693 / 236
Регистрация: 01.02.2015
Сообщений: 1,848
26.12.2015, 18:29
Никита-2012, повторяю 3 раз
Цитата Сообщение от Para bellum Посмотреть сообщение
А где формируется переменная $accum?
Цитата Сообщение от Poznakomlus Посмотреть сообщение
выше написали же
Цитата Сообщение от Para bellum Посмотреть сообщение
А где формируется переменная $accum?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.12.2015, 18:29
Помогаю со студенческими работами здесь

Не работает часть кода, элементом ajax
Не работает функция send() &lt;script type=&quot;text/javascript&quot; src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt; &lt;script...

Заданы матрицы А, В, С, D, каждая из которых содержит по три строчки и по три столбца. Перемножить матрицы Р и Q
Заданы матрицы А, В, С, D, каждая из которых содержит по три строчки и по три столбца. Перемножить матрицы Р и Q, полученные в результате...

Строка: Если убрать запятые из кода в Names, код работает неправильно. Подскажите, пожалуйста, как исправить?
Куратор говорит убрать запятые из кода в Names, когда убираю получается не правильно, подскажите пожалуйста как исправить: ...

Объяснить три строчки в программе
temp \ 3600 (temp Mod 3600) \ 60 temp Mod 3600 Mod 60 Секундомер, temp как я понял вводим время, а дальше, как оно делиться, кто...

Перевести в C++ программу на три строчки
Парни, помогите пожалуйста! Очень срочно! В С++ плохо шарю.... И кому не жаль, у кого есть установленный c++ заскринте результат программы....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru