seregali
@seregali

Операторы инкремента php и база mysql — как записать значение увеличенное на 1?

$num = $product->views;

$product->views = $num+1;

$product->save();


$product->views; - берем значение из базы. С количеством просмотров.
В $product->views лежит значение просмотров. (например 1).

Что происходит по логике.
При открытие страницы увеличиваем текущие значение на 1 и получаем 2.

НО по факту, в базу записывается значение увеличенное на 2 т.е. 3.

Читал, искал, смотрел - решить проблему не смог.

--- Добавил

$alias = getParam($_REQUEST, "alias");
$categoryAlias = getParam($_REQUEST, "cat");

$category = new category(null, $categoryAlias);
$product = new item(null, $alias);

$product->getImages();
$product->views = $product->views+1;

$product->save();


Это начало файла. Параметры приходят по url.

Строка из htaccess
RewriteRule ^(rings|earrings|bracelets|necklace|brooches|chains|sets)/([^/]*)$ index.php?route=item/show&cat=$1&alias=$2 [L]
  • Вопрос задан
  • 461 просмотр
Решения вопроса 1
@acspro
Был такой печально известны случай с mod_rewrite
решалось добавлением условия перед правилом
RewriteCond %{REQUEST_FILENAME} !^favicon\.ico
Пишите в файл в вызов той процедуре и посмотрите - сколько раз она вызывается и разовой загрузке скрипта. Если 2 то проблема естественно в .htaccess если нет то что то где-то внутри
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
kawabanga
@kawabanga
А причем тут increment?

Смотрите в дополнительные функции вашей модели, может там прописано при сохранении добавлять +1.
Ответ написан
FanatPHP
@FanatPHP
Чебуратор тега РНР
если не кривая логика, то виноват кривой ЧПУ.
Код должен обрабатывать только свой запрос, а не все подряд
Ответ написан
Комментировать
zenaku
@zenaku
Вы уже где-то добавляете +1 к просмотрам. Смотрите внимательнее. Лучше покажите ваш код
Ответ написан
@skynetdev
А может ты процедуру эту вызываешь два раза, не?
Ты наверно не понимаешь где ты еще еще раз вызываешь
Ищи ищи проблему :) кроме тебя ее никто не найдет
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы