<MyRusakov.ru />

PHP и MySQL с Нуля до Гуру

PHP и MySQL с Нуля до Гуру

Данный курс - это более 20-ти часов видеоуроков по изучению PHP и MySQL. Ключевой момент курса - это создание движка для сайта с нуля. Каждая строчка комментируется. Практически для каждого урока имеются упражнения. Причём данные упражнения направлены не только на закрепление материала, но и на реализацию реальных задач, встающих перед Web-разработчиками при создании сайтов. После курса Вы сможете без проблем создавать движки для любых сайтов.

Также почти к каждому уроку идут упражнения для закрепления материала.

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

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Форум сайта MyRusakov.ru

Повторить содержимое блока в цикле
05.04.2013 19:09:00 Повторить содержимое блока в цикле Сообщение #1
Alexander

Alexander

Новичок

Новичок

Дата регистрации:
05.04.2013 12:15:30

Сообщений: 13

Всем привет!

Скажите, пожалуйста, как такое можно реализовать...

В общем, в странице (шаблоне) есть специальный блок.
<div id="repeat">
...
</div>
И есть цикл, который выводит информацию из БД. Нужно повторить этот блок, чтобы вставить в него выводимую в цикле информацию.

То есть чтобы скрипт брал этот блок, заполнял его полученной информацией, затем "копировал" его и вставлял другую информацию. В результате должно получиться что-то вроде этого:
<div id="repeat">
Текст первой записи
</div>
<div id="repeat">
Текст второй записи
</div>

Вроде понятно объяснил

Как такое можно реализовать? Сам не могу понять, как это можно сделать. Пробовал находить "открывающий" блок, т.е. <div id="repeat"> через preg_match, затем "закрывающий", и на этом ступор... Как "скопировать" содержимое блоков, как потом вставить их дальше, чтобы в итоге получилось то, о чем я говорил выше...

Гуру, вся надежда только на вас!
Профиль Ответить
05.04.2013 20:38:17 Повторить содержимое блока в цикле Сообщение #2
fabrigas201

fabrigas201

Продвинутый

Продвинутый

Дата регистрации:
20.01.2012 13:08:31

Сообщений: 58

Если я вас правильно понял вам нужно что-то подобно блокам справа.

Для этого нужно в создать базу, например id и данные для блока, всего два поля, но не важно. Потом формируем запрос на выборку всех данных, формируем массив, и в цикле перебираем массив подставляя данные в блок.

Примерно вот так:
<?php
$sql = "SELECT * FROM table";
$res = mysql_query($sql);
while($row = mysql_fetch_assoc($res)):
?>
<div>
<?php echo $row['data'];?>
</div>
<?php
endwhile;
?>


Возможно данный вариант работать не будет, так как не проверял, но думайте в этом направлении.
Профиль Ответить
05.04.2013 21:50:36 Повторить содержимое блока в цикле Сообщение #3
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Проще и дешевле в самом цикле создавать новые блоки с выводом на страницу.
Ну к примеру:
for($i=0; $i<=5; $i++){
echo '<div id=', $i, '....>содержимое блока</div>;}


Конечно можно пойти и более длинным путем, строковыми функциями изъять код между тегами и подставлять туда нужные строки, но гемороя очень много. Зато это того стоит.
Профиль Ответить
05.04.2013 22:45:51 Повторить содержимое блока в цикле Сообщение #4
Alexander

Alexander

Новичок

Новичок

Дата регистрации:
05.04.2013 12:15:30

Сообщений: 13

fabrigas201, нет, это не то... Страница - есть шаблон, как я и говорил, т.е. шаблонизатор должен выдернуть содержимое нужного блока, а потом вставлять в него данные, копировав его (содержимое блока) при этом столько раз, сколько найдено совпадений при выводе из БД. Вот я о чем.

ac-40-6.0, можно поподробнее? Похоже это именно то, что нужно... Хотя бы направьте в нужное направление, пожалуйста

Можно конечно в самом шаблоне PHP скрипт написать, но это не то, чего я хочу добиться в итоге...

UPD 1:
Текст между тэгами я нахожу. Вот только как их повторить и загнать в страницу на выходе?
Профиль Ответить
05.04.2013 23:30:03 Повторить содержимое блока в цикле Сообщение #5
fabrigas201

fabrigas201

Продвинутый

Продвинутый

Дата регистрации:
20.01.2012 13:08:31

Сообщений: 58

Это два одинаковых варианта с разным подходом
Профиль Ответить
06.04.2013 00:11:54 Повторить содержимое блока в цикле Сообщение #6
Alexander

Alexander

Новичок

Новичок

Дата регистрации:
05.04.2013 12:15:30

Сообщений: 13

fabrigas201, я понимаю, но я не о приведенных примерах кода.

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

Извините, что так странно изъясняюсь, просто запарился уже, третьи сутки сижу над этим кодом, голова пухнет просто...

UPD:
Телепаты! Ау!
Получилось повторить блоки, одно но - они выводятся сверху страницы, т.е. не там, где нужно.
Можно как-нибудь вставить результат после определенного слова? Например того-же самого "</div>"?
Профиль Ответить
06.04.2013 09:41:38 Повторить содержимое блока в цикле Сообщение #7
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Начинаем геморрой:
//читаем шаблон и заносим его в переменную $string

//ищем нужный блок
//можно через рег.выражение, но так надежней
$str = strstr($string, '<div id="repeat">');
$rep = strstr($str, '</div>');
$rep = substr($rep, 6);
$str = str_replace($rep, "", $str);
//теперь переменная $str содержит код блока

//создаем массив текста для замены
$pat = array("{bloc1}", "{bloc2"}....);
//теперь массив переменных на которые будем менять
$rep = array($b1, $b2...);
//и массив для записи
$tmp = array();
//начинаем цикл
while(условие){
//во временный массив заносим вновь созданные блоки
$tmp[] = str_replace($pat, $rep, $str);
}
//преобразуем массив обратно в строку
//плюс такого способа в сортировке, то есть можно
//расположить блоки в любом порядке, что удобно для пользователя
$str = implode('', $tmp);

//выводим строку в шаблон


для позиционирования блоков могу посоветовать в шаблоне задать стиль блока и в цикле менять стиль height на нужный.
Профиль Ответить
06.04.2013 10:02:21 Повторить содержимое блока в цикле Сообщение #8
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Код сырой и даже очень, но для задания направления мысли сойдет. Если что обращайся.
Профиль Ответить
06.04.2013 10:40:06 Повторить содержимое блока в цикле Сообщение #9
Alexander

Alexander

Новичок

Новичок

Дата регистрации:
05.04.2013 12:15:30

Сообщений: 13

ac-40-6.0, спасибо Вам большое, добрый человек!
Профиль Ответить
06.04.2013 10:52:17 Повторить содержимое блока в цикле Сообщение #10
ac-40-6.0

ac-40-6.0

Эксперт

Эксперт

Дата регистрации:
29.06.2012 02:02:06

Сообщений: 88

Кто сказал что я добрый???
Как работает?
Профиль Ответить