Задать вопрос
@arturka_v_10

Отправка данных по ссылке, в чем может быть проблема?

<?
$rat = protect($_GET['rat']);
if($rat=="rat1"){
	$sql=mysql_query("UPDATE farm SET rating=rating+'1' WHERE id = '$id' LIMIT 1");
}
if($rat=="rat2"){
	$sql=mysql_query("UPDATE farm SET rating=rating+'2' WHERE id = '$id' LIMIT 1");
}
else{
	$sql=mysql_query("UPDATE farm SET rating=rating+'0' WHERE id = '$id' LIMIT 1");
}
?>
<a href="/site.php/<?=$it['id']?>/rat1"><i class="icon-star-1"></i></a>
<a href="/site.php/<?=$it['id']?>/rat2"><i class="icon-star-1"></i></a>


.htaccess
RewriteRule ^site.php/(.*)?$ index.php?nav=site&id=$1 [L]
RewriteRule ^site.php/(.*)/(.*)$ index.php?nav=site&id=$1&rat=$2 [L]


В общем переход по ссылке ../site.php/6/rat1 осуществляется, но UPDATE не происходит

А при переходе по ссылке: ../index.php?nav=site&id=7&rat=rat1 начисление происходит
  • Вопрос задан
  • 156 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    Веб-разработчик на PHP
    9 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 3
@egormmm
Борітеся — поборете!
Update не происходит потому что запрос неверный.
"UPDATE farm SET rating=rating+1 WHERE id = ".$id." LIMIT 1".

Естественно переменная id должна существовать.

Вообще лучше использовать mysqli_query вместо mysql_query, потому что в последних версиях php эта функция запрещена.
Ответ написан
@IceJOKER
Web/Android developer
Сначала читайте ответ от Егор .

Потому что выполняется :
RewriteRule ^site.php/(.*)?$ index.php?nav=site&id=$1 [L]

и на этом все, у вас всегда будет выполняться последний
UPDATE(rating = rating + 0)//хотя хрен поймешь, нафига к текущему рейтингу добавлять 0 - от этого данные в базе не поменяются, но зато будет лишнее обращение к базе


Поменяйте местами RewriteRule и я вам вроде выдавал более правильный вариант, который допускает лишь цифры, а вы взяли и поменяли на допуск всех символов - зачем? ведь в ID всегда будут цифры, а в рейтинге 1 или 2 -- /rat({1,2}+)
Ответ написан
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
раз по первой ссылке происходит упдэйт - логично что не приходят значения из реврайт руле во втором случае. Натыкайте print_r($id) и print_r($rat) и добавьте print_r($_POST); Все сразу станет понятно, какие переменные и как получаются. Вам уже указали варианты, можете воспользоваться ими или соорудить свой костыль.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
IT ATLAS Москва
от 250 000 до 500 000 ₽