Jump to content
  • 0

Меню php+MySQL


rus
 Share

Question

Добрый день!

Я к вам вот с каким вопросом:

Облазил инет по вопросу формирования меню на php+MySQL и понял что эта задача не совсем мне по зубам к моему великому сожалению.

Суть вопроса такова:

1) Как лучше: хранить меню отдельно, или можно вместе с контентом? При этом уровень вложенности думаю будет небольшой.

2) Какие поля будут в таблице?

3) Как из формы лучше заносить данные в эту таблицу? Может есть тонкости и с этим, то есть то что я не знаю.

4) Вывод с чпу без модреврайта.

У меня пока что получается (точнее не совсем получается :) ) пока так:

translite.php скрипт, который переводит все русские буквы в транслит:

<?php
function translited($string) {
$converter = array(
'а' => 'a', 'б' => 'b', 'в' => 'v',
'г' => 'g', 'д' => 'd', 'е' => 'e',
'ё' => 'e', 'ж' => 'zh', 'з' => 'z',
'и' => 'i', 'й' => 'j', 'к' => 'k',
'л' => 'l', 'м' => 'm', 'н' => 'n',
'о' => 'o', 'п' => 'p', 'р' => 'r',
'с' => 's', 'т' => 't', 'у' => 'u',
'ф' => 'f', 'х' => 'h', 'ц' => 'c',
'ч' => 'ch', 'ш' => 'sh', 'щ' => 'sch',
'ь' => '\'', 'ы' => 'y', 'ъ' => '\'',
'э' => 'e', 'ю' => 'yu', 'я' => 'ya',

'А' => 'A', 'Б' => 'B', 'В' => 'V',
'Г' => 'G', 'Д' => 'D', 'Е' => 'E',
'Ё' => 'E', 'Ж' => 'Zh', 'З' => 'Z',
'И' => 'I', 'Й' => 'J', 'К' => 'K',
'Л' => 'L', 'М' => 'M', 'Н' => 'N',
'О' => 'O', 'П' => 'P', 'Р' => 'R',
'С' => 'S', 'Т' => 'T', 'У' => 'U',
'Ф' => 'F', 'Х' => 'H', 'Ц' => 'C',
'Ч' => 'Ch', 'Ш' => 'Sh', 'Щ' => 'Sch',
'Ь' => '\'', 'Ы' => 'Y', 'Ъ' => '\'',
'Э' => 'E', 'Ю' => 'Yu', 'Я' => 'Ya',
);
return strtr($string, $converter);
}
function str2url($str) {
// переводим в транслит
$str = translited($str);
// в нижний регистр
$str = strtolower($str);
// заменям все ненужное нам на "-"
$str = preg_replace('~[^-a-z0-9_]+~u', '-', $str);
// удаляем начальные и конечные '-'
$str = trim($str, "-");
return $str;
}
?>

Вывод меню:

<ul id="left_nav">
<?php
$result = mysql_query ("SELECT title,id FROM pages");
$test = mysql_fetch_array($result);
do
{
echo '<li><a href='.translited($test["title"]).'?id='.$test['id'].'>'.$test["title"].'</a></li>';
}
while ($test = mysql_fetch_array($result));
?>
</ul>

В контенте вывожу так (до тупого просто):

<?php echo $test['full_text']; ?>

З.Ы. в таблице всего три поля: id, title и full_text.

Я понимаю что тут вложеностью и не пахнет, но это пока так... тренировка. B)

З.З.Ы. при нажатии на ссылку ничего не открывает, не удается отобразить страницу, хотя если сделать так:

<a href='.$_SERVER['PHP_SELF'].'/'.translited($test["title"]).'?id='.$test['id'].'>'.$test["title"].'</a>

Все открывает, но во-первых дизайн сразу рушится, так как путь к css уже изменился, во-вторых нет контента.

Заранее благодарен всем кто откликнется.

Link to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 0

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

Для начала надо составить списко всех полей, которые должны храниться (потом их можно и добавить)

для таблицы prefix_content

id

parent_id

title

keywords

description

text

Далее поля зависят от потребностей вывода и админки.

Первое, что рекомендую - потренироваться на бумаге с вложенность (зависимостью parent_id)

Link to comment
Share on other sites

  • 0

про З.З.Ы. : путь в шаблоне странице к ксс относительно корня поставь типа: <link href="/style.css" rel="stylesheet" type="text/css">

а вообще тяжело понять что да как если рассказываете только о проблемах а не о том что вообще есть и с какой структурой

Link to comment
Share on other sites

  • 0
Меню должно формироваться автоматически, чтобы сделать вложенность, нужно для каждой записи указывать родительскую запись.

Для начала надо составить списко всех полей, которые должны храниться (потом их можно и добавить)

для таблицы prefix_content

id

parent_id

title

keywords

description

text

Далее поля зависят от потребностей вывода и админки.

Первое, что рекомендую - потренироваться на бумаге с вложенность (зависимостью parent_id)

Думаю что со структурой я определился (хотя бы на данном этапе), получилось что-то типа этого:

| cat_id | parent_id | link_title | full_text | title | keywords | description |

int(11) int(11) varchar(255) text varchar(255) varchar(255) varchar(255)

про З.З.Ы. : путь в шаблоне странице к ксс относительно корня поставь типа: <link href="/style.css" rel="stylesheet" type="text/css">

а вообще тяжело понять что да как если рассказываете только о проблемах а не о том что вообще есть и с какой структурой

Да я пока что нахожусь как бы это сказать... на стадии разработки и по сему мой подход вполне может быть и ошибочным. :)

Link to comment
Share on other sites

  • 0

cat_id - что-то мне подсказывает, что вы не совсем поняли

Вы про категории думаете? Можно все упростить - если есть привязанные разделы (т.е. есть записи, parent_id которых равен текущему id - то и будет строиться (под)меню и это можно рассматривать как категорию. Мне все так упрощается.

Link to comment
Share on other sites

  • 0
cat_id - что-то мне подсказывает, что вы не совсем поняли

Вы про категории думаете? Можно все упростить - если есть привязанные разделы (т.е. есть записи, parent_id которых равен текущему id - то и будет строиться (под)меню и это можно рассматривать как категорию. Мне все так упрощается.

Ну да, я это и имел ввиду, просто так обозвал. :)

Со структурой вроде определился, теперь как заносить данные?

Ведь тут надо же учесть что после создании категории, появится возможность создать под_категорию и присоединить ее к созданной категории.

Формы (html) категории и под_категории могут находиться на одной странице, или все же сделать разные страницы для них?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy