|
|
|
| Здравствуйте. Господа гуру, подскажите пожалуйста, как можно сделать табы на странице сайта, чтобы были такие же вкладки как в Опере или в Файерфоксе? Пробовал делать во взаимодействии с MySQL, работает очень медленно. Сейчас посетила мысль использовать сессии, но появилось очень много вопросов. Я конечно понимаю, что лучше для этих целей подойдет javascript, но я в нем как свинья в апельсинах. Позвольте мне описать свои хотелки. Имеем ряд ссылок, при нажатии на которые под ними появляются вкладки (табы), так вот, как доходит количество вкладок до количества 5, должна появляться стрелка вправо, которая позволяет перескакивать на следующие 5 вкладок, а тут уже должна появиться стрелка влево.
Вот такой код у меня получился, а вот как интегрировать сюда стрелки вправо и влево, увы не знаю. И еще, владки у меня открываются по порядку их расположения, а должны открываться в зависимости от их вызова. Заранее спасибо.
<?php
session_start();
require_once ('config.inc.php');
$url = str_replace('/12.php?','', $_SERVER['REQUEST_URI']);
echo "<a href='12.php?str=1'>Пользователи</a> ";
echo "<a href='12.php?str=2'>Настройки доступа</a> ";
echo "<a href='12.php?str=3'>Профиль</a> ";
echo "<a href='12.php?str=4'>Справочник должностей</a> ";
echo "<a href='12.php?str=5'>Справочник отделов</a>";
echo "<br>";
echo "<a href='12.php?str=6'>База регистрации договоров</a> ";
echo "<a href='12.php?str=7'>База канцелярии</a> ";
echo "<a href='12.php?str=8'>База претензионного отдела</a> ";
echo "<a href='12.php?str=9'>База искового отдела</a> ";
echo "<a href='12.php?str=10'>База клиентов</a>";
echo "<br><br>";
$_SESSION['str'][0]=" ";
$_SESSION['name'][0]=" ";
if ($_GET['str']==1) $_SESSION['str'][1]="str=1"; $_SESSION['name'][1]="Пользователи";
if ($_GET['str']==2) $_SESSION['str'][2]="str=2"; $_SESSION['name'][2]="Настройки доступа";
if ($_GET['str']==3) $_SESSION['str'][3]="str=3"; $_SESSION['name'][3]="Профиль";
if ($_GET['str']==4) $_SESSION['str'][4]="str=4"; $_SESSION['name'][4]="Справочник должностей";
if ($_GET['str']==5) $_SESSION['str'][5]="str=5"; $_SESSION['name'][5]="Справочник отделов";
if ($_GET['str']==6) $_SESSION['str'][6]="str=6"; $_SESSION['name'][6]="База регистрации договоров";
if ($_GET['str']==7) $_SESSION['str'][7]="str=7"; $_SESSION['name'][7]="База канцелярии";
if ($_GET['str']==8) $_SESSION['str'][8]="str=8"; $_SESSION['name'][8]="База претензионного отдела";
if ($_GET['str']==9) $_SESSION['str'][9]="str=9"; $_SESSION['name'][9]="База искового отдела";
if ($_GET['str']==10) $_SESSION['str'][10]="str=10"; $_SESSION['name'][10]="База клиентов";
if ($_GET['del']==1) unset($_SESSION['str'][1]);
if ($_GET['del']==2) unset($_SESSION['str'][2]);
if ($_GET['del']==3) unset($_SESSION['str'][3]);
if ($_GET['del']==4) unset($_SESSION['str'][4]);
if ($_GET['del']==5) unset($_SESSION['str'][5]);
if ($_GET['del']==6) unset($_SESSION['str'][6]);
if ($_GET['del']==7) unset($_SESSION['str'][7]);
if ($_GET['del']==8) unset($_SESSION['str'][8]);
if ($_GET['del']==9) unset($_SESSION['str'][9]);
if ($_GET['del']==10) unset($_SESSION['str'][10]);
echo "<table>";
echo "<tr>";
for ($i=1; $i<=10; $i++) {
if ($_SESSION['str'][$i]==$url) $bg="bgcolor='#CCCCCC'";
else $bg="bgcolor='#FFFFFF'";
if ($_SESSION['str'][$i]!="" AND $i<=5) echo "<td class='test_menu' $bg> <a href='12.php?".$_SESSION['str'][$i]."'>".$_SESSION['name'][$i]."</a> <sup><a href='12.php?del=$i'>x</a></sup> </td>";
}
echo "</tr>";
echo "</table>";
?>
|
| |
|
|
|
|
|
|
|
для: Ruthless
(22.08.2014 в 11:34)
| | Этого кошмара вообще не надо, тем более в таком написании.
Вы собственно хотите иметь типа меню, которое работает по принципу построчной навигации. Вкладки имеют ссылки, которые вызывают определенную страницу, это и есть содержимое вкладки.
По большому счету JS вообще не требуется для этого, можно решить все только на CSS. Но можно подключить и JS для эффектов.
Ищите в сети "горизонтальные меню", вам нужно выбрать те, что не имеют ветвей (хотя это опционально, так что не страшно). А меню в виде табулятора множество.
Выбирайте нужное, формируйте его (по ресурсам, а не таким извращенным способом), с учетом постраничного вывода (по пять на странице). | |
|
|
|
|
|
|
|
для: confirm
(22.08.2014 в 11:54)
| | Да, таких меню полно, но вот чтобы была горизонтальная прокрутка, нашел только одно такое. В примере оно работает, а вот сам скрипт почему то не работает. И опять же, чтобы существующий скрипт переделать, нужно хоть как-то дружить с javascript, но увы я с ним ну никак...
Спасибо Вам за ответ. | |
|
|
|
|
|
|
|
для: Ruthless
(22.08.2014 в 12:07)
| | Придется подружиться, а прокрутка, это смотря какая - если все меню (все табуляторы) отдается сразу, и просто то, что более 5 скрыто, значит управлять JS. Если это это типа в постраничной навигации стрелки, которые делают запрос к серверу за очередной порцией, то никакого JS не требуется.
Так что выбирайте, а то, что у вас написано, это выкидывать, однозначно. | |
|
|
|
|
|
|
|
для: confirm
(22.08.2014 в 12:44)
| | Эх, если бы это была постраничная навигация, не было бы проблем. Вся засада в том, что тут должны появляться вкладки по нажатию в верхнем меню, а так же удаляться при нажатии на крестик. Вот как в этом примере http://www.webdex.ru/test/ . | |
|
|
|
|
|
|
|
для: Ruthless
(22.08.2014 в 13:23)
| | Что значит появляться - список всех возможных вкладок всегда есть на странице и выбором по нему открывать вкладку? А зачем, не проще ли сразу иметь вкладки?
А стрелочки для сдвига, это если отображаемое меню небольшое, иначе это слишком прокручивать длинную ленту. К тому же если удалять, то зачем вообще прокрутка? | |
|
|
|
|
|
|
|
для: confirm
(22.08.2014 в 13:33)
| | Вот так мой знакомый товарищ заморочился. Мои предложения сделать элементарное выподающее меню слышать не хочет. После чего я весь интернет перерыл и не нашел ничего подобного. Решил спросить тут, на уважаемом мною форуме. Неужто это нельзя никак реализовать.... | |
|
|
|
|
|
|
|
для: Ruthless
(22.08.2014 в 13:41)
| | А что реализовать то?
Я задал вопрос - заголовки создаваемых закладок всегда есть на страницах?
Если да, к чему это все?
Если взять браузер, в котором вы смотрите нечто и выбирая ссылку, открываете ее содержимое в новой вкладке. Все логично.
А где логика в том, что вы показываете? Если это ограниченное количество ресурсов, не знаю что это на самом деле, пусть будут разделы сайта, то зачем эта кухня? Ну создавайте сразу вкладки, зачем их предварительно выбирать в каком-то списке? Охота стрелочек потому что вкладки сразу все не помещаются на странице, это не проблема, но опять таки "не безразмерное" их количество должно быть, иначе...
Это если меню и закладки как элемент дизайна меню, не более, а содержимое каждой закладки, это новый запрос сервера.
А если действительно работа закладок, так табулятор загружает все содержимое, просто отображается содержимое только выбранной закладки, остальное скрыто.
А что вы со своим знакомым хотите сделать, заморачиваясь таким образом, я не знаю. Может лучше начать с описания что это? | |
|
|
|
|
|
|
|
для: confirm
(22.08.2014 в 14:35)
| | Это административная панель для его конторки, где люди могут меняться постоянно. Вот он и заморочился на этом якобы простом варианте для тетенек... Похоже все таки, исходя из беседы с Вами и покопав просторы сети интернет, пойду я изучать Javascript. Может что и выйдет. Спасибо Вам. | |
|
|
|
|
|
|
|
для: Ruthless
(22.08.2014 в 14:51)
| | Нет не выйдет, если речь идет об админке и ее конфигурации под определенных пользователей, если я правильно понял.
Во-первых конфигурацию необходимых панелей (закладок), а вернее в данном случае разделов, с которыми разрешено работать конкретному пользователю, нужно хранить не в сессии, а в базе.
Во-вторых закладки эти выводятся сразу для пользователя, согласно разрешения в базе.
В третьих, если уж и собирать такой пазл, то закладки (разделы) лучше выбирать в списке, значениями которого служат id этих разделов, которые в итоге и записываются в базу как конфигурация для указанного id пользователя. | |
|
|
|
|
|
|
|
для: confirm
(22.08.2014 в 15:38)
| | Первоначально я так и сделал, все id хранятся в MySQL. Я почему засомневался, данный вариант уж больно медленно работает. | |
|
|
|
|
|
|
|
для: Ruthless
(22.08.2014 в 15:48)
| | Ну если и заниматься таким "извратом", то вот этого:
$_SESSION['str'][0]=" ";
$_SESSION['name'][0]=" ";
if ($_GET['str']==1) $_SESSION['str'][1]="str=1"; $_SESSION['name'][1]="Пользователи";
.....
if ($_GET['del']==1) unset($_SESSION['str'][1]);
.....
вообще не должно быть. Есть массивы, и сессия должна содержать массив описывающий набор, а текущее в наборе, это то что пришло запросом и найдено как ключ в этом массиве.
Но это лишено всякого смысла. Ваш знакомый должен видеть в админке список пользователей, и сделать выбор из списка для конкретного пользователя. Этот выбор и записать в базу. Все, что тут мудрить и усложнять, красота нужна?
Красота уж если нужна, в виде закладок, так это уже у пользователя (тетенек), которые работают с разделами. А работают они с ними надо полагать тоже в админке. Так хочется закладки, на здоровье. Вот только тасовать их к чему, если пользователю их определяет администратор? Да и это еще смотря какой объем данных, имеется в виду сложность структуры их, а это и вывод общего списка, групповое/индивидуальное редактирование, добавление параметров, характеристик и прочего, ... И если это так, то закладки в таком случае, это бельмо на глазу, ибо не удобно. | |
|
|
|
|
|
|
|
для: confirm
(22.08.2014 в 16:49)
| | Да, я с Вами полностью согласен, что это лишнее. Просто это черновой вариант, еще не причесанный. Это все нужно, насколько я понял, для красоты и простого взаимодействия. А для тетенек количество закладок всегда будет одинаковым, т.е. администратор не будет их органичивать кому-либо. | |
|
|
|
|
|
|
|
для: Ruthless
(25.08.2014 в 10:15)
| | С чем согласны - не нужной красотой или неудобством?
В админке нужна не красота, а максимум функциональности. Вы убухаете попусту время на макияж, а в итоге окажется, что расчесаться будет не возможно. | |
|
|
|
|
|
|
|
для: confirm
(25.08.2014 в 10:22)
| | Согласен относительно не нужной красоты, да и удобство в таком варианте относительное. В данном случае меня другое удручает, неужто это настолько невыполнимая задача? PHP+MySQL отпадает (жуткие тормоза), а вот PHP+Javascript или PHP+CSS должны же наверное какой то результат дать? Конечно Javascript для меня это дремучий лес, но как я писал выше, похоже пора садиться за книжки... | |
|
|
|
|
|
|
|
для: Ruthless
(25.08.2014 в 15:49)
| | Вы на свой РНР-код посмотрите, ну разве же так задачи решают. Если таким образом писать, то ожидать чего-то хорошего и не стоит.
Но всякие крутилки и прочие навороты на клиенте, это не забота сервера, это прерогатива JavaScript. Написать код управления закладками на нем, это простая задача. Не можете ее решить, берите готовый, тем более, что есть простые, а не под монстров типа jQueryUI, чего вам предлагали.
Вопрос не в этом. Главный вопрос, это что из себя представляет структура данных, которой будет управлять административный раздел, это и будут определять его интерфейс. И если явно вкладки для этого будут не удобны, то стремление их сделать, это пустая трата времени. | |
|
|
|
|
|
|
|
для: confirm
(25.08.2014 в 16:22)
| | Уважаемый confirm я все понял. Действительно, пусть не сервер трудится на клиента, а сам клиент работает на себя. Javascript мне вруки. Спасибо Вам большое за разъяснения и что не оставили без внимания. | |
|
|
|
|
|
|
|
для: Ruthless
(22.08.2014 в 11:34)
| | Типа этого? | |
|
|
|
|
|
|
|
для: Commander
(22.08.2014 в 17:37)
| | Да, типа этого, только нужна еще прокрутка и возможность удалять и по ссылке добавлять вкладки. | |
|
|
|
|
|
|
|
для: Ruthless
(25.08.2014 в 10:17)
| | На тему прокрутки не знаю, а вот добавлять вкладки в jQueryUI можно | |
|
|
|
|
|
|
|
для: Commander
(25.08.2014 в 13:47)
| | Увы, эта самая прокрутка, тоже нужна :( | |
|
|
|
|
|
|
|
для: Commander
(25.08.2014 в 13:47)
| | элементарно и без jQueryUI делаются табы)
напрягает лишний js и куча левого css с этими всеми примочками. | |
|
|
|
|
|
|
|
для: moonfox
(25.08.2014 в 21:25)
| | Зачастую требуется целая куча эффектов. В этом случае проще всего подключить одну тяжелую библиотеку, чем кучу мелких (которые к тому же иногда рассчитаны на древние версии jQuery). | |
|
|
|
|
|
|
|
для: Commander
(26.08.2014 в 04:58)
| | Не городите, что зачастую...
Даже jOuery последний в свете HTML5 и нововведений ECMA теперь можно собрать под свои нужны, и так изначально бы надо было поступить, ибо из него вы даже не всегда 50% используете. | |
|
|
|
|
|
|
|
для: confirm
(26.08.2014 в 08:48)
| | Не городите, что зачастую...
Не городите... Попробуйте найти новоиспеченный сайт, где не было бы десятка JS-библиотек | |
|
|
|
|
|
|
|
для: Commander
(26.08.2014 в 18:59)
| | С дури можно и сотню подцепить, так что это не аргумент. | |
|
|
|
|
|
|
|
для: Commander
(26.08.2014 в 18:59)
| | то что там используется - результат тупости
реально даже подключая целую 1 библиотеку jq
можно получить все то что делают кучи хрени.
и на практике не так уж и сложно, по крайней мере один раз написать для себя.
до недавнего времени использовал UI для табов и для аккордеона...
на практике вышло около 15-20 строк кода для аккордеона и строк 6 для табов в js | |
|
|
|