Только вот застрял на этом уроке, на последнем коде.
Мой код не работает, свреяю с кодом Twin'a всё такое же или я не вижу...
Я не понимаю почему если массив с ошибками пуст и файл есть, то мы вытаскиваем из файла нормальный массив, потом все ключи, потом к самому большому ключу +1? Где далее это используется?
А где мы записываем строку в файл, если файл есть? Мой код не записывает, если есть файл.
В чём проблема? Не врублюсь.
<?php
header("Content-type: text/html; charset-utf8");
error_reporting(E_ALL);
$text1 = !empty($_POST['text1'])? $_POST['text1'] : null;
$text2 = !empty($_POST['text2'])? $_POST['text2'] : null;
$info = array();
if(!empty($_POST['ok']))
{
if(!$text1)
$info[] = 'Вы не указали ваш логин!';
if(!$text2)
$info[] = 'Напишите что нибудь в сообщении!';
if(count($info) == 0)
{
if(file_exists('text.txt'))
{//если файл существует, читаем файл
$posts = unserialize(file_get_contents('text.txt'));
//достаем все ключи в другой массив
$keys = array_keys($posts);
//достаем самый большой и при,авляем к нему один
$id = max($keys) + 1;
}
else
{//если файла нет
$id = 1;
//создаем новый массив...=
$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;
// = и засовываем в текст.файл
file_put_contents('text.txt',serialize($posts));
//сбрасываем POST данные
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
//и выходим из скрипта
exit();
}
}
}
else
{//если кнопка не нажата то занести в массив
$info[] = 'Напишите что нибудь...';
}
?>
<form action="" method="POST">
Логин:<br />
<input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>" /><br />
Сообщение:<br />
<textarea name="text2"><?php echo htmlspecialchars($text2);?></textarea><br />
<input name="ok" type="submit" />
</form>
<?php
//выводим ошибки которые собранны в массиве
echo implode('<br />',$info).'<br />';
if(file_exists('text.txt'))
{
//читаем файл и десериализуем массив
$array = unserialize(file_get_contents('text.txt'));
//проходим по циклу вынимая каждый раз пару: ключ => значение
foreach($array as $key => $post)
{
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(htmlspecialchars($post['mess']));
?>
<div id="post">
<h4><strong class="left">Логин: <?php echo $name; ?></strong><strong class="right">Дата: <?php echo $date; ?></strong></h4>
<p><?php echo $mess; ?></p>
</div>
<?php
}
}
Спустя 8 часов, 15 минут, 5 секунд (9.01.2011 - 11:22) twin написал(а):
В заблуждение тебя ввело то, что у меня блок else не взят в фигурные скобки.
Нужно не так:
а так:
Нужно не так:
else
{//если файла нет
$id = 1;
//создаем новый массив...=
$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;
// = и засовываем в текст.файл
file_put_contents('text.txt',serialize($posts));
//сбрасываем POST данные
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
//и выходим из скрипта
exit();
}
а так:
else
$id = 1; //если файла нет
//создаем новый массив...=
$posts[$id]['date'] = date('d-m-Y');
$posts[$id]['name'] = $text1;
$posts[$id]['mess'] = $text2;
// = и засовываем в текст.файл
file_put_contents('text.txt',serialize($posts));
//сбрасываем POST данные
header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
//и выходим из скрипта
exit();
Спустя 3 часа, 4 минуты, 35 секунд (9.01.2011 - 14:27) fallow написал(а):
Оу, спасибо twin 
Просто я не привык к такому, всегда закрываю блок.

Просто я не привык к такому, всегда закрываю блок.