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

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

 

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

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

тема: Ответ 007 на задачу N 3
 
 автор: SoftTime   (05.02.2006 в 00:03)   письмо автору
 
 

Ответ 007 на задачу N 3.
С условиями задачи можно ознакомится по ссылке.
index.php:

<?php
$file 
'data.txt';
// Если все записано, то сообщаем пользователю
if(isset($_GET['ok'])) { echo "Запись добавлена"; }
if(
file_exists($file) && is_readable($file)) {
    
// Проверяем существует ли дата
    
$dates file($file);
    if(
count($dates) > 0) {
        
// Очищаем от мусора
        
$dates array_map('trim'$dates);
        
// Заполняем форму
        
$date explode("-"$dates[0]);
        
$time explode(":"$dates[1]);
    } else {
        
// Если дата не записана, заполняем самостоятельно
        
$date = array(date("Y"), date("m"), date("d"));
        
$time = array(date("H"), date("i"));
    }
} else {
    echo 
"Ошибка чтения файла '" $file "'.";
}
?>
<br>
<form action="handler.php" method="POST">
<input type="text" name="date[]" size="4" value="<?php echo $date[0]; ?>"> -
<input type="text" name="date[]" size="1" value="<?php echo $date[1]; ?>"> -
<input type="text" name="date[]" size="1" value="<?php echo $date[2]; ?>">
<input type="text" name="time[]" size="1" value="<?php echo $time[0]; ?>"> :
<input type="text" name="time[]" size="1" value="<?php echo $time[1]; ?>">
<input type="submit" value="ok">
</form>


handler.php:

<?php
// Разделить для даты
define('DATA_DELIM''-');
// Разделить для времени
define('TIME_DELIM'':');
$file 'data.txt';
$error 0;
if(
file_exists($file) && is_writable($file)) {
    if(isset(
$_POST['date']) && isset($_POST['time'])) {
      
$fp fopen($file"w");
      
$date $_POST['date'];
      
$time $_POST['time'];
      
// Проверка даты
      
if(!checkdate($date[1], $date[2], $date[0])) {
          echo 
"Неправильно заполнена дата.<br>";
          
$error++;
      } else {
          
// Формируем дату в вид YYYY-mm-dd
          
$date  $date[0] . DATA_DELIM sprintf('%02d'$date[1], 2) . DATA_DELIM sprintf('%02d'$date[2], 2);
      }
      
// Проверка времени
      // Формируем время в HH:ii
      
$time $time[0] . TIME_DELIM $time[1];
      if(!
preg_match("/^([0-1][0-9]|[2][0-3])" TIME_DELIM "[0-5][0-9]$/"$time)) {
          echo 
"Неправильно заполнено время.<br>";
          
$error++;
      }
      
// Если ошибок нет, записываем
      
if($error === 0) {
          
$fp fopen($file"w");
          
fwrite($fp$date "
$time);
          
fclose($fp);
          
// И отправляем обратно
          
header("Location: index.php?ok=1");
      }
    } else {
        echo 
"Заполнены не все поля.";
    }
} else {
    echo 
"Ошибка записи в файл '" $file "'.";
}
?>


http://www.softtime.ru/info/task.php?id_article=73

   
 
 автор: cheops   (06.02.2006 в 00:00)   письмо автору
 
   для: SoftTime   (05.02.2006 в 00:03)
 

Не проверяется на существование файл, вместо этого выдаёт "Ошибка чтения файла 'data.txt'. ", хотя в условии задачи сказано, что пустых полей не должно быть они должны всегда быть заполнены, например, текущей датой. Ввёл дату
2006 01 01 23 59

не записывает - пишет "Ошибка записи в файл 'data.txt'.", кроме того дата хранится не в UNIXSTAMP - хотя это промышленный стандарт. Вот 12 скриптов - как обеспечить их совместимость когда все свой формат изобретают? Единственный способ использовать UNIXSTAMP - он известен всем программистам.

   
 
 автор: Artem S.   (06.02.2006 в 09:26)   письмо автору
 
   для: SoftTime   (05.02.2006 в 00:03)
 

Ничего личного, это только мое скромное мнение. Вы вправе не согласится с ним, и я тоже могу ошибаться.

1. Компактно, хорошо читается.
2. Не сразу понятно в каком виде храниться данные, можно было написать комментарий в первом файле.
3. s_readable($file) is_writable($file), дополнительная проверка не помешает - хорошо.
4. checkdate - забыл про эту функцию, неплохая проверка.
В целом положительно :)

   
 
 автор: PantiL   (06.02.2006 в 22:13)   письмо автору
 
   для: Artem S.   (06.02.2006 в 09:26)
 

Ответ 007

<br /><b>Notice</b>:  Undefined variable:  date in <b>x:\home\uch.ru\www\index.php</b> on line <b>25</b><br />

Вот так почему то были заполнены все поля формы
Я так понял что скрипт будет работать только при наличии файла дата.тхт

   
Rambler's Top100
вверх

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