@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 начисление происходит
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 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); Все сразу станет понятно, какие переменные и как получаются. Вам уже указали варианты, можете воспользоваться ими или соорудить свой костыль.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы