Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: хранение в файлах
 
 автор: P@Sol   (25.07.2005 в 12:44)   письмо автору
 
 

из-за того что решил хранить данные в файле, появилось два вопроса. Вид файла:
12,12:31,16:31,4:00
15,9:00,17:30,8:30

1. Как получить разность между, для примера, 16:31 и 12:31 (или 17:30 и 9:00), чтобы получить значение 4:00 (8:30)

2. как сделать, если есть запись вида
12,12:31,16:31,4:00
и скрипт был запущен еще раз (допустим в 17:01), строка поменяла вид на
12,12:31,17:01,4:30

   
 
 автор: cheops   (25.07.2005 в 12:54)   письмо автору
 
   для: P@Sol   (25.07.2005 в 12:44)
 

1) Хм... с таким форматом не очень удобно иметь дело, так как непонятно как вычислять разницу когда время находится в разных сутках - здесь нужно бы хранить дату в виде секунд, прошедших с полуночи 1 января 1970 года.
2) Не очень понятно почему время 4:00 меняется на 4:30...

   
 
 автор: P@Sol   (25.07.2005 в 13:10)   письмо автору
 
   для: cheops   (25.07.2005 в 12:54)
 

1. время всегда в пределах одних сутков.
2. потому что....формат текста в файле:
число,время начала,время конца,разница во времени между концом и началом

   
 
 автор: P@Sol   (25.07.2005 в 13:59)   письмо автору
 
   для: P@Sol   (25.07.2005 в 13:10)
 

1. сделал так:
<?
$time 
explode(":",$number[1]);
        
$hour date("H");
        
$min date("i");

        
$hour_n=$hour-$time[0];
        
$min_n=$min-$time[1];
        if (
$min_n 0)
        {
                
$hour_n-=1;
                
$min_n+=60;
        }
        if (
$min_n 10$min_n="0".$min_n;
        echo 
"$hour_n:$min_n";

   
 
 автор: cheops   (25.07.2005 в 14:07)   письмо автору
 
   для: P@Sol   (25.07.2005 в 13:59)
 

1. Да, примерно такое же что-то хотел предложить :)
2. А строки в файле заканчиваются на \r\n или на \n?

   
 
 автор: P@Sol   (25.07.2005 в 14:15)   письмо автору
 
   для: cheops   (25.07.2005 в 14:07)
 

на /n...а для чего /r?

   
 
 автор: Akira   (25.07.2005 в 14:54)   письмо автору
 
   для: P@Sol   (25.07.2005 в 14:15)
 

В разный ОС разные символы окончания строки.
В windows - это \n
В unix - это \n\r
В macos - это \r
Как я узнал, для лучшей портартированности надо использовать "\n\r"

   
 
 автор: P@Sol   (25.07.2005 в 15:13)   письмо автору
 
   для: Akira   (25.07.2005 в 14:54)
 

как скажите;) - спаисбо

   
 
 автор: Евгений Петров   (27.07.2005 в 18:32)   письмо автору
 
   для: Akira   (25.07.2005 в 14:54)
 

Немного не так:
В Windows - \r\n
В Unix - \n
В MacOS - \n\r

   
 
 автор: isset   (27.07.2005 в 18:39)   письмо автору
 
   для: Евгений Петров   (27.07.2005 в 18:32)
 

Еще один :)

\r\n в Windows
\n в Unix
\r на Macintosh'ах. 

   
 
 автор: isset   (27.07.2005 в 18:40)   письмо автору
 
   для: isset   (27.07.2005 в 18:39)
 

Ой, наверно я туплю , в макос вроде действительно \n\r

   
 
 автор: P@Sol   (25.07.2005 в 15:14)   письмо автору
 
   для: P@Sol   (25.07.2005 в 13:10)
 

2. пытаюсь решить так
<?
if ($id != "") {
    
$id--;
    
$file=file("file.txt"); 

    for(
$i=0;$i<sizeof($file);$i++)
        if(
$i==$id) unset($file[$i]); 

    
$fp=fopen("file.txt","w"); 
    
fputs($fp,implode("",$file)); 
    
fclose($fp);
    }
?>


   
 
 автор: P@Sol   (25.07.2005 в 15:44)   письмо автору
 
   для: P@Sol   (25.07.2005 в 12:44)
 

<?
$arr 
file("bd/".date("Y")."/".date("n")."/bd.mrv");
        
// &#194; &#246;&#232;&#234;&#235;&#229; &#239;&#240;&#238;&#232;&#231;&#226;&#238;&#228;&#232;&#236; &#240;&#224;&#231;&#225;&#238;&#240; &#234;&#224;&#230;&#228;&#238;&#233; &#241;&#242;&#240;&#238;&#234;&#232;
        
$k count($arr)-1;

        for (
$l=0;$l<=$k;$l++)
        echo 
$arr[$l]."<br>";

        
$number explode(",",$arr[$k]);

        if (
$number[0] == date("j"))
        {
                
$arr[$k] = "$number[0],$number[1],".date("H:i").",";
                
$text implode(""$arr);
        }
        else 
$text date("H:i").",";

        
$time explode(":",$number[1]);
        
$hour date("H");
        
$min date("i");

        
$hour_n=$hour-$time[0];
        
$min_n=$min-$time[1];
        if (
$min_n 0)
        {
                
$hour_n-=1;
                
$min_n+=60;
        }
        if (
$min_n 10$min_n="0".$min_n;
        
$time_n "$hour_n:$min_n";

        
$text2 $text.$time_n."\n\r";

        
$fp fopen("bd/".date("Y")."/".date("n")."/bd.mrv","w");
        
flock($fp2);

        if (!
$fp)
        {
                echo 
"&#206;&#248;&#232;&#225;&#234;&#224; &#238;&#242;&#234;&#240;&#251;&#242;&#232;&#255; &#244;&#224;&#233;&#235;&#224;";
                return 
false;
        }

        
fwrite($fp$text2);
        
flock($fp3);
        
fclose($fp);

вот что получилось....работает единожды:( потом, есл инажать ф5 - стирает весь файл и записывает только текущее время

update: похоже при перезаписи создается пустая строка:(

   
 
 автор: P@Sol   (25.07.2005 в 16:00)   письмо автору
 
   для: P@Sol   (25.07.2005 в 15:44)
 

из-за того что вместо \n стал использовать \n\r - появилась пустая строка...из-за этого отказался от использования \r

   
 
 автор: isset   (27.07.2005 в 18:21)   письмо автору
 
   для: P@Sol   (25.07.2005 в 16:00)
 

Правильно, появляется, потому что:

 \r\n в Windows
 \n в Unix 
 \r на Macintosh'ах.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования