Установление значения «идентификатора поста» для системы оставления комментариев - PullRequest
1 голос
/ 07 августа 2010

Я пытаюсь прикрепить числовое значение "post ID" к комментариям, чтобы их можно было извлечь из базы данных и отобразить в нужном месте. Как мне установить это числовое значение в моей HTML-форме как что-то, что отправляется в сценарий, который вставляет его в базу данных? Я предполагаю, что мне нужно использовать GET или POST, но я не понимаю, как использовать их для отправки чего-либо, кроме текста, введенного пользователем.

Это форма, которую я использую для отправки ввода "имя" и "комментарий":

 <div class="comments">
 <form action="foxpost.php" method="post">

 <label for="name">Name</label><br>
 <input id="name" name="name" type="text" /><br>
 <label for="message">Comment</label><br>
 <textarea class="message" id="message" name="message"></textarea><br><br>

 <input type="Submit" value="Post Comment" />
 </form>
 </div>

Ответы [ 4 ]

2 голосов
/ 07 августа 2010

Поскольку вы пометили этот вопрос с помощью PHP, я предполагаю, что это язык, который вы используете в качестве своего бэкэнда. Еще одно предположение, которое я делаю, заключается в том, что вы фактически форматируете строку запроса с использованием postID, что-то вроде "http://example.com/posts.php?postID=1212",, замечаете postID в строке запроса, вы просто передаете его, как это:

 <div class="comments">
 <form action="foxpost.php?postID=<%= $_GET['postID'] %>" method="post">

 <label for="name">Name</label><br>
 <input id="name" name="name" type="text" /><br>
 <label for="message">Comment</label><br>
 <textarea class="message" id="message" name="message"></textarea><br><br>

 <input type="Submit" value="Post Comment" />
 </form>
 </div>

Использование

<%= $_GET['postID'] %>

просто выведет postID из строки запроса прямо в HTML, или вы можете присвоить его переменной.

1 голос
/ 07 августа 2010

Если вы используете mysql, вам не нужно его создавать, mysql может автоматически создать его при вставке нового сообщения.

Например, мы могли бы создать таблицу

CREATE TABLE `student` ( 
`student_id` INT( 3 ) NOT NULL AUTO_INCREMENT, 
`name` VARCHAR( 25 ) NOT NULL , 
`email` VARCHAR( 50 ) NOT NULL , 
UNIQUE ( `student_id` ) 
);

А затем используйте следующий запрос

INSERT INTO `student` ( `name` , `email` ) VALUES ( 'john', 'email' );

Как видите, идентификатор не указан в запросе, но поле имеет атрибут AUTO_INCREMENT. Когда вы вставляете студента без идентификатора, он получает самый высокий идентификатор и добавляет его. Таким образом, если у вас есть пустая таблица и вы выполните вышеупомянутый запрос вставки, вы получите 3 строки с идентификаторами 1,2 и 3.



Подробнее в руководстве MySQL http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html

p.s. если вы используете другую базу данных, пожалуйста, укажите какую.

--- РЕДАКТИРОВАТЬ 1 --- возможно, неправильно прочитал вопрос (уже за полночь, но это не оправдание)
У вас есть несколько вариантов, если вы хотите пройти 1. скрытое поле, которое упоминалось здесь 2. $ _GET ['postid'] из чего-то вроде comment.php? Postid = 13, если вы добавляете комментарии с другой страницы 3. оба

НО не забывайте, прежде чем добавлять комментарий о существовании поста.

... могу ли я предложить использовать библиотеку akismet для сокращения спама? http://www.achingbrain.net/stuff/php/akismet

Вы можете получить ключ бесплатно при регистрации на wordpress.com

0 голосов
/ 07 августа 2010

Я бы посоветовал не указывать идентификатор как часть формы, а просто использовать функцию базы данных AUTO_INCREMENT.

0 голосов
/ 07 августа 2010

Поместите идентификатор в скрытое поле в вашей форме:

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