Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
1

Как отрисовывать меню по вертикали и горизонтали?

08.08.2012, 02:56. Просмотров 2148. Ответов 14
Метки нет (Все метки)

Имеется меню следующего вида
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function ShowTree($parent, $lvl) {
    
    global $link;
     
    
    $lvl++;     
    
     
    $sql = "SELECT * FROM content  WHERE parent = " . $parent . " ORDER BY  id";
    
    $result = mysql_query($sql, $link);
 
    if (mysql_num_rows($result) > 0) {
    
        echo("<UL>\n");
    while ( $row = mysql_fetch_array($result) ) {
        
        $ID1 = $row["id"];
    
        $chpu = $row["chpu"];
         
 
        echo("<li>");
        
     
         
        echo "<a href=\"" . "index.php?id=" . $ID1 . "&chpu=".$chpu."\">" . $row["namemenu"] . "</a>" ;
       
        echo("</li>\n");
        
        ShowTree($ID1, $lvl); 
        $lvl--;
        
    }
        echo("</UL>\n");
    }
    
    }
Как отрисовывать меню по вертикали и горизонтали?В предложенном варианте оно отрисовывается по горизонтали.
 Комментарий модератора 
Используйте теги форматирования кода!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.08.2012, 02:56
Ответы с готовыми решениями:

Как скроллить изображение по вертикали и горизонтали?
Привет великие обитатели сего форума, нужна ваша помощь, проблема в следующем. есть форма на ней...

Как расположить 4 картинки по горизонтали и 2 по вертикали в 2 ряда
хотел бы узнать как сделать 4 картинки по горизонтале а 2 по вертикале короче в 2 ряда **** **** ...

Как растянуть скролбар по вертикали или горизонтали?
Вообще как его правильно присобачить? Сейчас он просто прямоугольничком таким маленьким в...

Как отцентровать значения в ячейке по вертикали и горизонтали
Извините за тупой вопрос, Заранее ПАСИБО ;)

14
Эксперт PHP
4215 / 3141 / 1015
Регистрация: 06.01.2011
Сообщений: 9,106
08.08.2012, 08:10 2
Цитата Сообщение от melihovgv Посмотреть сообщение
В предложенном варианте оно отрисовывается по горизонтали.
melihovgv, может по вертикали?
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
    function ShowTree( $parent, $lvl, $CssClass='vertical' ) 
    {
        global $link;
        
        $lvl++;
 
        $sql = "SELECT * FROM content WHERE parent = " . $parent . " ORDER BY id";
        $result = mysql_query($sql, $link);
        
        if (mysql_num_rows($result) > 0)
        {
 
            echo '<ul class="'. $CssClass .'">';
            while ( $row = mysql_fetch_array($result) ) 
            {                
                echo '<li>
                        <a href="index.php?id=' . $row["id"] . '&chpu='. $row["chpu"] .'">' . $row["namemenu"] . '</a>
                      </li>';
 
                ShowTree( $row["id"], $lvl );
                $lvl--;
            }
            echo '</ul>';
        }
    }
В последнем аргументе указываете class для UL (по умочанию будет присваиваться класс "vertical"). В CSS пишите:
CSS
1
2
3
4
5
6
7
8
9
10
/* Для вертикального меню */
.vertical li
{
  float:inherit;
    }
/* Для горизонтального меню */
.horizontal li
{
  float:left;
    }
0
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
08.08.2012, 10:28  [ТС] 3
Parse error: syntax error, unexpected '$', expecting ')' in function ShowTree($parent, $lvl$, $CssClass='vertical') {
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
16826 / 6704 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
08.08.2012, 10:29 4
а вы сами не видите?
Цитата Сообщение от melihovgv Посмотреть сообщение
$lvl$
0
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
08.08.2012, 10:42  [ТС] 5
а в БД нужно делать столбец со здначением vertikal horizontal
0
Эксперт PHP
4215 / 3141 / 1015
Регистрация: 06.01.2011
Сообщений: 9,106
08.08.2012, 10:49 6
НЕТ! Просто одно меню средствами CSS делается либо горизонтальным, либо вертикальным
0
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
08.08.2012, 11:09  [ТС] 7
Получилось, но как сделать так, чтобы в горизонтальное одно меню отрисовывалось?А в вертикальное другое?А то одно и тоже отрисовывается
0
Эксперт PHP
4215 / 3141 / 1015
Регистрация: 06.01.2011
Сообщений: 9,106
08.08.2012, 11:43 8
Формируйте разные SQL запросы (в зависимости от переданного параметра) для меню в таком случае.
0
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
08.08.2012, 11:55  [ТС] 9
Можете на примере показать?

Добавлено через 10 минут
если в mysql я создаю таблицу class_menu и в ней vertical и gorizont параметры, как быть дальше???
0
Эксперт PHP
4215 / 3141 / 1015
Регистрация: 06.01.2011
Сообщений: 9,106
08.08.2012, 11:57 10
Если у вас содержатся оба меню в одной таблице, то можно сделать это:
Цитата Сообщение от melihovgv Посмотреть сообщение
в БД нужно делать столбец со здначением vertikal horizontal
И писать такой SQL запрос:
PHP
1
$sql = "SELECT * FROM content WHERE parent = " . $parent . " && type='" . $CssClass . "' ORDER BY id";
0
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
08.08.2012, 12:03  [ТС] 11
т.е. vertikal - 0
horizontal - 1
Или я не со всем так понимаю*
0
Эксперт PHP
4215 / 3141 / 1015
Регистрация: 06.01.2011
Сообщений: 9,106
08.08.2012, 12:12 12
Можно одно поле создать (type). А в него вписывать 1 - значит вертикальное, 0 - горизонтальное.

Добавлено через 3 минуты
А функцию вот так переписать:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    function ShowTree( $parent, $lvl, $type=1 ) 
    {
        global $link;
        
        $lvl++;
 
        $sql = "SELECT * FROM content WHERE parent = " . $parent . " && type='" . $type . "' ORDER BY id";
        $result = mysql_query($sql, $link);
        
       // Смотрим, какой CSS class присвоить
        switch( $type ):
            case 0: $CssClass = 'horizontal'; break;
            default: $CssClass = 'vertical';
        endswitch;
        
        if (mysql_num_rows($result) > 0)
        {
 
            echo '<ul class="'. $CssClass .'">';
            while ( $row = mysql_fetch_array($result) ) 
            {                
                echo '<li>
                        <a href="index.php?id=' . $row["id"] . '&chpu='. $row["chpu"] .'">' . $row["namemenu"] . '</a>
                      </li>';
 
                ShowTree( $row["id"], $lvl );
                $lvl--;
            }
            echo '</ul>';
        }
    }
0
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
08.08.2012, 12:16  [ТС] 13
Сделал вот так
PHP
1
2
 $CssClass=true;
    $sql = "SELECT id,parent,namemenu FROM content  WHERE parent = " . $parent . "&& type='" . $CssClass . "' ORDER BY  id";
Работает.
Но
PHP
1
2
3
4
5
6
7
if($CssClass=true;)
{
$sql = "SELECT id,parent,namemenu FROM content  WHERE parent = " . $parent . "&& type='" . $CssClass . "' ORDER BY  id";
}
else{
$sql = "SELECT id,parent,namemenu FROM content  WHERE parent = " . $parent . "&& type='" . $CssClass . "' ORDER BY  id";
}
Как это выводить???
Или лучше сделать две функции?
0
Эксперт PHP
4215 / 3141 / 1015
Регистрация: 06.01.2011
Сообщений: 9,106
08.08.2012, 12:21 14
Выше посмотрите, готовая функция, будет работать так, как вам нужно.
0
16 / 15 / 4
Регистрация: 12.06.2011
Сообщений: 842
08.08.2012, 13:17  [ТС] 15
Благодарю,
А можете еще помочь в таком вопросе,что бы ?id = 1, было доступно только по домену, т.е.
Дубль контента:
site.ru/?id=1
Хочу
site.ru/

Добавлено через 52 минуты
Такое правило не работает
Код
RewriteEngine On
RewriteRule ^\?id=1$ / [R=301]
 Комментарий модератора 
Используйте теги форматирования кода!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.08.2012, 13:17

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как можно отразить загружаемое изображение по горизонтали/вертикали ?
Здравствуйте, хотел написать мини игру по типу марио, и логично что при движении в разные стороны...

Как выставить слой по центру не только по горизонтали но и по вертикали?
использую метод margin:auto в сочетании с relative - только он дает правильную реакцию при...

Как в компоненте PageControl сделать имена вкладок не по вертикали, а по горизонтали?
как в компоненте PageControl сделать имена вкладок не по вертикали, а по горизонтали

Заполнить каждую N-ю клетку в таблице (как по горизонтали, так и по вертикали)
Код присваивает значения ячейке: SH1.Cells(i1, j1).Value = dCp где i1=2, j1=11. Как мне сделать,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.