Помогите, пожалуйста!
не могу разобраться в
скрипте... в общем есть у нас 2 файла, назовем их group.dat и base.dat.
содержимое group.dat:
1|группа #1|
2|группа #2|
3|группа #3|
4|группа #4|
5|группа #5|
6|группа #6|
7|группа #7|
8|группа #8|
и содержимое base.dat - строки которые отправляются и записываются через form ! (последняя ячейка, это выбор значений через Select Multiple).
text 1|text 2|text 3|1,2|
text 1|text 2|text 3|3,4,8|
text 1|text 2|text 3|2|
text 1|text 2|text 3|1,4,7|
нужно, чтобы когда выводилась информация на сайте
text 1 - text 2 - text 3 - 1, 2 - то вместо select 1,2 показывались имена группы......
то есть сделать цикл base.dat, и содержимое group.dat, и сделать условие, если такое-то число из
базы равняется такому-то числу из группы, значит получаем такое-то название из группы, пример:
возьмем строку: text 1|text 2|text 3|3,4,8| , видим из них числа 3, 4, 8 - оно должно сравнится с базой и показать название: группа #3, группа #4, группа #8
но это еще не все

проблема у меня заключается в том, что эти данные будут редактироваться, а значит в <OPTION> должны быть не только те числа, которые записаны в базе (3, 4, 8), но и отображались остальные из файла групп (group.dat)... чтобы можно было перевыбрать эти значения на новые...
пример:
есть у нас строка text 1|text 2|text 3|3,4,8| берем из нее эти числа
// здесь отображаются те, которые занесены в базу
<option value='3'>группа №3</option>
<option value='4'>группа №4</option>
<option value='8'>группа №8</option>
// а дальше отображение остальных для перевыбора из групп
<option value='1'>1</option>
<option value='2'>2</option>
<option value='5'>5</option>
<option value='6'>6</option>
<option value='7'>7</option>
// то есть не должно быть повторных чисел (групп) в списке.
надеюсь поняли мою логику.
у меня есть свои наброски. но они показывают только те данные, которые занесены в базу ! но не показывают остальные из групп, что не дает возможности перевыбора......
скрипт не правильный, но может поможет вам увидеть как работает или подсказать чего не хватает..
Очень расчитываю на вашу помощь!!!!!!!!!!
Заранее благодарю!!
Спустя 3 часа, 36 минут, 16 секунд (31.03.2009 - 00:34) twin написал(а):
Не совсем понятно что тут нужно, но вот направление:
PHP |
<select> <? $file = file('group.dat'); $file2 = file('base.dat');
foreach($file2 as $str2) { $k_exp = explode("|",$str2); $f_arr = explode(",",$k_exp[3]);
foreach($file as $str) { $i_exp = explode("|", $str); if(in_array($i_exp[0],$f_arr)) echo '<option value="'.$i_exp[0].'">'.$i_exp[1].'</option>'; else echo '<option value="'.$i_exp[0].'">'.$i_exp[0].'</option>'; } } <select><? |
Спустя 13 часов, 48 минут, 55 секунд (31.03.2009 - 14:23) Vikt0r написал(а):
Огромное спасибо!!!!!!!! вышло как и хотел.
Спустя 3 часа, 18 минут, 17 секунд (31.03.2009 - 17:41) Vikt0r написал(а):
Подскажите, как еще можно организовать, чтобы скрипт показывал название группы, потом перечисление, то есть:
есть группы
Код |
1|группа #1| 2|группа #2| 3|группа #3| 4|группа #4| 5|группа #5| 6|группа #6| 7|группа #7| 8|группа #8| |
и база
Код |
Вася|text 2|text 3|1,2| Петя|text 2|text 3|3,4,8| Коля|text 2|text 3|2,4,7| Саша|text 2|text 3|1,4,7| |
Вася относится к первой и второй группе
Петя относится к 3, 4, 8 группе....
и
т.д.
должен скрипт показать следующее:
Цитата |
Группа #1
Вася Саша
Группа #2
Вася Петя Коля
Группа #3
Петя
Группа #4
Петя Коля Саша
Группа #5
Группа #6
Группа #7
Коля Саша
Группа #8
Петя |
Спустя 40 минут, 3 секунды (31.03.2009 - 18:21) twin написал(а):
Это нужно в селектах или просто на экран?
Спустя 3 минуты, 33 секунды (31.03.2009 - 18:24) Vikt0r написал(а):
то было для администрирования выбор из select, а это просто вывод этих же данных на экран в виде текста....
то есть берем готовые данные из файла и выводим значения по группам.
по идее же там незначенительные изменения в скрипте?
Спустя 1 час, 4 минуты, 53 секунды (31.03.2009 - 19:29) twin написал(а):
Да нет - не очень

:
PHP |
<? $file = file('group.dat'); $file2 = file('base.dat');
foreach($file as $str) { $i_exp = explode("|", $str); $oboltus = array(); foreach($file2 as $str2) { $k_exp = explode("|",$str2); $f_arr = explode(",",$k_exp[3]); if(in_array($i_exp[0],$f_arr)) { $group = $i_exp[1]; $oboltus[] = $k_exp[0]; } } echo (count($oboltus)>0)?'<b>'.$group.'</b><br>'.implode('<br>',$oboltus).'<br>':NULL;
}
|
Спустя 1 год, 11 месяцев, 27 дней, 42 минуты, 41 секунда (28.03.2011 - 20:12) k1-801 написал(а):