0 / 0 / 1
Регистрация: 19.04.2016
Сообщений: 139

Коментирование статьи на php

19.11.2017, 22:17. Показов 615. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, у меня вопрос. Как сделать добавление комментария в базу?)Я сделал вывод комментария к определённой статье . Связал таблицы, приравнял ид коммента и ид статьи.

вывод коммента
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
    if(isset($_GET['id'])){
        $sqlquery = "SELECT * FROM `comments` WHERE `id_news` = ".$_GET['id']."";
    }else{
        $sqlquery = "SELECT * FROM `comments` ORDER BY `id` DESC, `datetime`";
    }
    $sql = mysql_query($sqlquery) or die(mysql_error());
    while($row = mysql_fetch_array($sql)){
?>
        <?php echo $row['author']; ?>
        <?php echo $row['datetime']; ?><br>
        <?php echo $row['text']; ?>
                    <div style="clear: both;"><br></div>
    <?php } ?>
Спрашиваю почему? Потому, что не понимаю добавление так же делать приравниванием ид комента к статье или как.

форма

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<form name="comment" action="" method="post">
  <p>
    <label>Имя:</label>
    <input type="text" name="name" />
  </p>
  <p>
    <label>Комментарий:</label>
    <br />
    <textarea name="text_comment" cols="26" rows="3"></textarea>
  </p>
  <p>
    <input type="hidden" name="page_id" value="150" Что с этим валуе делать, зачем оно? />
    <input type="submit" value="Отправить" />
  </p>
</form>
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.11.2017, 22:17
Ответы с готовыми решениями:

Простое комментирование статьи на PHP
Здраствуйте, как сделать самое простое комментирование стать на php? Есть 3 php документа со статьями str1-3.php. И в них нужно в блоке div...

Добавление картинки в вывод статьи на PHP
Здраствуйте, написал добавление статьи в базу и вывод. Проблема в том , что я хочу еще сделать добавление изображение и вывод с этой же...

Статьи через php и базы данных
Всем привет. Я вот посмотрел на сайтах и увидел, что менюшки ссылаются на такие вот ссылки: ...

12
Эксперт PHP
3900 / 3238 / 1353
Регистрация: 01.08.2012
Сообщений: 10,914
19.11.2017, 23:29
Цитата Сообщение от Xelinel32 Посмотреть сообщение
Что с этим валуе делать, зачем оно?
Ловите его в $_POST['page_id'] и записываете в столбец id_news.
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
19.11.2017, 23:43
Xelinel32, что к чему вы собрались приравнивать? Снабдите добавляемый комментарий идентификатором статьи и все. Судя по значению action у вас POST-обработчик привязывается к адресу статьи, поэтому идентификатор можете брать непосредственно из адреса, как и при GET. GET-параметры можно использовать и в POST-запросах. Также можете заносить идентификатор в скрытое поле формы при GET и потом получать его, как один из POST-параметров. В любом случае перед вставкой комментария нужно проверять существование комментируемой статьи по id (есть и способ контроля наличия связи на уровне БД, но в данном случае обычно используется менее жесткий вариат, о котором я написал). Может, вы про это спрашивали?

По-моему в адресе проще передавать идентификатор, т.к. можно на первом этапе использовать унифицированный код проверки id для GET/POST.

Надеюсь, код выше учебный/упрощенный/неполный, потому что не увидел никакой защиты от получения "опасных" значений в id.
0
0 / 0 / 1
Регистрация: 19.04.2016
Сообщений: 139
20.11.2017, 13:17  [ТС]
Цитата Сообщение от Jodah Посмотреть сообщение
Ловите его в $_POST['page_id'] и записываете в столбец id_news.
Вот таблица в базе
Миниатюры
Коментирование статьи на php  
0
0 / 0 / 1
Регистрация: 19.04.2016
Сообщений: 139
20.11.2017, 18:31  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
что к чему вы собрались приравнивать? Снабдите добавляемый комментарий идентификатором статьи и все. Судя по значению action у вас POST-обработчик привязывается к адресу статьи, поэтому идентификатор можете брать непосредственно из адреса, как и при GET. GET-параметры можно использовать и в POST-запросах. Также можете заносить идентификатор в скрытое поле формы при GET и потом получать его, как один из POST-параметров. В любом случае перед вставкой комментария нужно проверять существование комментируемой статьи по id (есть и способ контроля наличия связи на уровне БД, но в данном случае обычно используется менее жесткий вариат, о котором я написал). Может, вы про это спрашивали?
По-моему в адресе проще передавать идентификатор, т.к. можно на первом этапе использовать унифицированный код проверки id для GET/POST.
Надеюсь, код выше учебный/упрощенный/неполный, потому что не увидел никакой защиты от получения "опасных" значений в id.
А как мне сделать , что бы поле с логином пользователя и даты было скрыто но заносилось в базу?
Вот поменял форму, вытягиваю из сессии логин и беру сегодняшнюю дату. Как мне скрыть эти поля от пользователей или убрать их редактирование?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form name="comment" action="" method="post">
  <p>
    <label>Имя:</label>
    <input type="text" name="name" value="<?php echo $_SESSION['session_username'];?>" />
  </p>
   <p>
    <label>Дата:</label>
    <input type="text" name="name" value="<?php echo date("Y-m-d H:i:s"); ?>" />
  </p>
  <p>
    <label>Комментарий:</label>
    <br />
    <textarea name="text_comment" cols="26" rows="3"></textarea>
  </p>
  <p>
    <input type="hidden" name="page_id" value="150" />
    <input type="submit" value="Отправить" />
  </p>
</form>
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
20.11.2017, 20:04
PHP/HTML
1
<input type="hidden" name="name" value="<?php echo date("Y-m-d H:i:s"); ?>" />
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
20.11.2017, 20:35
Xelinel32, у вас же в исходнике был пример скрытого поля.

В БД нужно добавлять id пользователя, а не логин. Даже если пользователь - гость, можно попробовать выявить его наличие в БД по значению email. Дату через форму задавать не нужно. Это можно сделать непосредственно в POST-обработчике или даже настроить поле на автоматическую генерацию значения при добавлении записи.

Добавлено через 5 минут
Да, естественно, поле author и у новостей, и у комментариев должно хранить не ник/имя/логин, а числовой id.
0
0 / 0 / 1
Регистрация: 19.04.2016
Сообщений: 139
21.11.2017, 12:10  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
у вас же в исходнике был пример скрытого поля.
В БД нужно добавлять id пользователя, а не логин. Даже если пользователь - гость, можно попробовать выявить его наличие в БД по значению email. Дату через форму задавать не нужно. Это можно сделать непосредственно в POST-обработчике или даже настроить поле на автоматическую генерацию значения при добавлении записи.
Спасибо, разобрался. А как еще сделаить, что бы в новости выводило количество коментариев?
Вот вывод новости
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
?php
    if(isset($_GET['cat_id'])){
        $sqlquery = "SELECT * FROM `news` WHERE `id_category` = ".$_GET['cat_id']."";
    }else{
        $sqlquery = "SELECT * FROM `news` ORDER BY `id` DESC, `datetime`";
    }
    $sql = mysql_query($sqlquery) or die(mysql_error());
    while($row = mysql_fetch_array($sql)){
?>
    <div class="article">
            <a href="statia.php?id=<?php echo $row['id']; ?>"><img src="img/<?php echo($row['image']) ?>"></a>
            <a id="first" href="statia.php?id=<?php echo $row['id']; ?>"><?php echo($row['title']) ?></a>
            <span><?php echo($row['mini_text']) ?></span>
            <i class="fa fa-comment-o" aria-hidden="true">2</i> Количество коментов
            <i class="fa fa-eye" aria-hidden="true">1</i> Количество просмотров новости
                <i><?php echo($row['datetime']) ?></i>
</div>
    <?php } ?>
0
Особый статус
 Аватар для FloppyDisc
623 / 221 / 164
Регистрация: 18.11.2015
Сообщений: 1,086
21.11.2017, 14:03
Цитата Сообщение от Xelinel32 Посмотреть сообщение
А как еще сделаить, что бы в новости выводило количество коментариев?
SQL
1
SELECT n.*, COUNT(c.comment) AS commentcount FROM `news` n LEFT JOIN `comments` c ON c.news_id = n.id
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
21.11.2017, 17:57
Цитата Сообщение от Xelinel32 Посмотреть сообщение
А как еще сделаить, что бы в новости выводило количество коментариев?
Лучше завести у новостей для этого отдельное поле и делать его инкремент/декремент триггерами по INSERT/DELETE на таблице комментариев.
0
0 / 0 / 1
Регистрация: 19.04.2016
Сообщений: 139
23.11.2017, 18:32  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Xelinel32, у вас же в исходнике был пример скрытого поля.
В БД нужно добавлять id пользователя, а не логин. Даже если пользователь - гость, можно попробовать выявить его наличие в БД по значению email. Дату через форму задавать не нужно. Это можно сделать непосредственно в POST-обработчике или даже настроить поле на автоматическую генерацию значения при добавлении записи.
Добавлено через 5 минут
Да, естественно, поле author и у новостей, и у комментариев должно хранить не ник/имя/логин, а числовой id.
Все равно что-то не выходит. Я отправляю форму, ошибок не выводит все нормально, но значения в базу не заносит.
обработчик
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
  $mysqli = new mysqli("localhost", "Xelinel32", "ArT1999eM", "colevents");
  $name = $_POST["name"];
  $date = $_POST["datetime"];
  $page_id = $_POST["page_id"];
  $text_comment = $_POST["text_comment"];
  $name = htmlspecialchars($name);
  $text_comment = htmlspecialchars($text_comment);
  $mysqli->query("INSERT INTO `comments` (`name`, `page_id`, `text_comment`,`datetime`) VALUES ('$name', '$page_id', '$text_comment','$datetime')");
  header("Location: ".$_SERVER["HTTP_REFERER"]);
?>
Форма
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<form name="comment" action="phpscript/comments.php" method="post">
  <p>
    <label>Имя:</label>
    <input disabled="" class="inp" type="text" name="name" value="<?php echo $_SESSION['session_username'];?>" />
  </p>
   <p>
    <label>Дата:</label>
    <input class="inp" disabled=""  type="text" name="datetime" value="<?php echo date("Y-m-d H:i:s"); ?>" />
  </p>
  <p>
    <label>Комментарий:</label>
    <br />
    <textarea rows="4" cols="43" name="text_comment" cols="26" rows="3"></textarea>
  </p>
  <p>
    <input  type="hidden" name="page_id" value="" />
    <input id="bt" type="submit" value="Отправить" />
  </p>
</form>
Я не понял как добавить в скрытое поле id статьи и , что бы оно в обработчике его брало. Может через гет вытягивать, не понимаю(
0
377 / 319 / 73
Регистрация: 15.09.2017
Сообщений: 1,436
23.11.2017, 19:14
Цитата Сообщение от Xelinel32 Посмотреть сообщение
Все равно что-то не выходит. Я отправляю форму, ошибок не выводит все нормально, но значения в базу не заносит.
Ну вы ничего из того, что я вам писал, не сделали, так что ничем помочь не могу.

Цитата Сообщение от Xelinel32 Посмотреть сообщение
Я не понял как добавить в скрытое поле id статьи и , что бы оно в обработчике его брало.
PHP/HTML
1
<input type="hidden" name="page_id" value="<?= $page['id'] ?>">
Цитата Сообщение от Xelinel32 Посмотреть сообщение
Может через гет вытягивать, не понимаю(
Я вам именно об этом писал. Идентификатор статьи определяете по адресу/из адреса, время берете прямо при вставке или совсем его опускаете, оставляя это на откуп БД, идентификатор пользователя тоже берете прямо при вставке (если пользователь авторизован, - из состояния авторизованного пользователя; если нет, то пытаетесь добавить пользователя и потом по уникальному email взять его id вложенным запросом прямо при вставке комментария*).

*
PHP
1
... VALUES ('.$page['id'].',IFNULL((SELECT `author` FROM `author` WHERE `email`="'.$email.'"),0),...
0 - это служебный идентификатор пользователя, чтобы комментарии не терялись в случае возникновения накладки.

Добавлено через 3 минуты
Наличие статьи в любом случае нужно проверять, прежде чем что-то делать (писал об этом в первом посте).

Добавлено через 6 минут
Когда вставляете автора, во избежание ошибки совпадения email (поле должно быть уникальным индексом) используйте INSERT IGNORE.
0
0 / 0 / 1
Регистрация: 19.04.2016
Сообщений: 139
23.11.2017, 21:05  [ТС]
Цитата Сообщение от Phantom-84 Посмотреть сообщение
Сообщение от Xelinel32
Все равно что-то не выходит. Я отправляю форму, ошибок не выводит все нормально, но значения в базу не заносит.
Ну вы ничего из того, что я вам писал, не сделали, так что ничем помочь не могу.
Сообщение от Xelinel32
Я не понял как добавить в скрытое поле id статьи и , что бы оно в обработчике его брало.
PHPHTMLВыделить код
1
<input type="hidden" name="page_id" value="<?= $page['id'] ?>">
Сообщение от Xelinel32
Может через гет вытягивать, не понимаю(
Я вам именно об этом писал. Идентификатор статьи определяете по адресу/из адреса, время берете прямо при вставке или совсем его опускаете, оставляя это на откуп БД, идентификатор пользователя тоже берете прямо при вставке (если пользователь авторизован, - из состояния авторизованного пользователя; если нет, то пытаетесь добавить пользователя и потом по уникальному email взять его id вложенным запросом прямо при вставке комментария*).
*
PHPВыделить код
1
... VALUES ('.$page['id'].',IFNULL((SELECT `author` FROM `author` WHERE `email`="'.$email.'"),0),...
0 - это служебный идентификатор пользователя, чтобы комментарии не терялись в случае возникновения накладки.
Добавлено через 3 минуты
Наличие статьи в любом случае нужно проверять, прежде чем что-то делать (писал об этом в первом посте).
Добавлено через 6 минут
Когда вставляете автора, во избежание ошибки совпадения email (поле должно быть уникальным индексом) используйте INSERT IGNORE.
Все огромное спасибо. В форме в валуе я написал
PHP
1
<?= $_GET['id']?>
А вот обработчик, все окей
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
  $mysqli = new mysqli("localhost", "Xelinel32", "ArT1999eM", "colevents");
  $name = $_POST["name"];
  $date = $_POST["datetime"];
  $id_news = $_POST["id_news"];
  $text_comment = $_POST["text_comment"];
  $name = htmlspecialchars($name);
  $text_comment = htmlspecialchars($text_comment);
  $mysqli->query("INSERT INTO `comments` (`author`, `id_news`, `text`,`datetime`) VALUES ('$name', '$id_news', '$text_comment','$date')");
  header("Location: ".$_SERVER["HTTP_REFERER"]);
?>
Хочу еще сделать проверки там на пустые поля. И вот вопрос когда ставлю в инпут disable поля отправляются в базу пустые, почему так? Не хочу hide прописывать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.11.2017, 21:05
Помогаю со студенческими работами здесь

Как вывести статьи с определенной категорией на php на отдельной странице ?
-Таблица articles -id -title -text -pubdate -views -categorie_id -Таблица articles_categories -id

Статьи на php + css
Можете, очень срочно нужно, покажите пример вывода статей php+ html+ css пожайлуста

Редирект статьи сгенерированной php
Здравствуйте! Возник такой вопрос. После написания нового кода сайта изменились пути к некоторым статьям, но по ссылкам на них уже...

Как в php вывести ссылку на статьи по определенным категориям?
Есть учебный блог с разными статьями по категориям. Вот код вывода статей из одной категории categorie_id = 2 на странице &lt;?php ...

Коментирование кода
Привет всем) Помогите разобраться пожалуйста, желательно каждый шаг. using System; using System.Collections.Generic; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru