Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Работа с файлом

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Serhio_666
Отправлено: 28 Июня, 2013 - 12:53:03
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




День добрый.
Есть файл с двумя строчками (год и месяц)
2013
11
Есть код, при выполнении которого значение месяца увеличивается на 1 и если равно 12, то присваивается значение 0 и год увеличивается на 1. И все это пишем обратно в файл.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <?php
  3. $file_array = file("counter.txt");
  4.  
  5. $god=$file_array[0];
  6. $mes=$file_array[1];
  7.  
  8. $mes=$mes+1;
  9.  
  10. if ($mes==12) {$mes=0; $god=$god+1; }
  11.  
  12. $fp = fopen("counter.txt", "w+");
  13. $test = fwrite($fp, $god);
  14. $test2 = fwrite($fp, $mes);
  15. fclose($fp);
  16.  
  17. ?>
  18.  


Так вот, после того, как значение месяца стало 0, в файл пишется 0 не на следующей строке, а рядом с годом

20140

И соответственно все перестает работать. Подскажите где ошибка?
 
 Top
LCarlo
Отправлено: 28 Июня, 2013 - 12:59:06
Post Id



Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Окт. 2011  


Помог: 0 раз(а)




Для того, чтобы сделать перенос строки, используйте "\r\n".

(Отредактировано автором: 28 Июня, 2013 - 13:00:06)

 
 Top
VenZell
Отправлено: 28 Июня, 2013 - 13:02:43
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




 
 Top
dubasua
Отправлено: 28 Июня, 2013 - 13:05:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file_array = file("counter.txt");
  3.  
  4. $god=$file_array[0];
  5. $mes=$file_array[1];
  6.  
  7.  
  8. if ($mes==12) {$mes=0; $god=$god+1; }
  9.  
  10. $fp = fopen("counter.txt", "w+");
  11. $test = fwrite($fp, "{$god}\r\n");
  12. $test2 = fwrite($fp, $mes);
  13. fclose($fp);
  14.  
  15. ?>
 
 Top
Serhio_666
Отправлено: 28 Июня, 2013 - 13:07:41
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




LCarlo
не срабатывает. как только значение месяца 0 - сбой
VenZell
так появляется точка между значениями.

Я предполагаю, что сбой именно в значении месяца 0.
(Добавление)
dubasua у вас месяц вообще не увеличивает значение. добавил строку. после выполнения
2014
0
выполняем еще раз
2014

1

И соответственно следующий раз не работает.
 
 Top
dubasua
Отправлено: 28 Июня, 2013 - 13:12:54
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file_array = file("counter.txt");
  3.  
  4. $god=(int)$file_array[0];
  5. $mes=(int)$file_array[1]++;
  6.  
  7. if ($mes==12) {$mes=0; $god=$god++; }
  8.  
  9. $str = "{$god}\r\n{$mes}";
  10. file_put_contents( 'counter.txt', $str )
  11.  
  12. ?>

(Отредактировано автором: 28 Июня, 2013 - 13:14:03)

 
 Top
Serhio_666
Отправлено: 28 Июня, 2013 - 13:15:13
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




dubasuaВообще не записывает Улыбка
 
 Top
dubasua
Отправлено: 28 Июня, 2013 - 13:17:14
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




П..ц
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $file_array = file("counter.txt");
  3.  
  4. $god=(int)$file_array[0];
  5. $mes=(int)$file_array[1]++;
  6.  
  7. if ($mes==12) {$mes=0; $god=$god++; }
  8.  
  9. $str = "{$god}\r\n{$mes}";
  10. file_put_contents( 'counter.txt', $str );
  11.  
  12. ?>
 
 Top
Serhio_666
Отправлено: 28 Июня, 2013 - 13:22:26
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




dubasua
не злитесь. строка

CODE (htmlphp):
скопировать код в буфер обмена
  1. $mes=(int)$file_array[1]++;


не увеличивает значение месяца.
 
 Top
dubasua
Отправлено: 28 Июня, 2013 - 13:25:07
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




Короче, это все равно был косяковый вариант, нужно примерно вот так
PHP:
скопировать код в буфер обмена
  1. $data = explode ( "\n", file_get_contents( 'counter.txt' ) );
  2. $data = array_diff( $data, array( '' ) );
  3. if ( ++$data[1] == 12 ) {
  4.    $data[0]++;
  5.    $data[1] = 0;
  6. }
  7. file_put_contents( 'counter.txt', "{$data[0]}\n{$data[1]}" );

(Отредактировано автором: 28 Июня, 2013 - 13:26:26)

 
 Top
Serhio_666
Отправлено: 28 Июня, 2013 - 13:31:24
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




dubasua
вы будете смеяться, но теперь не увеличивается значение год $data[0]++Улыбка

(Отредактировано автором: 28 Июня, 2013 - 13:32:11)

 
 Top
dubasua
Отправлено: 28 Июня, 2013 - 13:34:42
Post Id



Посетитель


Покинул форум
Сообщений всего: 454
Дата рег-ции: Апр. 2012  


Помог: 7 раз(а)




Ну я думаю, дальше Вы и сами разберетесь.
 
 Top
Serhio_666
Отправлено: 28 Июня, 2013 - 13:36:23
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Июнь 2013  


Помог: 0 раз(а)




странно, что не срабатывает "++" а "+1" все работает замечательно. В любом случае, большое спасибо за помощь

может кому пригодится. код рабочий
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.    $data = explode ( "\n", file_get_contents( 'counter.txt' ) );
  3.    $data = array_diff( $data, array( '' ) );
  4.    if ( ++$data[1] == 12 ) {
  5.       $data[0] = $data[0]+1;
  6.       $data[1] = 0;
  7.    }
  8.    file_put_contents( 'counter.txt', "{$data[0]}\n\r{$data[1]}" );
  9. ?>

(Отредактировано автором: 28 Июня, 2013 - 13:38:26)

 
 Top
VenZell
Отправлено: 28 Июня, 2013 - 13:39:26
Post Id


Частый гость


Покинул форум
Сообщений всего: 237
Дата рег-ции: Июнь 2013  


Помог: 12 раз(а)




upd: Я буду обновлять страницу, перед тем как написать ответ...
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if (file_exists("counter.txt")){
  3.     $file_array = explode(PHP_EOL, file_get_contents("counter.txt"));
  4.     $god = (int)$file_array[0];
  5.     $mes = (int)$file_array[1] + 1;
  6.     if ($mes == 12) {$mes=0; $god = $god+1;}
  7.     file_put_contents("counter.txt", $god . PHP_EOL . $mes);
  8. }
  9. else {echo "Файл не существует!";}
  10. ?>

(Отредактировано автором: 28 Июня, 2013 - 13:40:46)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB