|
|
|
| Есть 2 таблицы:
1-я:
books
id | name | category_id |
1 blabla 1
2 blabla 1
3 blabla 2
4 blabla 3
и тд.
2-я таблица: categories
id | name|
1 blabla
2 blabla
3 blabla
Как бы каталог книг, каждая относится к какой-то категории (всегда одной). В категории может быть несколько книг.
category_id в books одинаково id в category, то есть является ключом.
Я вывожу описание книги в данной категории, а как вывести название категории с ссылкой на нее? Т.е. чтобы на странице было:
____________________________________
Название категории >> название книги |
--------------------------------------------------------------|
Описание книги |
___________________________________ |
Получается вывести только номер категории, а не название | |
|
|
|
|
|
|
|
для: Kien
(24.11.2006 в 19:09)
| |
SELECT books.*, categories.name AS category_name
FROM books
LEFT JOIN categories ON category_id = categories.id
ORDER BY books.name
|
| |
|
|
|
|
|
|
|
для: Trianon
(24.11.2006 в 19:41)
| | че-то никак, ничего не выводит
Вот функция вывода, может в ней ошибка:
$ath = mysql_query("SELECT books.*, categories.name AS category_name
FROM books
LEFT JOIN categories ON category_id = categories.id
ORDER BY books.name ");
if($ath)
{
echo '<div align=left style=margin-left:10px; margin-top:40px;>';
$category = mysql_fetch_array($ath);
$url = 'show_cat.php?id='.($book['category_id']);
$title = $category[name];
echo '<br>';
do_html_url2($url, $title);
echo "</div>";
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
|
| |
|
|
|
|
|
|
|
для: Kien
(24.11.2006 в 20:31)
| |
<?
$ath = mysql_query("SELECT books.*, categories.name AS category_name
FROM books
LEFT JOIN categories ON category_id = categories.id
ORDER BY books.name ");
if($ath)
{
while($row = mysql_fetch_assoc($ath))
{
foreach($row as $fld => $val)
echo '$row'."['$fld'] = '$val'<br>\r\n";
}
echo "<br>\r\n";
}
else
{
echo "<p><b>Error: ".mysql_error()."</b><p>";
exit();
}
|
дальше, надеюсь, сами... | |
|
|
|
|
|
|
|
для: Trianon
(24.11.2006 в 20:44)
| | Подкажите пожалуйста !!!
Хочу вывести категории и все подкатегории в тег <select><option>........</option></select>
следующим образом:
категория 0
категория 0
--категория 1
--категория 1
----категория 2
------категория 3
------категория 3
--------категория 4
----категория 2
--категория 1
категория 0
но чёто не получается никак
# Серуктура таблицы `mylinks_cat`
#
CREATE TABLE mylinks_cat (
cid mediumint(8) unsigned NOT NULL auto_increment,
pid mediumint(8) unsigned NOT NULL default '0',
title varchar(60) NOT NULL default '',
imgurl varchar(255) NOT NULL default '',
description text,
PRIMARY KEY (cid),
KEY idx (pid)
) TYPE=MyISAM;
|
Функция которой я вывожу основные котегории, подскажите что нужно дописать чтоб можно было подкрепить под них подкатегории ...
<?
function MySelBox($table)
{
global $db,$lang;
echo '<select class="select" name="subcat">';
$sql = "SELECT cid, pid, title FROM ".$table." WHERE pid=0";
$result = mysql_query($sql,$db);
$count = mysql_num_rows($result);
echo"<option value=\"0\">".$lang['lang117']."</option>";
while (list($cid, $pid, $title) = mysql_fetch_row($result))
{
echo '<option value="'.$cid.'">'.$title.'</option>';
}
echo '</select>';
}
?>
|
| |
|
|
|
|
|
|
|
|
для: Trianon
(22.02.2007 в 10:03)
| |
подскажите в моём случае что будут означать эти переменные
$tree...
$name = "название";
$pid = "прикрепление к категории";
$lev=0
<?
function showtree(&$tree, $name, $pid, $lev=0)
{
$s = str_repeat(" . ", $lev+1);
echo "$s$name :<br> ";
foreach($tree[$pid] as $id => $name) if($id !== 0)
showtree($tree, $name, $id, $lev+1)
}
?>
|
| |
|
|
|
|
|
|
|
для: Webmaster-X
(24.02.2007 в 14:27)
| | Сделал так но результат неправильный
тоесть
основная
-основная
-основная
-подкатегория
-основная
<?
$lang['lang117'] = "основная";
function showtree(&$tree, $name, $pid, $lev=0)
{
$s = str_repeat("-", $lev+1);
echo '<option value="'.$lev.'">';
echo "$s$name";
echo '</option>';
foreach($tree[$pid] as $id => $name) if($id !== 0)
{
showtree($tree, $name, $id, $lev+1);
}
}
function MySelBox($table)
{
global $db,$lang;
echo '<select class="select" name="subcat">';
$sql = "SELECT cid, pid, title FROM ".$table."";
$result = mysql_query($sql,$db);
$count = mysql_num_rows($result);
echo"<option value=\"0\">".$lang['lang117']."</option>";
while (list($cid, $pid, $title) = mysql_fetch_row($result))
{
// echo '<option value="'.$cid.'">'.$title.'</option>';
showtree ($cid, $title, $pid);
}
echo '</select>';
}
MySelBox("mylinks_cat");
?>
|
| |
|
|
|