X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

Открыть тему
Тема закрыта
> Вывод категорий с их страницами
b1f
b1f
Topic Starter сообщение 6.9.2010, 1:52; Ответить: b1f
Сообщение #1


Вывод страниц с их категорией в таком виде
.....
категория 1
стр. 1
стр. 2.
категория 2
стр.1 к.2
стр.2 к.2
стр.3 к.2
........



есть категории, в одной таблице а их страницы в другой
таблицы выглядят примерно так

таблица категорий:
id = 1
category = service
category_rus = Услуги

таблица страниц:
id = 1
page = index
page_rus = Главная
category = serviсe

написал функцию... но не работает как нужно :achtung:, помогите разобраться или поправьте где что не так... пробывал разными способами... это последний вариант...
не знаю что можно придумать уже....
[PHP]function listPage() {
// Получаем список категорий в массив
$cat = select("category","");
while ($cate = rows($cat)) {
$categories .= $cate['category']." "; // english
$category .= $cate['category-rus']." ";} // russian

// Делим категории с массива
$categories = explode(" ",$categories); $category = explode(" ",$category);
// Получаем страницы категорий
for ($i=0; $i<count(rows($cat)); $i++) {
$sql = select("pages","WHERE `category`='$categories[$i]'");
$c = "<thead><tr><th colspan=\"2\">".$category[$i]."</th></tr></thead>";
for ($k=0;$k<count($result_page=rows($sql)); $k++){
echo $result_page['category']." ";
$id = $result_page['id'];
$pen = $result_page['page'];
$prus = $result_page['page-rus'];
$result_pages .= "<tbody><tr><td><a href=\"../?c=$en&p=$pen\">$prus</td>\n
<td align=\"right\"><a href=\"javascript:;\" name=\"pages\" onclick=\"edit=$id\">Редактировать</a> /
<a href=\"?act=pages&delete=delete&id=$id\">Удалить</a></form></td></tr></tbody>\n";}
}
$result = "<table class=\"ttMe\">\n$c\n$result_pages\n</table>\n";
// Выводим всё
return $result;
} [/PHP]
[PHP]select("",""); и rows("",""); это мои функции[/PHP]
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Mulder_hb
Mulder_hb
сообщение 6.9.2010, 12:20; Ответить: Mulder_hb
Сообщение #2


Сделать один объединяющий запрос в бд:
[PHP]$result = mysql_query("SELECT * FROM `category` LEFT JOIN `pages` USING (`category`) ORDER BY `category`");[/PHP]
Поместить результат в двумерный массив:
[PHP]for ($data = array(); $row = mysql_fetch_assoc($result); $data[] = $row);[/PHP]
Работать с двумерным массивом:
[PHP]for ($i = 0; $i < count($data); $i++) {
// формировать вывод по желанию
// доступ к элементам:
// $data[$i]['имя_поля_в_таблице'];
}[/PHP]
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
LifeUP
LifeUP
сообщение 6.9.2010, 12:34; Ответить: LifeUP
Сообщение #3


Вот пробуйте, писал без проверки но принцип понят.
[PHP]
/*
* Достаю все категории
*/
$res = mysql_query ("SELECT id,category,category_rus FROM `category`");
$category = array ();
$count = mysql_num_rows ($res);
for ($i = 0; $i < $count; $i++)
{
$count[$i] = mysql_fetch_assoc ($res);
}
unset ($res, $count, $i);


/*
* Достаю все страницы
*/
$res = mysql_query ("SELECT id,page,page_rus,category FROM `pages`");
$pages = array ();
$count = mysql_num_rows ($res);
for ($i = 0; $i < $count; $i++)
{
$pages[$i] = mysql_fetch_assoc ($res);
}
unset ($res, $count, $i);


/*
* Вывожу на экран
*/
$count_categories = count ($count_categories);
$count_pages = count ($count_pages);
$info = '<table border="1" cellspacing="0" cellpadding="0" width="300">';

for ($c = 0; $c < $count_categories; $c++)
{
$info .= '<tr>';

$info .= '<td>' . $category[$i]['id'] . '</td>';

for ($p = 0; $p < $count_pages; $p++)
{
if ($category[$i]['category'] == $pages[$p]['category'])
{
$info .= '<td>' . $pages[$p]['page_rus'] . '</td>';
}
}

$info .= '</tr>';
}
$info .= '</table>';

echo $info;
[/PHP]

Возможно ошибся по сравнению категорий и страниц, поправите сами.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
b1f
b1f
Topic Starter сообщение 6.9.2010, 12:46; Ответить: b1f
Сообщение #4


хорошо, спасибо, попробую отпишу
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
b1f
b1f
Topic Starter сообщение 9.9.2010, 2:36; Ответить: b1f
Сообщение #5


вот что вышло
категория
первая страница из базы
категория 2
первая страница 2 категории

[PHP]function listPage() {
/* Все категории */
$res = select("category","");
for ($c = array(); $category = rows($res); $c[] = $category);
/* Все страницы в массив */
$res = select("pages","");
for ($p = array(); $page = rows($res); $p[] = $page);
// Вывод на страницу
for ($cid=0; $cid<=count($category); $cid++) {
$cpc = $c[$cid]['category-rus'];
for ($pid=0; $pid<=count($page); $pid++) {
if ($c[$cid]['category'] != $p[$pid]['category']) continue;
$cpru = $p[$pid]['page-rus'];
$cpen = $p[$pid]['page'];
$cpid = $p[$pid]['id'];
$cp = $p[$pid]['category'];
$pages_to = $cpru;
}
$result .=$cpc.$pages_to;
}
return $result;
}[/PHP]
впринципи все как нужно.... НО... выводит на страницу только по одной "страницы" из категории.... прошу помощи :nea:

также использую другие свои функции, такие как select и rows

[PHP]function select($base,$where) {
$selects = mysql_query("SELECT * FROM `$base` $where") or die (error("Не могу выбрать поля из базы [<tt>$base</tt>] Ошибка MySQL: ".mysql_error()."",
"<li>Не верный вызов функции."));
return $selects;
}
function rows($select) {
return mysql_fetch_array($select);
}[/PHP]
Также пробывал
[PHP]$pages_to .= $cpru;[/PHP]
на страницу выводит
категория 1
страница 1 из кат.1
категория2
страница 1 из кат.1
страница 1 из кат.2
и т.д.

уже не знаю как еще можно это сделать :wacko:
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
b1f
b1f
Topic Starter сообщение 12.9.2010, 16:13; Ответить: b1f
Сообщение #6


:nea: помогите пожалуйст разобраться
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
b1f
b1f
Topic Starter сообщение 19.9.2010, 15:28; Ответить: b1f
Сообщение #7


спасибо

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Горячая тема (нет новых ответов) CASHOUT.BIZ - ввод/вывод крипты Киев-Украина-офиc
54 SupportCashout 11119 Вчера, 17:27
автор: SupportCashout
Горячая тема (нет новых ответов) [От 2%, Лучшее предложение] Вывод / Обмен / Qiwi / Webmoney / Privat24 от Katlana [Надежный Обмен]
Быстрый надежный обмен валют.
44 Katlana 9111 19.11.2020, 0:23
автор: Katlana
Горячая тема (нет новых ответов) Услуги продвижения сайтов, SEO специалист (эффективный вывод в Топ)
Качественно и гибкие цены
103 mvchansas 35102 17.11.2020, 17:47
автор: mvchansas
Горячая тема (нет новых ответов) Обмен/Ввод/Вывод - Paypal/WM/PM/WIRE/ePm/Paxum/BTC/Epese/Capitali/Visa/MC/eCoin/EXMO/нал
261 JenkinChange 176437 15.11.2020, 21:07
автор: JenkinChange
Открытая тема (нет новых ответов) Нужен человек для написания титлов и десков для категорий
адалт тематика
2 slmn 392 28.9.2020, 20:34
автор: GlazAlmaz


 



RSS Текстовая версия Сейчас: 24.11.2020, 18:31
Дизайн