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

Всплывающая форма ответа на комментарий - База Данных

03.12.2017, 17:48. Показов 1254. Ответов 3

Студворк — интернет-сервис помощи студентам
Здравствуйте, я чайник в php, особенно в javascript, но так сложилось, что оочень нужно быстро написать код. Я хотела создать вставку и публикацию комментариев на странице index.php. Я решила сделать так, чтобы люди просто оставляли комменты, они прошли модерацию и затем просто показывались с датой и кнопкой ОТВЕТИТЬ. Я сделала всплывающую форму при нажатии на ссылку ОТВЕТИТЬ. Нужно было, чтобы текст ответа на коммент содержал уже заданное обращение к тому человеку, которому нужно ответить. Например "ольга пишет привет, а мария отвечает: ольга, тебе тоже привет". Все комментарии выводятся из базы данных, таблицы comments. Проблема в том, что это обращение посвящается только первому по счету комментатору, то есть получается, что всплывающее окно ответа образуется для каждого комментатора, но оно спрятано (display:none) отображается только форма ответа первого комментария. Вот скрин для наглядности (скрин1)
Я просто не понимаю, почему делается видимым только форма первого комментария, как сделать так, чтобы отображалась только та форма, на которой была нажата ссылка ОТВЕТИТЬ. Заранее спасибо

код в хэде: джаваскрипт
JavaScript
1
2
3
4
5
6
7
8
9
10
<script> 
        function show() {
        document.getElementById('envelope').style.display='block';
        document.getElementById('fade').style.display='block';
        }
        function hide() {
        document.getElementById('envelope').style.display='none';
        document.getElementById('fade').style.display='none';
        }
        </script>

код:

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
<div style="margin-bottom: 20px">
<?php $res=mysqli_query($link,"SELECT * FROM comments
    WHERE   moderation=1 ORDER BY id");  
$number=mysqli_num_rows($res);
 
if ($number>0) {
    
 
 echo '<br><b> <p style="text-align:center"> Последние комментарии:</b><br></p>';
 
 
                        
                        function get_comments($link) {
                    
                        $result = mysqli_query($link, "SELECT * FROM comments
    WHERE   moderation=1 ORDER BY id");
                        
                        $comments = mysqli_fetch_all($result, MYSQLI_ASSOC);
                    
                        return $comments;
                        }
                        
                        $comments = get_comments($link);
                //echo '<div style="float:right; width:170px; border:1px solid red;">';
                echo '('.date("H:i:s d.m.Y").' г.)</div>';
 
                             foreach ($comments as $comment)
                         { 
                             echo '<div class="comment_name">'.$comment["login"].':</div><div class="comment">
                             '.$comment["message"].'<div class="comment_answer"><a class="show-btn" href="javascript:void(0)" 
                             onclick = "show()">
                            Ответить</a></div><br><div class="comment_date">'.$comment["date"].'</div><br></div>';
                            
                            
                            
                            
                            
echo '<!-- Всплывающая при нажатии ОТВЕТИТЬ-- форма для ответов http://dbmast.ru/sozdaem-vsplyvayushhuyu-kontaktnuyu-formu-dlya-sajta офигенный сайт ВЫШЕ ЕСТЬ СКРИПТ С ФУНКЦИЯМИ-->
<div id="envelope" class="envelope">
        <a  href="javascript:void(0)" onclick = "hide()">Закрыть</a>
        <h1 class="title">Ответить на комментарий</h1>
<form action="';  echo $_SERVER["PHP_SELF"]; echo '" method="POST"> 
                             
                             <label for="login">Введите ваше имя:</label> <br><br>
                             <input class="add_comment" type="text" name="login"  required="required" placeholder="Айгуль" ><br><br>
            
                             <label for="message">Введите ваш комментарий: </label><br><br>
                             <textarea name="message" cols="100" rows="3" required="required"> Ответ:  '.$comment["login"].',  </textarea></p>
                              <P> <strong> Все комментарии проходят обязательную модерацию, поэтому будут опубликованы не сразу.</strong> </p>';
                             
                               
                                 $cod=rand(10,90); $cod2=rand(1,99); $summa=$cod + $cod2;
                                 echo '<div style="margin:5px; float:right;">'.$cod.' + '.$cod2.' = ';
                                  echo '<input type="hidden" name="prov_summa" value="'. $summa.'">';
                                
                                 echo '<input type="text" name="contr_cod" maxlength="4" size="4">';
                                 echo '</div>';
                               
                             echo '<button class= "add_comment" type="submit" name="submit"> Отправить </button> <br> <br> <br>
                
                        </form>
       </div>
       <div id="fade" class="black-overlay"></div> ';
 
 
 
 
  } // закрытие форич положительного условия
} //закрытие условия если намбер комментариев с модератион больше 1 БОЛЬШЕ чем 0                 
                    if(count($comments) === 0):
                    
                    echo '<p> Комментарии отсутствуют </p>';
                    
 else:       endif; ?>
Миниатюры
Всплывающая форма ответа на комментарий - База Данных   Всплывающая форма ответа на комментарий - База Данных   Всплывающая форма ответа на комментарий - База Данных  

0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.12.2017, 17:48
Ответы с готовыми решениями:

Форма ответа на комментарий Php Js
Я только начинающая в Php Js, поэтому помогите и объясните, пожалуйста. Есть форма с комментариями из БД, у каждого комента свой айди....

Всплывающая форма, ввод данных
Здравствуйте, недавно в php, появился вопрос: доделываю сайт olgamag24.ru, вот код index.php: &lt;?php session_start(); ...

Форма авторизации + база данных
есть контроллер, который дает валидацию на мою форму, где только логин и пассворд: &lt;?php class Form extends CI_Controller { ...

3
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
05.12.2017, 04:38
На одной странице недопустимо выводить несколько элементов с одним и тем же ID. А у Вас именно так и выводится.
Поэтому используйте либо класс, либо генерируйте ID динамически (JS-код тоже надо изменить, чтобы он не к статичному ID обращался).
1
0 / 0 / 0
Регистрация: 17.08.2017
Сообщений: 30
05.12.2017, 20:44  [ТС]
Спасибо за ответ, но можете, пожалуйста, более подробно пояснить как использовать класс или генерировать Айди динамически?

Добавлено через 41 минуту
Я что поняла подправила, но не могли бы вы пояснить, пожалуйста, я сделала следующее: в базе данных в таблице комментов есть также уникальное поле для айди. Я сделала его значение как айди каждого дива для формы. в джаваскрипте так же поменяла энвелоп на переменную с этим айди, но ничего не работает. Вот код:
Код:
JavaScript
1
2
3
4
5
6
7
8
9
10
<script> 
        function show() {
        document.getElementById(''.$id_com.'').style.display='block';
        document.getElementById('fade').style.display='block';
        }
        function hide() {
        document.getElementById(''.$id_com.'').style.display='none';
        document.getElementById('fade').style.display='none';
        }
        </script>
Код:

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
         foreach ($comments as $comment)
                         {  $id_com=$comment["id"];
                             echo '<div class="comment_name">'.$comment["login"].':</div><div class="comment">
                             '.$comment["message"].'<div class="comment_answer"><a class="show-btn" href="javascript:void(0)" 
                             onclick = "show()"> 
                            Ответить</a>'.$id_com.'</div><br><div class="comment_date">'.$comment["date"].'</div><br></div>';
                            
                            
                            
                            
                            
echo '<!-- Всплывающая при нажатии ОТВЕТИТЬ-- форма для ответов http://dbmast.ru/sozdaem-vsplyvayushhuyu-kontaktnuyu-formu-dlya-sajta офигенный сайт ВЫШЕ ЕСТЬ СКРИПТ С ФУНКЦИЯМИ-->
<div id="'.$id_com.'" class="envelope">
        <a  href="javascript:void(0)" onclick = "hide()">Закрыть</a>
        <h1 class="title">Ответить на комментарий</h1>
<form action="';  echo $_SERVER["PHP_SELF"]; echo '" method="POST"> 
                             
                             <label for="login">Введите ваше имя:</label> <br><br>
                             <input class="add_comment" type="text" name="login"  required="required" placeholder="Айгуль" ><br><br>
            
                             <label for="message">Введите ваш комментарий: </label><br><br>
                             <textarea name="message" cols="100" rows="3" required="required"> Ответ:  '.$comment["login"].',  </textarea></p>
                              <P> <strong> Все комментарии проходят обязательную модерацию, поэтому будут опубликованы не сразу.</strong> </p>';
                             
                               
                                 $cod=rand(10,90); $cod2=rand(1,99); $summa=$cod + $cod2;
                                 echo '<div style="margin:5px; float:right;">'.$cod.' + '.$cod2.' = ';
                                  echo '<input type="hidden" name="prov_summa" value="'. $summa.'">';
                                
                                 echo '<input type="text" name="contr_cod" maxlength="4" size="4">';
                                 echo '</div>';
                               
                             echo '<button class= "add_comment" type="submit" name="submit"> Отправить </button> <br> <br> <br>
                
                        </form>
       </div>
       <div id="fade" class="black-overlay"></div> ';
 
 
 
 
  }
Не могли бы вы помочь еще раз?
0
Эксперт PHP
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
06.12.2017, 08:29
Цитата Сообщение от Lara Semenova Посмотреть сообщение
Я сделала его значение как айди каждого дива для формы
Данный момент Вы поняли правильно. Только число в качестве ID лучше не использовать (смотрите: https://developer.mozilla.org/... трибуты/id). ID должен начинаться с латинской буквы.
Значит, меняем так объявление DIV:
PHP/HTML
1
<div id="envelope-'. $comment["id"] .'" class="envelope">
Далее меняем
PHP/HTML
1
<a class="show-btn" href="javascript:void(0)" onclick="show()">Ответить</a>
На
PHP/HTML
1
<a class="show-btn" href="javascript:void(0)" data-target="envelope-'. $comment["id"] .'" onclick="show(this)">Ответить</a>
и
HTML5
1
onclick="hide()"
на
HTML5
1
onclick="hide(this)"
JS меняем так:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
function show(e)
{
    var data = e.dataset;
    
    document.getElementById(data.target).style.display = 'block';
}
 
function hide(e)
{
    var parent = e.parentElement;
    
    parent.style.display='none';
}
Сделаете всё правильно -- заработает. Не заработает -- пишите, разбрёмся.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.12.2017, 08:29
Помогаю со студенческими работами здесь

База данных. Форма и подтаблица в ней
Добрый день. Есть форма, в которую вставлена подтаблица. Возможно ли чтобы сумма из подтаблицы выводилась в ячейку формы? Прикладываю фото

Форма авторизации, база данных и функционал
Доброго времени суток! Я вот начал изучать c# и базу данных (Access). У меня есть БД в которой есть таблица пользователей: в ней...

База данных Заказы, нужна форма авторизации
Здравствуйте! возникла проблема с формой авторизации, нужна очень помощь

Загрузить форма из базы данных(база находится на ПК) и вывести на экран.
Нужно чтобы при нажатии на кнопку(в приложении на телефоне) загружалась форма из базы данных(база находится на ПК) и выводилась на экран....

База данных с нуля (Web форма на C# БД на MS SQL Server 2008)
Привет всем:) Хочу написать на C#Web форму для доступа к БД MS SQL Server 2008. 1.Установил Windows7 2.Устновил MS SQL Server 2008 ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru