Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 4

Вывод комментариев к различным статьям, взятым так же из БД

02.11.2015, 21:42. Показов 2683. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как сделать вывод определенных комментариев, к определенным статьям? Сейчас у меня 3 статьи, которые, выводятся из БД на стр. article.php Система комментариев так же сделана, но, на какую бы статью я не зашел, выводятся все комментарии из БД, а хочется, что бы выводились определенные, под каждую статью. Благодарю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.11.2015, 21:42
Ответы с готовыми решениями:

Вывод рекламы в списке комментариев (через каждый 10 комментариев) в WordPress
Привет! Подскажите как сделать вывод рекламы (adsense) в списке комментариев (через каждый 10 комментариев) в WordPress? Не нашел в поиске...

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

Сделать так, чтобы не вызывать постоянно функцию random с различным числом k
Помогите, пожалуйста, решить проблему. Есть функция, дающая случайные числа: #include <stdio.h> #include <stdlib.h> ...

7
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
02.11.2015, 22:18
Цитата Сообщение от Gavrvova Посмотреть сообщение
Как сделать вывод определенных комментариев, к определенным статьям?
используя связи один ко многим
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
02.11.2015, 22:35
Очевидно, нужно выбирать из БД только те комментарии, которые привязаны к конкретной статье...
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
02.11.2015, 22:55
Цитата Сообщение от Jodah Посмотреть сообщение
которые привязаны к конкретной статье...
в этом наверно и есть проблема, что нет связяй
0
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 4
03.11.2015, 00:08  [ТС]
Именно, нет никаких связей.
0
576 / 514 / 253
Регистрация: 26.09.2010
Сообщений: 2,603
03.11.2015, 19:55
Цитата Сообщение от Gavrvova Посмотреть сообщение
Именно, нет никаких связей.
значет надо создать
пример таблиц (самый простой)
таблица новости (id_novosti, novost)
таблица коментарии (id_komentarija, id_novosti, komentarij)
ну и делаешь вывод коментариев по id_novosti

SQL
1
2
3
SELECT `komentarij`.`tablica_komentarij` 
FROM `tablica_novosti`, `tablica_komentarij` 
WHERE `id_novosti`.`tablica_novosti` = `id_novosti`.`tablica_komentarij`
0
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 4
05.11.2015, 17:47  [ТС]
Благодарю, вроде этот вопрос решил и на денвере все работало замечательно, сейчас другая запара: перенес все дело на хостинг, пишу коммент, а форма выводит пустые строки, которые заносятся в БД как пустые строки, возможно, что-то не так в submit.php... не могу разобраться, прошу помощи, вот коды, заранее очень благодарен, откликнувшимся!

Сама форма добавления комментов:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
<?php
 
            // Сообщение об ошибке:
            error_reporting(E_ALL^E_NOTICE);
            
        
            include "comment.class.php";
 
 
            /*
            /   Выбираем все комментарии и наполняем массив $comments объектами
            */
    
            connectDB();
            $comments = array();
            $result = $mysqli->query("SELECT * FROM comments WHERE page_id='$_GET[id]' ORDER BY id ASC");
            
            while($row = mysqli_fetch_assoc($result))
            {
                $comments[] = new Comment($row);
            }
            closeDB();
 
        ?>
 
 
        <?php
        
        /*
        /   Вывод комментариев один за другим:
        */
        connectDB();
        foreach($comments as $c){
            echo $c->markup();
        }
        closeDB();
        ?>
 
        <div style="height: 400px" id="addCommentContainer">
            <p>Добавить комментарий</p><br/>
            <form id="addCommentForm" method="post" action="">
                <div>
                    <label for="name">Имя</label><br/>
                    <input type="text" name="name" id="name" /><br/><br/><br/>
        
                    <label for="body">Содержание комментария</label><br/>
                    <textarea name="body" id="body" ></textarea>
                    <input name='page_id' type='hidden' value='<?php echo $id = $_GET["id"];?>'>
                    <input type="submit" id="submit" value="Отправить"  />
                </div>
            </form>
        </div>


submit.php:


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php
 
// Сообщение об ошибке:
error_reporting(E_ALL^E_NOTICE);
 
include "functions/connect.php";
include "comment.class.php";
 
/*
/   Данный массив будет наполняться либо данными,
/   которые передаются в скрипт,
/   либо сообщениями об ошибке.
/*/
 
$arr = array();
$arr = $_POST;
$validates = Comment::validate($arr);
 
if($validates)
{
    /* Все в порядке, вставляем данные в базу: */
    connectDB();
    $mysqli->query("INSERT INTO comments(name,body,page_id)
                    VALUES (
                        '".$arr['name']."',
                        '".$arr['body']."',
                        '".$arr['page_id']."'
                    )");
 
    $arr['dt'] = date('r',time());
    $arr['id'] = mysqli_insert_id();
    closeDB();
    /*
    /   Данные в $arr подготовлены для запроса mysql,
    /   но нам нужно делать вывод на экран, поэтому 
    /   готовим все элементы в массиве:
    /*/
    
    $arr = array_map('stripslashes',$arr);
    
    $insertedComment = new Comment($arr);
 
    /* Вывод разметки только-что вставленного комментария: */
 
    echo json_encode(array('status'=>1,'html'=>$insertedComment->markup()));
 
}
else
{
    /* Вывод сообщений об ошибке */
    echo '{"status":0,"errors":'.json_encode($arr).'}';
}
 
?>

comment.class.php:


PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<?php
 
class Comment
{
    private $data = array();
    
    public function __construct($row)
    {
        /*
        /   Конструктор
        */
        
        $this->data = $row;
    }
    
    public function markup()
    {
        /*
        /   Данный метод выводит разметку XHTML для комментария
        */
        
        // Устанавливаем псевдоним, чтобы не писать каждый раз $this->data:
        $d = &$this->data;
    
        
        // Преобразуем время в формат UNIX:
        $d['dt'] = strtotime($d['dt']);
        
        
        
        return '
        
            <div class="comment">
                <div class="name">'.$link_open.$d['name'].$link_close.'</div>
                <div class="date" title="Added at '.date('H:i \o\n d M Y',$d['dt']).'">'.date('d M Y',$d['dt']).'</div>
                <p>'.$d['body'].'</p>
            </div>
        ';
    }
    
    public static function validate(&$arr)
    {
        /*
        /   Данный метод используется для проверки данных отправляемых через AJAX.
        /
        /   Он возвращает true/false в зависимости от правильности данных, и наполняет
        /   массив $arr, который преается как параметр либо данными либо сообщением об ошибке.
        */
        
        $errors = array();
        $data   = array();
        
                
        // Используем фильтр с возвратной функцией:
 
        
        if(!($data['body'] = filter_input(INPUT_POST,'body',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
        {
            $errors['body'] = 'Пожалуйста, введите текст комментария.';
        }
        
        if(!($data['name'] = filter_input(INPUT_POST,'name',FILTER_CALLBACK,array('options'=>'Comment::validate_text'))))
        {
            $errors['name'] = 'Пожалуйста, введите имя.';
        }
        
        
        if(!empty($errors)){
            
            // Если есть ошибки, копируем массив $errors в $arr:
            
            $arr = $errors;
            return false;
        }
        
        // Если данные введены правильно, подчищаем данные и копируем их в $arr:
        
        foreach($data as $k=>$v){
            $arr[$k] = mysqli_real_escape_string($v);
        }
            
        return true;
        
    }
    
 
    private static function validate_text($str)
    {
        /*
        /   Данный метод используется как FILTER_CALLBACK
        */
        
        if(mb_strlen($str,'utf8')<1)
            return false;
        
        // Кодируем все специальные символы html (<, >, ", & .. etc) и преобразуем
        // символ новой строки в тег <br>:
        
        $str = nl2br(htmlspecialchars($str));
        
        // Удаляем все оставщиеся символы новой строки
        $str = str_replace(array(chr(10),chr(13)),'',$str);
        
        return $str;
    }
 
}
 
?>
0
0 / 0 / 0
Регистрация: 02.11.2015
Сообщений: 4
09.11.2015, 12:52  [ТС]
Друзья, я разобрался в чем была заноза
В файле comment.class.php экранирующая функция mysqli_real_escape_string не срабатывала, я убрал ее, получилось:
PHP
1
2
3
4
5
6
7
// Если данные введены правильно, подчищаем данные и копируем их в $arr:
        
        foreach($data as $k){
            $arr[$k];
        }
            
        return true;
Все прекрасно работает
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
09.11.2015, 12:52
Помогаю со студенческими работами здесь

Какими плагинами реализовать вывод на главную в табличном виде, миниатюр и краткого описания к статьям?
Необходимо реализовать вывод на главную страницу в табличном виде, миниатюр и краткого описания к статьям из разных категорий. Пример...

Вывод в файлы с различным именем
Добрый день. Возникла проблема, решение которой не смог найти. Необходимо вывести определенные значение в разные файлы, имена которых...

Вывод строк с различным размером шрифта
Добрый день. Задача: выводить текст из базы данных в следующем формате: ...

Вывод элементов инфоблока в новости,с различным css
Здравствуйте. Только начал изучать битрикс,помогие с одним ньюансом. Я создал инфоблоки,их 7. В каждом картинка для анонса и текст. ...

Вывод комментариев по id
Всем привет вот собственно не могу понять каким макаром сделать запрос к id комментария, сейчас все распишу, то как то тяжеловастенько...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru