2013-09-03 2 views
1

Я делаю простую систему комментариев со скоростью для каждого комментария.Обновление строки SQL одним нажатием кнопки HTML и php

(Вам понравился этот комментарий?) Вопрос с двумя кнопками «Да» и «Нет».

Я пытаюсь найти простой способ, что при нажатии кнопки он обновляет в базе данных количество голосов, если указано «да» или «нет».

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

Какой должен быть тип столбца и как написать запрос на кнопку html?

ответ

2

Я хотел бы предложить вам создать две таблицы:

Comments:

  • CommentId,
  • CommentText,
  • ... другие столбцы

Votes:

  • VoteId,
  • CommentId (на котором комментарии голос)
  • UserId (как номинальный комментарий)
  • Liked (флаг 0 (нет) или 1 (Yest)).

При нажатии кнопки HTML вставьте новую строку в таблицу голосов.

Затем, чтобы получить число голосов, вы можете объединить эти две таблицы и подсчитать число из второй таблицы с GROUP BY:

SELECT 
    c.CommentId, 
    COUNT(COALESCE(v.VoteId, 0)) AS TotalVotes 
FROM Comments AS c 
LEFT JOIN votes AS v ON c.commentId = v.CommentId 
GROUP BY c.CommentId; 

Вы можете также запросить для таких = 0 или любит = 1 индивидуально, если хотите, это просто пример.

+0

Спасибо дружище, что это полезно, и это было именно то, что мне было нужно, да здравствует Rab3a ж Rabena ma3akom фи Masr, wa7ashetni: D –

0

Тип данных может быть любым, что вам нравится. CHAR, VARCHAR, TINYINT или BOOL - все варианты выбора. Лично я бы пошел с TINYINT.

Как вы говорите, это простая задача. Я уверен, что есть дискуссия о назначении действий кнопкам.

3

Вы задаете разные вопросы с некоторыми подчеркивающими последствиями здесь. Я постараюсь помочь вам разобраться.

Во-первых, база данных.

Есть несколько вещей, чтобы рассмотреть здесь:

  • У вас есть пользователи?Если вы это сделаете, вам придется создать таблицу голосования, связывающую ваших пользователей с их голосами, как это было предложено в предыдущем ответе. Вы не хотите использовать COUNT, чтобы узнать, сколько голосов есть. Это занимает много времени в большой базе данных. Просто создайте поле счетчика в таблице комментариев и увеличивайте/уменьшайте его, чтобы вам не приходилось подсчитывать каждый раз.
  • Если у вас нет пользователей, и любой может проголосовать на сайте, вы можете захотеть использовать cookie или какой-то временный идентификатор (например, их IP-адрес, даже если он не является надежным вообще), чтобы предотвратить ботов от спама голосов. Это само по себе довольно сложная проблема, и я бы посоветовал вам ограничить количество голосов зарегистрированным пользователям.
  • Поле «голосовать» само по себе будет TINYINT, как было предложено.

Теперь запрос сам по себе.

Еще раз несколько возможностей в зависимости от ваших знаний.

  • Самый простой способ - создать форму, отправить результаты на ту же страницу и проверить php, когда данные отправляются после загрузки страницы. Если да, отправьте запрос с данными сообщения. Существует множество учебников, объясняющих, как это сделать (с санитарией данных и т. Д.).
  • Однако вышеупомянутое решение перезагрузит всю страницу. Это грязно и не очень полезно. Чтобы создать более плавный пользовательский интерфейс, вы должны сделать это в AJAX. Если вы новичок в этом, но хотите попробовать, вы должны проверить jquery, что является хорошей библиотекой javascript.
+0

Wow это довольно интересно, вы меня дважды думать, я не использовал AJAX Прежде, я проверю это и свяжусь с вами, если у меня возникнут проблемы. Спасибо, мой друг =) –

+0

+1, Хороший ответ –

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