Спасибо всем за ответы.
Как бы физически на сервере будет одна страница, которая будет отвечать за весь вывод. Т.е. любое обращение к файлу index.php выведет по номеру раздела и подраздела соответствующую страницу.
Вот... собственно вопрос тогда такой - индексироваться будут физические файлы или то, что написано в коде?
Вот на такую конструкцию:
$data[$current_id]['subcategories'][] = $row['subcat_name'];
неоднократно получал Fatal error: cannot use [] for reading
Counselor
Мне всё это дело потом распарсивать в Smarty.
Ко всем:
Вот Smarty-код, который корректно обрабатывает это дело, выводит в виде нормальной таблички.
<table width="70%"> <tr> <td><b>Раздел / Подраздел</b></td> <td><b>Действия</b></td> </tr> {foreach $cs as $key => $value} {foreach $value as $key1 => $value1} {foreach $value1 as $key2 => $value2} {if !is_array($value2)} {foreach $value2 as $key3 => $value3} <tr> <td>{$value2}</td> <td> <a href="#" onClick="delete_category({$key1})" title="Удалить раздел"><img src="../images/delete.png"></a> <a href="#" onClick="rename_category({$key1})" title="Переименовать раздел"><img src="../images/edit.png"></a></td> </tr> {/foreach} {else} {foreach $value2 as $key3 => $value3} <tr> <td style="padding-left: 2%;">{$value2[$key3]["subcat_name"]}</td> <td style="padding-left: 2%;"> <a href="#" onClick="delete_subcategory({$value2[$key3]["subcat_id"]})" title="Удалить подраздел"><img src="../images/delete.png"></a> <a href="#" onClick="rename_subcategory({$value2[$key3]["subcat_id"]})" title="Переименовать подраздел"><img src="../images/edit.png"></a></td> </tr> {/foreach} {/if} {/foreach} {/foreach} {/foreach} </table>
В общем вывел сам. Пока ещё не вывел, просто сформировал требуемую структуру в php. Кому интересно - выкладываю код и пояснения.
$cs = array(); $db->query('SELECT cat_id, cat_name FROM pages_categories'); while ($data = $db->parse_query('array')) { $cs[][$data['cat_id']] = $data['cat_name']; } foreach ($cs as $key => $value) { foreach ($value as $key1 => $value1) { settype($cs[$key][$key1], 'array'); $cs[$key][$key1]['name'] = array(); $query = mysql_query('SELECT * FROM pages_subcategories WHERE parent_cat_id = ' . $key1); $data = array(); $rows = mysql_num_rows($query); if ($rows > 0) { while ($subcat_data = mysql_fetch_array($query)) { $cs[$key][$key1]['name']['subcat_id'] = $subcat_data['subcat_id']; $cs[$key][$key1]['name']['subcat_name'] = $subcat_data['subcat_name']; $cs[$key][$key1]['name']['parent_cat_id'] = $subcat_data['parent_cat_id']; } } } }
Кратко о том, что здесь происходит.
$cs - это общий массив, где всё хранится. Сначала первым циклом while выводим все разделы и помещаем их в массив. Получаем двумерный массив.
Далее, поскольку массив двумерный, у нас идёт двойной цикл foreach (поскольку $value является массивом, который также необходимо обработать).
Создаём ключ массива name, который также преобразуем в массив. И по условию наличия подразделов ($rows > 0) выводим соответственно разделам. Получается на первый взгляд не очень удобоваримая структура, но smarty с ней справится :))
Ragnarok
Отвечаю на ваше сообщение. Так делать мне нельзя, поскольку у меня всё основано на шаблонах, и очень не хочется html код переводить в файлы php.
Вот что получилось в результате:
Колян, ты по адресу обратился, у меня вторая профессия телепат... исправь в файле .htaccess который лежит в папке httpdocs 17 строчку снизу, там директива RewriteCont а надо RewriteCond ))
<?php $file = file('textfile.txt'); $new_file = array(); foreach ($file as $string) { if (preg_match('#[ваше_выражение_здесь]$', $string)) { $new_file[] = $string; } } $fp = fopen("textfile.txt", "w"); foreach ($new_file as $new_string) { fwrite($fp, $new_string); } fclose($fp); ?>
Код не тестировал, но как-то так...
Ну так вы сами себе ответили на вопрос :)
$('#elem1').hide();
$('#elem2').show();
Просто то, что вы хотите сделать, распишите по пунктам, а затем эти пункты перепишите на языке скрипта.
Nicrime
Как-то странно получается... с одной стороны
С другой
Я вот хочу вкусную сырокопчёную колбасу, которая стоит порядка 1200 рублей за килограмм, но при этом я хочу за неё заплатить не более 300 рублей, а взять килограмм.... у вас та же ситуация получается :)
WebTih
В базе хранится код, полученный от CKEditor. Других вариантов хранения нет, ибо этого требует концепция системы.
Ко всем
А если применить к диву overflow-y=hidden, а на кнопку "постраничной навигации" повесить скроллирование текста средствами js? Это не будет обходом?
Я понял всех...
А как тогда реализовать? Предположим имеется текст в базе в виде HTML. Беру, убираю HTML-разметку, получаю голые слова. К примеру их Y штук. И на странице будет X слов. Соответственно количество страниц равно Y/X. Это понятно. Но текст будет браться из базы единым запросом. Что ж его теперь, на клиенте парсить что ли?? Или принцип постранички в этом случае вообще не такой? Мне бы хотя бы пример сайта, где такое реализовано... ибо я реализовывал постраничку, но там имелась чёткая структура - X записей по Y записей на каждую страницу, X/Y страниц и запрос типа SELECT * FROM table WHERE param = value LIMIT X, Y. Как-то так... а вот с таким видом постранички ни разу не встречался...