Dram

Рейтинг
1114
Регистрация
28.06.2008

Я кажется понял - дело в условии

if($_POST['answervote'] == $answer->id)

оно может провериться только на этой странице и только в момент ее загрузки!!!

Убрал сравнение в условии, оставил только проверку на наличие переменной, все равно работает как и раньше, только если в акцион указана ссылка с кнопкой, сейчас то что не так?

if(isset($_POST['answervote'])) {
$db->setQuery("UPDATE #__vopros SET vote =" . $upVote . " WHERE id =" . $_POST['answervote']);
$db->query();

}
?>

или

if(isset($_POST['answervote'])) {
$db->setQuery("UPDATE #__vopros SET vote =" . $upVote . " WHERE id =" . $answer->id);
$db->query();

}
?>



---------- Добавлено 27.04.2019 в 09:38 ----------

Задачу решил так -

в <form action="<?php echo $_SERVER['REQUEST_URI']; ?>" method="post">

а в условие где запрос добавил

header('Location: и нужный мне урл. Теперь все работает как нужно!

Еще раз - кнопка стоит на странице "Вопрос-ответ".

1. Если у кнопки <form action="/<?php echo $answer->section_alias; ?>/<?php echo $answer->category_alias; ?>/<?php echo $answer->item_alias; ?>" method="post">

(пробовал урл не относительный - без толку) - то запрос не проходит.

2. На этой же странице (их много, не важно какая) "Вопрос-ответ" берем адрес страницы их адресной строки браузера, копируем в кнопку, получаем

<form action="" method="post">

запрос проходит!

timo-71, ничего не понял. :))

У меня сейчас при нажатии на кнопку юзер уходит на страничку специалиста на моем же сайте - урл корректный. Но при этом не запрос в базу не срабатывает.

Но, повторюсь, если урл специалиста сменить на урл страницы на которых расположена кнопка - то при нажатии страница перезагружается и запрос отработает.

Вот я и не понимаю почему.

Начал мучать код дальше и опять проблемка

<form action="/<?php echo $answer->section_alias; ?>/<?php echo $answer->category_alias; ?>/<?php echo $answer->item_alias; ?>" method="post">
<button type="submit" name="answervote" value="<?php echo $answer->id; ?>">сказать спасибо</button>
<input type="hidden" name="answervote" value="<?php echo $answer->id; ?>">
</form>
</span>
<?php
//обновляем на +1 голосовалку ответа при нажатии на кнопку "спасибо"
$upVote = ++$totalvote;
if($_POST['answervote'] == $answer->id) {
$db->setQuery("UPDATE #__тут запрос);
$db->query();

}
?>

В общем при нажатии на спасибо юзера отправляет на страницу специалиста - и запрос НЕ отрабатывает!

НО!!! если изменить в <form action="/ на ссылку страницы на которой нажимается кнопка, то при нажатии на кнопку, она перезагружается и запрос отрабатывает как задумалось и увеличивает нужный счетчик.

Где моя ошибка?

timo-71, header не было у меня, видать по этому

Как Леня и говорил - тебе нужен <input type="hidden"!!!

Спасибо!!! Все получилось

Почему код перестает работать если юзера отправлять не на ту же страницу где происходит нажатие кнопки?

<?php
$value = 13;
$url = '/uploads';
if (isset($_POST['click_vote'])) {
setcookie('Vote', $value, 0, '/');
header ("Location: $url");
exit;
}
?>
<form action="/uploads" method="post">
<button type="submit" name="click_vote">кнопка</button>
</form>



---------- Добавлено 26.04.2019 в 10:32 ----------

Все разобрался, вот так работает

<?php
$value = 13;
$url = '/uploads';
if (isset($_POST['click_vote'])) {
setcookie('Vote', $value, 0, '/');
header ("Location: $url");
exit;
}
?>
<form action="/" method="post">
<button type="submit" name="click_vote">кнопка</button>
</form>

А в хедер можно засунуть переменную?

Типа такого

$url = '/uploads';
header ("Location: $url");

SERM-service, спасибо, неужели все дело в расположении кода было? Ваш вариант сработал!

PHP-Storm пишет что файл в UTF-8

Вот весь код


<form action="/" method="post">
<button type="submit" name="click_vote">кнопка</button>
</form>

<?php
$value = 13;
if (isset($_POST['click_vote'])) {
setcookie('Vote', $value, 0, '/');
header("Location: http://localhost");
exit;
}
?>
Всего: 6924