только начинаю осваивать php и вообще программирование.
И на данный момент делаю что то наподобие каталога(пример каталог интернет-магазина).
Вообщем моя задача такова, есть список стран и городов, и список тип и список видов. Виды принадлежать конкретным типам. Мне нужно организовать вывод следующего типа:
Тип 1
Вид 1
Страна 1
город1
…
городN
Страна 2
город1
…
городN
…
Страна N
город1
…
городN
…
Вид N(далее понятно)
Тип 2
Вид 1
Страна 1
город1
…
городN
Страна 2
город1
…
городN
…
Страна N
город1
…
городN
…
Вид N(далее понятно)
…
Тип N
У меня получилось сделать это следующим способом.
Создал две таблицы:
geo_tree - таблица со списком стран и городов:
id; country_id; name, где country_id это id страны, если равен нулю то это название страны.
catalog_tree - таблица со списком типов и видов:
id; type_id; name, где type_id это id типа и если равен нулю то это есть тип.
И вот сам код функций.
$dbLink = mysql_connect('name-bd', 'user_bd', 'user-bd_pass');
mysql_select_db('name-table', $dbLink);
function CityGeoTree ($country_id,$typen,$viewn,$countryn) {
$sql = "SELECT `id`, `country_id`, `name` FROM `geo_tree` WHERE `country_id` = $country_id ORDER BY `name`";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<ul>';
while ($row = mysql_fetch_array($result)) {
echo '<li class="city_tree"><a href="?type='.$typen.'?view='.$viewn.'?country='.$countryn.'?city='.$row['id'].'">'.$row['name'].'</a></li>';
}
echo '</ul>';
}
}
function CountryGeoTree ($country_id,$typen,$viewn) {
$country_id=0;
$sql = "SELECT `id`, `country_id`, `name` FROM `geo_tree` WHERE `country_id` = $country_id ORDER BY `name`";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<ul>';
while ($row = mysql_fetch_array($result)) {
echo '<li class="country_tree"><a href="?type='.$typen.'?view='.$viewn.'?country='.$row['id'].'">'.$row['name'].'</a></li>';
CityGeoTree ($row['id'],$typen,$viewn,$row['id']);
}
echo '</ul>';
}
}
function ViewTree ($type_id,$typen) {
$sql = "SELECT `id`, `type_id`, `name` FROM `catalog_tree` WHERE `type_id` = $type_id ORDER BY `id`";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<ul>';
while ($row = mysql_fetch_array($result)) {
echo '<li class="view_tree"><a href="?type='.$typen.'?view='.$row['id'].'">'.$row['name'].'</a></li>';
CountryGeoTree (0,$typen,$row['id']);
}
echo '</ul>';
}
}
function CatalogTree () {
$type_id=0;
$sql = "SELECT `id`, `type_id`, `name` FROM `catalog_tree` WHERE `type_id` = $type_id ORDER BY `id`";
$result = mysql_query($sql);
if (mysql_num_rows($result) > 0) {
echo '<ul class="tree">';
while ($row = mysql_fetch_array($result)) {
echo '<li class="type_tree"><a href="?type='.$row['id'].'">'.$row['name'].'</a></li>';
ViewTree ($row['id'],$row['id']);
}
echo '</ul>';
}
}
CatalogTree ();
Перед собой поставил задачу:
1. Удобный интрфейс администратирования:
1.1.Управления типами и видами, т.е. удаление, редактирование, перенос.
1.2.Управление списом стран и городов, удаление, редактирование.
2. Что бы можно было перейти в категорию по ссылке с GET-запросом, и показать все объекты которые принадлежать этой категории
3. Создать красивые ссылки(mod_rewrite) но пока не разберусь, как его связывать с бд(что бы брать имя, или создать доп.поле url в котором храниться название ссылки в eng формате.) :(
4. Создовать объекты которые фактически закрплены за конкретными типом, видом, страной и городом.
Собственно думаю для меня этого будет достаточно.
Вопрос у меня к вам следующий, правильно ли я оргранизовал БД, точнее таблицы. И насколько адекватен мой код?
PS В наличии имеется книга "Разработка web-приложений с помощью php и mysql(Л.Веллинг, Л.Томсон)", её прочел. И мини вопрос(по моему мнению) в проессе прочтения книги наблюдал картину где авторы в одной главе используют функции, в следующей ооп, а потом снова функции, до меня не дошло, когда же применять ооп, или функции. И вообще что лучше.