Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как сделать выпадающий список
 
 автор: FireFjy   (01.12.2008 в 10:29)   письмо автору
 
 

Доброго времени суток всем!
Я новичок в php, пытаюсь сделать свой первый сайт. Знаю, что уже много на разных форумах обсуждали тему списков, но ничего подходящего для себя не нашла.
Имеется таблица в SQL типа:
id ! title ! pid !
1 !acsessuar ! 0 !
2 !sumki ! 1 !
3 ! perchatki ! 1 !
4 !news ! 0 !
где id - порядковый номер строки
title - наименование раздела
pid - номер родительского раздела

Есть скрипт
<?php

include ("dbopen.php");

function ShowTree($ParentID, $lvl) {

global $lvl;
$lvl++;

$sSQL="SELECT id,title,pid FROM assortiment WHERE pid=".$ParentID." ORDER BY title";
$result=mysql_query($sSQL);

if (mysql_num_rows($result) > 0) {
while ( $row = mysql_fetch_array($result) ) {
$ID1 = $row["id"];

echo("<A HREF=\""."?ID=".$ID1."\" onclick=\"show_hide(this)\">".$row["title"]."</A>"." <BR>");
ShowTree($ID1, $lvl);
$lvl--;
}
}
}
ShowTree(0);

mysql_close();
?>
Что нужно добавить, чтобы список был выпадающим, т.е. нажимая на "acsessuar" предлагалось выбрать sumki или perchatki?

  Ответить  
 
 автор: sim5   (01.12.2008 в 11:07)   письмо автору
 
   для: FireFjy   (01.12.2008 в 10:29)
 

Может лучше меню товаров, а не список выпадающий?

  Ответить  
 
 автор: FireFjy   (01.12.2008 в 11:41)   письмо автору
 
   для: sim5   (01.12.2008 в 11:07)
 

Ассортимент очень большой и если делать просто меню, то страница получится очень длинной.
На одном из сайтов была тема как создать список типа:
1.Категория
1.1 Подкатегория
1.1.1 Подподкатегория
2. Категория
2.1 Подподкатегория
3. Категория

При нажатии на Категорию раскрывалась Подкатегория и т.д. Но подробного описания как сделать подобный список нет.

  Ответить  
 
 автор: sim5   (01.12.2008 в 11:55)   письмо автору
 
   для: FireFjy   (01.12.2008 в 11:41)
 

Ну почему длинной? Меню бывают древовидными, меню бывают выпадающими и т.п.. А товары всегда можно разбить на категории, подкатегории и т.п..

  Ответить  
 
 автор: elenaki   (01.12.2008 в 12:07)   письмо автору
 
   для: FireFjy   (01.12.2008 в 11:41)
 

Но подробного описания как сделать подобный список нет.
======================================================
его можно сделать по-разному. например, с помощью AJAX выбирать подкатегории, чтоб
не грузить страницу большим количеством текста.

  Ответить  
 
 автор: HaJIuBauKa   (01.12.2008 в 11:23)   письмо автору
251 байт
 
   для: FireFjy   (01.12.2008 в 10:29)
 

<?php
$showhide 
file_get_contents("../java/showhide.js");
echo (
"<script>".$showhide."</script>");

include (
"dbopen.php");

function 
ShowTree($ParentID$lvl 0) {
    global 
$lvl;
    
$lvl++;

    
$sSQL="SELECT id,title,pid FROM assortiment WHERE pid=".$ParentID." ORDER BY title";
    
$result=mysql_query($sSQL);

    if (
mysql_num_rows($result) > 0) {
        if (
$lvl 1) echo("<blockquote id=\"".$ParentID."\" style=\"display: "."none"."\">");
        while ( 
$row mysql_fetch_array($result) ) {
            
$ID1 $row["id"];
            
// Узнаем, есть ли подкатегории
            
$sSQL="SELECT id,title,pid FROM assortiment WHERE pid=".$ID1." LIMIT 1";
            
$result1=mysql_query($sSQL);
            if (
mysql_fetch_array($result1)) { // есть - рисуем раскрывающийся список
                
echo("<a style=\"cursor: pointer;\" onclick=\"show_hide(".$ID1.")\">".$row["title"]." (".$lvl.")</a>"."<br>");
            }
            else { 
// нет - рисуем ссылку
                
echo("<a href=\"?id=".$ID1."\">".$row["title"]." (".$lvl.")</a>"."<br>");
            }
            
ShowTree($ID1$lvl);
            
$lvl--;
        }
        if (
$lvl 1) echo("</blockquote>");
    }
}
ShowTree(0);

mysql_close();
?>

show_hide() данная функция в прикрепленном файле.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования