mark2011

Рейтинг
341
Регистрация
11.01.2011

Спасибо всем за ответы.

Как бы физически на сервере будет одна страница, которая будет отвечать за весь вывод. Т.е. любое обращение к файлу 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>&nbsp;&nbsp;
<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>&nbsp;&nbsp;
<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.

Вот что получилось в результате:


Array
(
[0] => Array
(
[1] => Array
(
[0] => Первый раздел
[name] => Array
(
[subcat_id] => 5
[subcat_name] => Ещё один подраздел в первом разделе
[parent_cat_id] => 1
)

)

)

[1] => Array
(
[2] => Array
(
[0] => Второй раздел
[name] => Array
(
[subcat_id] => 6
[subcat_name] => Ещё один подраздел вo втором разделе
[parent_cat_id] => 2
)

)

)

[2] => Array
(
[3] => Array
(
[0] => asafasf
[name] => Array
(
)

)

)

[3] => Array
(
[4] => Array
(
[0] => asf
[name] => Array
(
)

)

)

[4] => Array
(
[5] => Array
(
[0] => 111www
[name] => Array
(
)

)

)

[5] => Array
(
[6] => Array
(
[0] => Новый раздел без описания
[name] => Array
(
)

)

)

[6] => Array
(
[7] => Array
(
[0] => Новый раздел с описанием
[name] => Array
(
)

)

)

)

Колян, ты по адресу обратился, у меня вторая профессия телепат... исправь в файле .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);
?>

Код не тестировал, но как-то так...

Appleman:

Беда!Как сделать, чтобы при клике один элемент закрывался, а другой открывался?

Ну так вы сами себе ответили на вопрос :)

$('#elem1').hide();

$('#elem2').show();

Просто то, что вы хотите сделать, распишите по пунктам, а затем эти пункты перепишите на языке скрипта.

Nicrime

Как-то странно получается... с одной стороны

Nicrime:

Доверять данный вопрос не хотелось бы "абы кому"

С другой

Nicrime:

Бюджет, также хотелось бы ограничить планкой в 1-2к руб

Я вот хочу вкусную сырокопчёную колбасу, которая стоит порядка 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. Как-то так... а вот с таким видом постранички ни разу не встречался...

Всего: 2104