|
|
|
| Собственно и весь вопрос: есть ограничение на кол-во таблиц в базе? | |
|
|
|
|
|
|
|
для: Хулиган
(24.06.2006 в 18:30)
| | нет | |
|
|
|
|
|
|
|
для: Loki
(24.06.2006 в 19:18)
| | Ясно, и ещё один вопрос о таблицах: есть ли какие-нибудь подводные камни, если имя таблицы записано кириллицей? Пока на локальной машине никаких проблем не встретилось, но может есть нюансы с использованием кириллицы в имени таблицы, на которые нужно иметь ввиду? | |
|
|
|
|
|
|
|
для: Хулиган
(24.06.2006 в 19:51)
| | Есть - не известно как отнесётся UNIX-подобная операционная система к таким названиями, как правило, плохо. Лучше ориентируетесь на английские названия, если имеется такая возможность... | |
|
|
|
|
|
|
|
для: cheops
(24.06.2006 в 21:54)
| | Понятно, тогда ещё вопрос по таблицам:
Я хотел сделать, чтобы имя таблицы было именем отдела. Раз кириллица чревата непонятками, то решил сделать (имя таблицы = id отдела), т.е. '001', '002', и т.д.
А само имя отдела вписывать в каждую запись как одно из полей. Но мне имя отдела нужно всего один раз при обращении к таблице, и не хотелось бы дублировать его в каждой записи.
Поэтому такой вопрос: есть ли у таблицы какой-нибудь параметр, в котором можно было бы хранить это имя в виде кириллицы? Т.е., по аналогии с winapi, что-то вроде параметра GWL_USERDATA, имеющегося у каждого окна в винде. | |
|
|
|
|
|
|
|
для: Хулиган
(25.06.2006 в 02:12)
| | Так а вы поместите имена отделов в отдельную таблицу, откуда извлекаются первичные ключи 001, 002 и т.п. А все таблицы для разных отделов объединить в одну, но добавив поле для вторичного ключа отдела. Обычно такие задачи в SQL решают при помощи всего двух таблиц. | |
|
|
|
|
|
|
|
для: cheops
(25.06.2006 в 10:26)
| | Боюсь, пользователя, незнакомого с БД, такие вещи, как первичные и вторичные ключи, связаные таблицы и т.д. будут ставить в тупик. Я хочу сделать модуль, который будет создавать панель навигации (менюшку), и чтобы этот модуль работал при любом количестве отделов, категорий, и который не надо было бы править при изменениях в базе и структуре этой базы. Чтобы моего вмешательства не требовалось. Может с отдельными таблицами - неоптимальный вариант, но это проще. А модуль выглядит примерно так:
<?
$link = mysql_connect("localhost", "root", "") or die ("Could not connect");
mysql_select_db ("BASE") or die ("Could not select database");
$tbls=mysql_list_tables("BASE");
while ($tb=mysql_fetch_array($tbls)) {
//тут разгребаются отделы
$prompt= "ShowSubmenu('menu_".$tb[0]."', 'toplight".$tb[0]."')" ;
$sql_otdel="SELECT * FROM '".$tb[0]."' WHERE 1 LIMIT 0 , 1 ";
$otdels = mysql_query ($sql_otdel) or die ("department query failed");
$cell_otdel = mysql_fetch_array($otdels);?>
<TR>
<TD class=leftnav id=toplight<? print htmlspecialchars($tb[0]); ?>
style="color: #515151; background-color: #00fff"
onclick="<? print htmlspecialchars($prompt); ?>">
<? print htmlspecialchars($cell_otdel[0]); ?>
</TD>
</TR>
<TR>
<TD>
<DIV id=menu_<? print htmlspecialchars($tb[0]); ?> style="DISPLAY: none">
<? $sql_cat="SELECT DISTINCT CAT_ID, CAT_NAME FROM '".$tb[0]."'"; ?>
<? $cats=mysql_query ($sql_cat) or die ("category query failed"); ?>
<? while ($cat_cell=mysql_fetch_array($cats)) { ?>
//тут разгребаются категории отдела
<? $subprompt=$tb[0]."_".$cat_cell[0]; ?>
<DIV class=submenu id=<? print htmlspecialchars($subprompt); ?>><A
href="http://www.mysite.ru/index.php?dat=
<? print htmlspecialchars($subprompt); ?>"
target="_blank">
<? print htmlspecialchars($cat_cell[1]); ?></A></DIV>
<? } ?>
</TD>
</TR>
<? } ?>
<? mysql_close($link); ?>
|
Менюшка работает, передаёт в страницу, открываемую по клику на ссылке, номер отдела и номер категории в пределах этого отдела.
Возвращаясь к параметру таблицы, в котором можно было бы хранить какой-нибудь кириллический текст: у таблицы при создании можно записать параметр COMMENT. А можно его программно извлечь в переменную?
Если можно, то как? | |
|
|
|
|
|
|
|
для: Хулиган
(25.06.2006 в 14:44)
| | >Возвращаясь к параметру таблицы, в котором можно было бы хранить какой-нибудь
>кириллический текст: у таблицы при создании можно записать параметр COMMENT. А можно
>его программно извлечь в переменную?
>Если можно, то как?
Да, это возможно, при помощи запроса
SHOW FULL TABLES LIKE 'имя_таблицы'
|
Поле с именем comment (могу врать - нужно проветить) будет содержать комментарий к таблице. | |
|
|
|
|
|
|
|
для: cheops
(25.06.2006 в 14:54)
| | Немного изменил запрос:
$sql_status="SHOW TABLE STATUS LIKE '001'";
$status = mysql_query ($sql_status) or die ("status query failed");
$comment=mysql_fetch_array($status);
print ($comment['Comment']);
|
Спасибо за помощь | |
|
|
|