Кнопка «Мне нравится» в PHP / MySQL - PullRequest
2 голосов
/ 13 сентября 2011

Я сделал кнопку «Мне нравится» на страницах моего продукта с этим кодом:

<?php
if('POST' == $_SERVER['REQUEST_METHOD']) {
$sql = "UPDATE table set `likes` = `likes`+1 where `product_id` = '1'";
$result=mysql_query($sql);
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
<input type = "submit" value = "like"/>
</form>

Работает как шарм, исключая одну незначительную проблему, заключающуюся в том, что при каждом посещении страницы регистрируется «Мне нравится»,

Может ли кто-нибудь помочь объяснить, что мне нужно изменить / добавить, чтобы новые «лайки» регистрировались только при отправке фактической формы?

Спасибо, Дэн

Ответы [ 4 ]

8 голосов
/ 13 сентября 2011

Лучшим решением, нежели отправка страницы и перезагрузка всей страницы, было бы сделать запрос AJAX, так работает Facebook «лайки».

Этого можно добиться с помощью библиотеки JavaScript jQuery .

Общая схема будет: -

1) Нажмите кнопку

2) Отправить запрос AJAX

3) Нажатие кнопки «Обновить HTML для отображения кнопки» и предотвращения повторного нажатия кнопки.

4 голосов
/ 13 сентября 2011
<?php
if ($_POST['like']){
   $sql = "UPDATE table set `likes` = `likes`+1 where `product_id` = '1'";
   $result=mysql_query($sql);
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
   <input type = "submit" name="like" value = "like"/>
</form>
3 голосов
/ 13 сентября 2011
<?php
if($_POST['like']) {
$sql = "UPDATE table set `likes` = `likes`+1 where `product_id` = '1'";
$result=mysql_query($sql);
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']?>" method="POST">
<input type = "submit" value = "like" name='like'/>
</form>

Это должно работать; -)

1 голос
/ 13 сентября 2011

Прежде всего - в вашем sql у вас есть:

`product_id` = '1'

не используйте значение id в виде строки:

`product_id` = 1

О вашей проблеме:

Добавить еще одно условие:

if ('POST' == $_SERVER['REQUEST_METHOD']) {
    if ( !empty($_POST['submitType']) && ( $_POST['submitType'] == 'like' ) ) {
        $sql = "UPDATE table set `likes` = `likes`+1 where `product_id` = '1'";
        $result=mysql_query($sql);
    }
}

и в html:

<input type = "submit" name="submitType" value = "like"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...