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

Форум PHP

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

 

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

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

тема: работа с файлами
 
 автор: BARSUKOVA TANJA   (04.04.2007 в 22:54)   письмо автору
 
 

Купила Вашу книгу PHP, начинаю изучать работу с файлами.
Слишком коротко написаны некоторые моменты...
Вот задача не получается.

$file = "test.txt";
$fh = fopen($file, "r+");
// В файле написано число 7. Мне нужно прибавить к нему
// ( не приписать) а прибавить число 3
// Увеличить не на единицу, а именно на 3
fclose($fh);

Подскажите как грамотно это сделать?
Чувствую, тут нужно строковый параметр конвертировать в числовой?
Я это только начинаю постигать. Помогите, плиз!

BARSUKOVA

   
 
 автор: disable   (04.04.2007 в 23:20)   письмо автору
 
   для: BARSUKOVA TANJA   (04.04.2007 в 22:54)
 

php сам конвертирует типы данных.
поэтому можно смело прибавлять строку к числу :)
например
print(3 * "hello" + 2 + TRUE);
выведет 3 :)
что же качается вашей задачи, то

<?php
$file 
"test.txt";
//открываем файл в режиме чтения и записи (хотя зачем тут запись?)
$fh fopen($file"r+");
//читаем строку
$number=fgets($fh);
//изменяем число
$number=$number 3;
//выводим результат
echo $number;
?>

   
 
 автор: BARSUKOVA TANJA   (04.04.2007 в 23:25)   письмо автору
 
   для: disable   (04.04.2007 в 23:20)
 

да, но сам файл не обновится тогда, если вывести эхо.
Нужно, чтобы в нём сохранилось уже новое число для дальнейшей работы.

   
 
 автор: Disable   (04.04.2007 в 23:29)   письмо автору
 
   для: BARSUKOVA TANJA   (04.04.2007 в 23:25)
 

а можно поступить еще проще:

echo file_get_contents('test.txt') + 3;

почитайте внимательно книжку про запись в файл :)

   
 
 автор: BARSUKOVA TANJA   (04.04.2007 в 23:58)   письмо автору
 
   для: Disable   (04.04.2007 в 23:29)
 

Но как всё-таки сохранить обновлённый файл?
Вот в чём вопрос...
Подскажите новичку...

   
 
 автор: bronenos   (05.04.2007 в 00:12)   письмо автору
 
   для: BARSUKOVA TANJA   (04.04.2007 в 23:58)
 

<?
$number 
file_get_contents ($file);
fwrite (fopen($file'w'), $number+3);
?>

   
 
 автор: BARSUKOVA TANJA   (05.04.2007 в 00:28)   письмо автору
 
   для: bronenos   (05.04.2007 в 00:12)
 

И это всё?
Всего двумя строчками это можно решить?

   
 
 автор: bronenos   (05.04.2007 в 00:33)   письмо автору
 
   для: BARSUKOVA TANJA   (05.04.2007 в 00:28)
 

тремя
первая: $file = 'test.txt';
можно было бы и двумя, если бы был у вас PHP5

   
 
 автор: BARSUKOVA TANJA   (05.04.2007 в 01:18)   письмо автору
 
   для: bronenos   (05.04.2007 в 00:33)
 

Короче... Проблема тут...

<?
$file = "test.txt";
$number = file_get_contents ($file);
fwrite (fopen($file, 'w'), $number+3);
fclose($file);
exit;
?>

Скрипт работает нормально. прибавляет в текстовый файл число 3 каждый раз.
Но одновременно вылазит ошибка:
Warning: fclose(): supplied argument is not a valid stream resource
Что бы это значило?

   
 
 автор: cheops   (05.04.2007 в 01:33)   письмо автору
 
   для: BARSUKOVA TANJA   (05.04.2007 в 01:18)
 

Дело в том, что файловые функции требуют в качестве первого параметра файловый дескриптор, а в функцию fclose() вы вместо него передаёте название файла. Скрипт лучше переписать следующим образом
<? 
  $file 
"test.txt"
  
$number file_get_contents ($file); 
  
$fd fopen($file'w');
  if(
$fd)
  {
    
fwrite ($fd$number+3); 
    
fclose($fd);
  }
?>

   
Rambler's Top100
вверх

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