[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: считывание данных из файла
Vikt0r
Помогите, пожалуйста!

не могу разобраться в скрипте... в общем есть у нас 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

но это еще не все sad.gif

проблема у меня заключается в том, что эти данные будут редактироваться, а значит в <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>

// то есть не должно быть повторных чисел (групп) в списке.

надеюсь поняли мою логику.

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

PHP
<?
$file = file('group.dat'); 
$file2 
= file('base.dat');

for(
$k=0; $k<count($file2); $k++)
{
$k_exp = explode("|", $file2[$k]);

$f_arr = explode(",", $k_exp[0]);

foreach(
$f_arr as $nm)
{

for(
$i=0; $i<count($file); $i++)
{
$i_exp = explode("|", $file[$i]);

if(
$nm == "$i_exp[0]")
{
print "$nm";
}

//// когда делаешь } else { print "$nm" } - идет полное нарушение скрипта из-за многочисленного цикла, то есть отображаются данные в нескольких копий, вместо 3, 4, 8   - 3, 4, 8 3, 4, 8 3, 4, 8 ///////

}
}
}


Очень расчитываю на вашу помощь!!!!!!!!!!

Заранее благодарю!!



Спустя 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 написал(а):
Да нет - не очень smile.gif :
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 написал(а):
Я не понял ничего
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.