Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
2 / 2 / 0
Регистрация: 29.06.2016
Сообщений: 179
1

Как вывести несколько блоков с контентом?

01.12.2017, 21:37. Показов 2172. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, я совсем новичок в php, так что закройте глаза ладошкой и осторожно зрите сквозь пальцы. Собственно вопрос: как можно вывести несколько блоков с контентом из бд?
И еще мне нужно обязательно с помощью Ajax.
Я вот сам что-то накидал.
По клику на элемент списка(.list) выполняется следующий скрипт:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$(function(){
    $(".list").click(function(){
        var ID=$(".list").val();
 
        $.ajax({
            type:"POST",
            url: "GetDocs.php",
            data:{ID:ID},
            success:function(data){
                $(".ajaxsuccessdoc").html(data);
               
            }
        });
    });
});
А вот GetDocs.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
<?php require_once 'connection.php';
?>
 
<?php
 
if (isset($_POST['ID'])&& !empty($_POST['ID']) ){
    $ID=intval($_POST['ID']);
 
 
    $query =$db->query("SELECT  * FROM `docarcitem` WHERE `MainID_Ref`='$ID'");
 
    
    while ($row = $query->fetch()) {
        echo "<div id='doctext' style='display:none';>";
        echo "<span class='spandoc'>Имя документа<p class='docname'>$row->DocName</p></span>";
        echo "<span class='spandoc'>Описание<p class='docdescription'>$row->DocDescription</p></span>";
        echo "<span>";
        echo "<div id='icondiv'>";
        echo "<span class='glyphicon glyphicon-arrow-left'></span> <span class='Iccon'>Вернуться назад</span>";
        echo "</div>";
        echo "</span>";
        echo "</div>";
 
    }
 
 
}
?>
Я понимаю что это выглядит ужасно, и к тому же, "оно" выводит только первый блок div id='doctext'. А мне нужно чтобы выводило столько блоков, сколько записей выбралось по запросу.
Помогите пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.12.2017, 21:37
Ответы с готовыми решениями:

Создает несколько блоков, при выводе бд!
Всем хай! Пытаюсь вывести инфу с бд! Но на каждую строку, создается новый блок! вот код ...

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

Нужно убрать прозрачность блоков с контентом
Всем привет. Сохранил scrapbook'ом страницу, чтобы сделать шаблон, но шаблон отличается от...

Как сделать несколько активных блоков?
Доброго времени суток...сразу сори если вопрос туповат...только начинаю осваивать верстку ...

8
Эксперт PHP
3877 / 3218 / 1350
Регистрация: 01.08.2012
Сообщений: 10,859
01.12.2017, 21:51 2
Цитата Сообщение от ManiKKK Посмотреть сообщение
Javascript
1
var ID=$(".list").val();
Здесь вы получаете не тот элемент, на который кликнули, а 1-ый найденный в коде.

Когда вы вешаете обработчик на событие, в this лежит элемент, для которого это событие произошло.

Короче, должно быть так:

Javascript
1
var ID = $(this).val();
1
2 / 2 / 0
Регистрация: 29.06.2016
Сообщений: 179
01.12.2017, 21:55  [ТС] 3
Jodah, Спасибо, это, несомненно, очень здорово, а можете что-нибудь сказать по моему вопросу?
0
Эксперт PHP
3877 / 3218 / 1350
Регистрация: 01.08.2012
Сообщений: 10,859
01.12.2017, 22:05 4
Лучший ответ Сообщение было отмечено ManiKKK как решение

Решение

ManiKKK, это и есть по вашему вопросу. Вы передаёте не тот ID, соответственно и записи получаете не те.

Цитата Сообщение от ManiKKK Посмотреть сообщение
"оно" выводит только первый блок div id='doctext'
Проверьте в консоли браузера, какой ID передаётся и сколько записей соответствуют этому ID в БД.
1
2 / 2 / 0
Регистрация: 29.06.2016
Сообщений: 179
01.12.2017, 22:22  [ТС] 5
Jodah, Извините, я просто маленько глуп. Спасибо большое.

Добавлено через 12 минут
Jodah, Кстати, вы не знаете почему то, что выполняется в GetDocs.php не видится скриптами на основной страничке?
Например
PHP
1
2
3
4
5
echo "<span>";
        echo "<div id='icondiv'>";
        echo "<span class='glyphicon glyphicon-arrow-left'></span> <span class='Iccon'>Вернуться назад</span>";
        echo "</div>";
        echo "</span>";
У меня на клик по этому диву должен выполняться скрипт
Javascript
1
2
3
4
5
6
7
8
$(function(){
    $("#icondiv").click(function(){
 
        document.getElementById("MainDIV").style.display='block';
        document.getElementById("ajaxsuccessdoc").style.display='none';
       
    });
});
Но он как-будто не видит вообще этот div. Хотя если посмотреть в F12 на разметку, то там он есть.
0
Эксперт PHP
3877 / 3218 / 1350
Регистрация: 01.08.2012
Сообщений: 10,859
01.12.2017, 22:39 6
ManiKKK, вы повесили обработчик только на те элементы, которые изначально были в HTML коде.

Если такие элементы добавляются динамически, надо вешать обработчик на родителя. В HTML надо добавить элементу <span> какой-нибудь класс, пусть будет some-class, тогда в JQuery это будет примерно так:

Javascript
1
2
3
4
5
6
$(function(){
    $('.some-class').on('click', '#icondiv', function() {
        document.getElementById("MainDIV").style.display='block';
        document.getElementById("ajaxsuccessdoc").style.display='none';
    });
});
Добавлено через 1 минуту
Цитата Сообщение от Jodah Посмотреть сообщение
Javascript
1
document.getElementById("MainDIV").style.display='block';
И если есть JQuery, можно сократить:
Javascript
1
$('#MainDIV').css('display', 'block');
1
2 / 2 / 0
Регистрация: 29.06.2016
Сообщений: 179
01.12.2017, 22:53  [ТС] 7
Jodah, что-то я видимо не то сделал и у меня не получается.
Вот GetDocs.php
В нем добавил span'у класс
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
<?php require_once 'connection.php';
?>
 
<?php
 
if (isset($_POST['ID'])&& !empty($_POST['ID']) ){
    $ID=intval($_POST['ID']);
 
 
    $query =$db->query("SELECT  * FROM `docarcitem` WHERE `MainID_Ref`='$ID'");
 
    
    while ($row = $query->fetch()) {
        echo "<div id='doctext' >";
        echo "<span class='spandoc'>Имя документа</span><p class='docname'>$row->DocName</p>";
        echo "<hr/>";
        echo "<span class='spandoc'>Описание</span><p class='docdescription'>$row->DocDescription</p>";
          echo "<hr/>";
        echo "<span class='some-class'>";
        echo "<div id='icondiv'>";
        echo "<span class='glyphicon glyphicon-arrow-left'></span> <span class='Iccon'>Вернуться назад</span>";
        echo "</div>";
        echo "</span>";
        echo "</div>";
 
    }
 
 
}
?>
Вот скрипт:
Javascript
1
2
3
4
5
6
7
8
$(function(){
    $('.some-class').on('click', '#icondiv', function() {
 
        $('#MainDIV').css('display', 'block');
        $('#ajaxsuccessdoc').css('display', 'none');
       
    });
});
Но скрипт по прежнему не выполняется
0
Эксперт PHP
3877 / 3218 / 1350
Регистрация: 01.08.2012
Сообщений: 10,859
01.12.2017, 23:05 8
Лучший ответ Сообщение было отмечено ManiKKK как решение

Решение

ManiKKK, а, это уже я затупил. <span> тоже создаётся динамически, на него бесполезно вешать события по той же причине.

Вместо some-class должен быть предок, который есть в коде изначально. Судя по вашему коду, это .ajaxsuccessdoc, попробуйте подставить его.
1
2 / 2 / 0
Регистрация: 29.06.2016
Сообщений: 179
01.12.2017, 23:09  [ТС] 9
Jodah, Работает, большое вам спасибо!
0
01.12.2017, 23:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.12.2017, 23:09
Помогаю со студенческими работами здесь

Как вывести СДЛ с неуник. контентом из под АГС?
Есть социалка для блоггеров - работает с 2008 года. Блоггеры добавляют анонсы своих материалов,...

Как блочные шифры кодируют предложение размером в несколько блоков?
Пытаюсь разобраться на примере des. Тип ECB.

Как сделать несколько блоков, исчезающих одновременно, при наведении хотя бы на один их них
Как сделать несколько блоков, исчезающих одновременно, при наведении хотя бы на один их них? ...

Выделить последовательно пять блоков памяти. Высвободить второй блок, после чего вывести информацию о цепочке блоков
Выделить последовательно пять блоков памяти. Высвободить второй блок, после чего вывести информацию...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru