<MyRusakov.ru />

WordPress 6 с Нуля до Гуру

WordPress 6 с Нуля до Гуру

Этот курс научит Вас созданию самых разных сайтов на самой популярной в мире CMS - WordPress. Вы увидите установку и настройку локального сервера, разбор каждой настройки, каждой кнопки и каждого пункта меню в панели WordPress.

Также Вы получите и всю практику, поскольку прямо в курсе с нуля создаётся полноценный Интернет-магазин, который затем публикуется в Интернете. И всё это прямо на Ваших глазах.

Помимо уроков к курсу идут упражнения для закрепления материала.

И, наконец, к курсу идёт ценнейший Бонус по тому, как используя ChatGPT и создавая контент для сайта, можно выйти на пассивный доход. Вы наглядно увидите, как зарегистрироваться в ChatGPT (в том числе, и если Вы из России), как правильно выбрать тему для сайта, как правильно генерировать статьи для него(чтобы они индексировались поисковыми системами) и как правильно монетизировать трафик на сайте.

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

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

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

Подписавшись по 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

Сообщений: 59

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

Для этого нужно в создать базу, например 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

Сообщений: 59

Это два одинаковых варианта с разным подходом
Профиль
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

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