Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13

Сортировка выпадающего списка

21.10.2013, 14:30. Показов 2954. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот подскажите, есть функция выборки папок, нужно этот список чтоб выводил отсортированным по алфавиту. скажите так я сделал или нет:
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Function recursive($sPath,$sPath_base,$sName)
    {
    global $sBase0;
    global $sBase1;
    global $sBase2;
    global $sBase3;
    global $currFolder;
    $arr = array();
 
    if($sPath==$sBase0 ||$sPath==$sBase1 ||$sPath==$sBase2 ||$sPath==$sBase3)
        {
        if($currFolder==$sPath)
            echo "<option value='$sPath' selected>$sName</option>";
        else
            echo "<option value='$sPath'>$sName</option>";
        }
        
    $oItem=opendir($sPath);   
    while($sItem=readdir($oItem)) 
        {   
        if($sItem=="."||$sItem=="..") 
            {
            } 
        else 
            { 
            $sCurrent=$sPath."/".$sItem;
            $fIsDirectory=is_dir($sCurrent);
            
            $sDisplayed=ereg_replace($sBase0,"",$sCurrent);
            if($sBase1<>"") $sDisplayed=ereg_replace($sBase1,"",$sDisplayed);
            if($sBase2<>"") $sDisplayed=ereg_replace($sBase2,"",$sDisplayed);
            if($sBase3<>"") $sDisplayed=ereg_replace($sBase3,"",$sDisplayed);
            $sDisplayed=$sName.$sDisplayed;
            
// **** Добавлено !!!
            if($fIsDirectory) 
                {
                if($currFolder==$sCurrent)
                    $arr[$i]=$sDisplayed;
                    $i++;
                     
                recursive($sCurrent,$sPath,$sName);
                }   
            sort($arr);
// **** Добавлено !!!
            
            /*if($fIsDirectory) 
                {
                if($currFolder==$sCurrent)
                    echo "<option value='$sCurrent' selected>$sDisplayed</option>";
                else
                    echo "<option value='$sCurrent'>$sDisplayed</option>";
                     
                recursive($sCurrent,$sPath,$sName);
                }       */
            } 
        } 
 
// **** Добавлено !!!
//вывод массива отсортированного        
     for($i=0; $i < count($arr); $i++)
   {
      echo ("<option value='$sCurrent' selected>$arr[$i]</option>  ");
   }
// **** Добавлено !!!
 
    closedir($oItem); 
    }
выделено то,что я добавила, а в коментариях,то что было.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.10.2013, 14:30
Ответы с готовыми решениями:

Выбор из выпадающего списка
Есть массив: $arr = array('Имена' =&gt; array('Вася','Маша','Петя'), 'Фамилии' =&gt; array('Иванов','Петров','Сидоров')); ...

Обработка выпадающего списка
Вот форма выпадающего списка.Нужно чтоб она передала файлу search.php значение - страну.А она не передаёт,в чём дело? &lt;select...

Выбор из выпадающего списка
Выпадающий список формируется из бд.мне нужно,чтобы пользователь выбрал фамилию а в бд сохранялся id. Как это сделать? &lt;td&gt;...

20
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 10:34  [ТС]
че ни у кого нет предложений?((
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
23.10.2013, 12:04
Rysya, ну вы проверьте, работает или нет?
1
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 12:21  [ТС]
Цитата Сообщение от sMockingbird Посмотреть сообщение
Rysya, ну вы проверьте, работает или нет?
то что не работает это и так понятно)) но проверила)
кинула 2 скрина. там где папки есть это как было. когда свое добавила папки вообще пропали. либо с выводом тогда что-то не так..либо одно из двух...
Миниатюры
Сортировка выпадающего списка   Сортировка выпадающего списка  
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
23.10.2013, 12:26
PHP
1
for($i=0; $i < count($arr); $i++)
попробуйте перед этим кодом добавить

PHP
1
?><pre><?print_r($arr);?></pre><?
и посмотрите, отобразит что нибудь или нет
1
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 12:34  [ТС]
неа. не выводит. тот же результат что и на скрине
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
23.10.2013, 13:31
PHP
1
2
3
4
5
if($fIsDirectory) 
{
if($currFolder==$sCurrent)
$arr[$i]=$sDisplayed;
$i++;
если уберёте проверку, т.е.

PHP
1
2
3
4
if($fIsDirectory) 
{
$arr[$i]=$sDisplayed;
$i++;
то будет наверное норм.


PHP
1
2
3
4
5
6
7
8
9
/*if($fIsDirectory) 
{
if($currFolder==$sCurrent)
echo "<option value='$sCurrent' selected>$sDisplayed</option>";
else
echo "<option value='$sCurrent'>$sDisplayed</option>";
 
recursive($sCurrent,$sPath,$sName);
}    */
Вот тут он у Вас проверял, если $currFolder=$sCurrent то пункт меню активный, а если нет, то не активный. А Вы в итоге добавляете только один, активный

PHP
1
2
3
4
5
if($fIsDirectory) 
{
if($currFolder==$sCurrent)
$arr[$i]=$sDisplayed;
$i++;
Ну это если я правильно всё понял)
1
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 13:44  [ТС]
вот если убрать проверку
PHP
1
2
3
4
if($fIsDirectory) 
{
$arr[$i]=$sDisplayed;
$i++;
тогда выводит отсортированным,но не открывает их. точнее открывает х пойми в каком порядке ((( выбираешь одно,открывает другое.
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
23.10.2013, 13:54
Код страницы посмотрите, что у Вас тут
PHP
1
<option value='$sCurrent' selected>$arr[$i]</option>
В частности меня значение value интересует, что подставляет туда?

Добавлено через 1 минуту
[PHP]
PHP
1
2
3
4
5
6
7
8
9
10
11
if($fIsDirectory) 
{
if($currFolder==$sCurrent)
$arr[$i]="<option value='$sCurrent' selected>$sDisplayed</option>";
else
$arr[$i]="<option value='$sCurrent'>$sDisplayed</option>";
$i++;
 
recursive($sCurrent,$sPath,$sName);
}   
sort($arr);
Может так попробовать?

Добавлено через 3 минуты
//вывод массива отсортированного
PHP
1
2
3
4
for($i=0; $i < count($arr); $i++)
{
echo $arr[$i];
}
в конце тогда вот так
1
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 14:01  [ТС]
я так понимаю,что это путь до папки
PHP
1
$sCurrent=$sPath."/".$sItem;
когда выбираешь папку ,он прописывает путь ее
Миниатюры
Сортировка выпадающего списка  
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 14:06  [ТС]
УРААА!! ЗАРАБОТАЛО!!! все правильно выводит и все правильно показывает)))
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 14:17  [ТС]
Цитата Сообщение от sMockingbird Посмотреть сообщение
PHP
1
for($i=0; $i < count($arr); $i++)
попробуйте перед этим кодом добавить

PHP
1
?><pre><?print_r($arr);?></pre><?
и посмотрите, отобразит что нибудь или нет
Цитата Сообщение от sMockingbird Посмотреть сообщение
Код страницы посмотрите, что у Вас тут
PHP
1
<option value='$sCurrent' selected>$arr[$i]</option>
В частности меня значение value интересует, что подставляет туда?

Добавлено через 1 минуту
[PHP]
PHP
1
2
3
4
5
6
7
8
9
10
11
if($fIsDirectory) 
{
if($currFolder==$sCurrent)
$arr[$i]="<option value='$sCurrent' selected>$sDisplayed</option>";
else
$arr[$i]="<option value='$sCurrent'>$sDisplayed</option>";
$i++;
 
recursive($sCurrent,$sPath,$sName);
}   
sort($arr);
Может так попробовать?

Добавлено через 3 минуты
//вывод массива отсортированного
PHP
1
2
3
4
for($i=0; $i < count($arr); $i++)
{
echo $arr[$i];
}
в конце тогда вот так
еще можно попутный вопрос ?)
как отменить дубликацию? проверку задвать? на что?
Миниатюры
Сортировка выпадающего списка  
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 14:27  [ТС]
причем, до этого дубликации не было. а внезависимости от кол-ва папок внутри каждой выводит только 2 раза.
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
23.10.2013, 14:33
Rysya, хм, надо подумать.
Как вариант, можно попробовать использовать

PHP
1
$result = array_unique($arr);
и выводить потом
PHP
1
2
3
4
for($i=0; $i < count($result); $i++)
{
echo $result[$i];
}
Может поможет. Но вообще надо разобраться откуда дубли. Почему только первые три значения продублировались? Остальные откуда, список весь тут формировался?
0
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 14:55  [ТС]
Цитата Сообщение от sMockingbird Посмотреть сообщение
Rysya, хм, надо подумать.
Как вариант, можно попробовать использовать

PHP
1
$result = array_unique($arr);
и выводить потом
PHP
1
2
3
4
for($i=0; $i < count($result); $i++)
{
echo $result[$i];
}
Может поможет. Но вообще надо разобраться откуда дубли. Почему только первые три значения продублировались? Остальные откуда, список весь тут формировался?
вроде весь сформировался. ток че-т не понятно. почему оно Pishevoe_oborudovanie с папками в начало списка перекинуло. хотя все остальные со своими подпапками вроде нормально сортируются.
проблема с цифрами? из-за них?

Добавлено через 8 минут
не помогло. дубликация осталась.
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
23.10.2013, 14:58
Скиньте ещё раз весь код, может где то то ошибка затесалась)
Почему пищевое в начало - не знаю, надо думать ещё)
1
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 15:01  [ТС]
Цитата Сообщение от sMockingbird Посмотреть сообщение
Скиньте ещё раз весь код, может где то то ошибка затесалась)
Почему пищевое в начало - не знаю, надо думать ещё)
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
Function recursive($sPath,$sPath_base,$sName)
    {
    global $sBase0;
    global $sBase1;
    global $sBase2;
    global $sBase3;
    global $currFolder;
    $arr = array();
 
    if($sPath==$sBase0 ||$sPath==$sBase1 ||$sPath==$sBase2 ||$sPath==$sBase3)
        {
        if($currFolder==$sPath)
            echo "<option value='$sPath' selected>$sName</option>";
        else
            echo "<option value='$sPath'>$sName</option>";
        }
        
    $oItem=opendir($sPath);   
    while($sItem=readdir($oItem)) 
        {   
        if($sItem=="."||$sItem=="..") 
            {
            } 
        else 
            { 
            $sCurrent=$sPath."/".$sItem;
            $fIsDirectory=is_dir($sCurrent);
            
            $sDisplayed=ereg_replace($sBase0,"",$sCurrent);
            if($sBase1<>"") $sDisplayed=ereg_replace($sBase1,"",$sDisplayed);
            if($sBase2<>"") $sDisplayed=ereg_replace($sBase2,"",$sDisplayed);
            if($sBase3<>"") $sDisplayed=ereg_replace($sBase3,"",$sDisplayed);
            $sDisplayed=$sName.$sDisplayed;
            
                if($fIsDirectory) 
                                 {
                                 if($currFolder==$sCurrent)
                                 $arr[$i]="<option value='$sCurrent' selected>$sDisplayed</option>";
                                else
                                 $arr[$i]="<option value='$sCurrent'>$sDisplayed</option>";
                        $i++;
 
recursive($sCurrent,$sPath,$sName);
}   
sort($arr);     
            
            /*if($fIsDirectory) 
                {
                if($currFolder==$sCurrent)
                    echo "<option value='$sCurrent' selected>$sDisplayed</option>";
                else
                    echo "<option value='$sCurrent'>$sDisplayed</option>";
                     
                recursive($sCurrent,$sPath,$sName);
                }       */      
            } 
        } 
$result = array_unique($arr);
//вывод массива отсортированного
?><pre><?print_r($arr);?></pre><?
        
     for($i=0; $i < count($result); $i++)
{
echo $result[$i];
}   closedir($oItem); 
    }
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
23.10.2013, 15:17
Rysya,

PHP
1
?><pre><?print_r($arr);?></pre><?
это уберите, это ж для проверки было)
1
0 / 0 / 0
Регистрация: 21.10.2013
Сообщений: 13
23.10.2013, 15:31  [ТС]
Цитата Сообщение от sMockingbird Посмотреть сообщение
Rysya,

PHP
1
?><pre><?print_r($arr);?></pre><?
это уберите, это ж для проверки было)
аха! дубликация ушла))
0
284 / 283 / 73
Регистрация: 06.05.2013
Сообщений: 1,613
23.10.2013, 15:43
Rysya,

Не по теме:

:D
Поздравляю тогда)

1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
23.10.2013, 15:43
Помогаю со студенческими работами здесь

Обработка выпадающего списка
Добрый день. Никак не получается объединить два условия. Есть два списка: 1) список логинов пользователей (заполняется из бд...

Формирование выпадающего списка
Добрый день. Помогите, пожалуйста. В БД есть таблица приёма, где есть поле дата, время, имя. Через форму PHP пользователь записывается на...

Формирование выпадающего списка
Здравствуйте!!! Помогите разобраться с формой в php... Нужно чтобы при выборе одного из пунктов выпадающего списка формировался другой...

Значения выпадающего списка
Есть выпадающий список который заполняется с таблицы mysql, как записать выбранные значения в выпадающем списке в другую таблицу? В списке,...

Не выводит значения выпадающего списка
Здравствуйте! Проблема такова: хочу сделать выпадающий список со значениями. Значения формируются в цикле, но они не выводятся....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru