2013-10-10 6 views
0

Я пытаюсь создать систему, похожую на кнопку Facebook LIKE. Я хочу разрешить пользователю понравиться картинке, но только пусть им понравится один раз. После того, как им это понравилось, они должны быть в силе, в отличие от него.Как запретить пользователю обновлять одну и ту же строку дважды +

Мой текущий код:

<?php 
$id = $_GET["picID"]; 

    include 'db.php'; 

    $colID = str_replace('_', ' ', $_GET['picID']); 
    $colID = mysql_escape_string($picID); 

    $sql = "SELECT * FROM picture WHERE id = $id"; 
    $result = mysql_query($sql) or die (mysql_error()."<br/>".sql); 
    $row = mysql_fetch_array($result); 


    $update = "UPDATE picture SET likes=likes+1 WHERE id='$id'"; 
    mysql_query($update) or die (mysql_error()."<br/>".update);  
    echo "Thank you"; 

?> 

В настоящее время я использую гиперссылку, чтобы вызвать действие «как»:

<a href='like.php?colID=$row[id]'>Like</a> 

В конце я хотел бы изменить это AJAX так пользователь может просто нажать «Нравится» (как на Facebook) без изменения страницы. Я все еще читаю, как это сделать. Есть ли конкретное имя для этой задачи? Или может кто-нибудь показать мне, что я могу это сделать?

EDIT:

Пользователь должен войти в систему, чтобы иметь возможность как картину. У меня есть две несвязанные таблицы, User и Pictures. В настоящее время пользователь может просто нажать «Мне нравится», и он добавит 1 в столбец.

+0

установить условное (если/else) заявление –

+0

Не могли бы вы уточнить? В настоящее время пользователю необходимо войти в систему, чтобы «понравиться» картинке. Их пользователь добавляется в базу данных, используя свое состояние сеанса. – DavidPottrell

+1

вам придется записывать каждого, как отдельную запись, иначе у вас не будет абсолютно никакого способа сказать, кто что-то вроде или нет. например если «нравится» - 203, как вы можете сказать, был ли пользователь X кем-то, кто внес +1 в эту сумму? –

ответ

0

Одним из методов было бы создание таблицы, содержащей столбцы для идентификаторов изображений и идентификаторов пользователей, чтобы показать, что человеку понравилась конкретная фотография. Если идентификатор пользователя указан в таблице с идентификатором изображения, вы не должны позволять им понравиться картинке, так как они уже понравились. Вы можете выполнить эту проверку с запросом к базе данных, которая вернет счет 1 или 0.

+0

, чтобы у каждой картины был свой собственный стол? Или у каждого пользователя будет своя таблица «любимых» картин (ID) –

+0

Поймал, что я делаю быстрый пост на своем телефоне. Редактирование теперь ... –

+0

Вы должны создать новую таблицу с названием «любит», и в этой таблице каждый из них будет иметь столбец «Идентификатор изображения» и «Идентификатор пользователя». Затем, когда вам нужно знать, сколько понравилось изображение, вы подсвечиваете все понравившиеся для этого идентификатора изображения в таблице подобных. – Ben

0

Сделайте строковый столбец в своей базе данных, чтобы указать, кому понравилось изображение.

Если пользователь вошел в систему (может голосовать), найдите его имя в строке, взорвав его и зациклив. Затем удалите его имя из строки или добавьте его. Обратите внимание, что вы можете также сохранить массив непосредственно к используя сериализацию базы данных:http://php.net/manual/en/function.serialize.php

Для быстрой загрузки, вы можете иметь другой столбец с графом именами первых столбцов.

Смежные вопросы