[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: обясните как происходить запись в файл?
noice
здесь написано что если нажата ктопка ОК и поля text1 и text2 заполнены и файл существует то $id = max($keys) + 1; НО НЕТ ТУТ МОМЕНТА ЗАПИСИ В ФАЙЛ. А В РАБОТЕ СКРИПТ ПИШЕТ ДАННЫЕ В ФАЙЛ. Второй день в код смотрю понять ничего не могу.

    if(!empty($_POST['Button']))   
{
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);
// Вытаскиваем самый большой элемент и увеличиваем на 1
$id = max($keys) + 1;
} // Если файла нет, значит запись № 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));

header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();
}
}



Весь скрипт

<?php


/**
* The guest book
* Гостевая книга
*
@author IT studio IRBIS-team
*
@copyright © 2009 IRBIS-team
*/
/////////////////////////////////////////////////////////
/**
* We establish the charset and level of errors
* Устанавливаем кодировку и уровень ошибок
*/

header("Content-Type: text/html; charset=utf-8");
error_reporting(E_ALL);

/////////////////////////////////////////////////////////////////
// VARIABLES
// ПЕРЕМЕННЫЕ

/////////////////////////////////////////////////////////////////


$text1 = !empty($_POST['text1']) ? $_POST['text1'] : null;
$text2 = !empty($_POST['text2']) ? $_POST['text2'] : null;
$info = array();


/////////////////////////////////////////////////////////////////
// SCRIPT
// СКРИПТ

/////////////////////////////////////////////////////////////////

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);
// Вытаскиваем самый большой элемент и увеличиваем на 1
$id = max($keys) + 1;
} // Если файла нет, значит запись № 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));

header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();
}
}

else
$info[] = 'Напишите что-нибудь';

/////////////////////////////////////////////////////////////////
// VIEW
// ОТОБРАЖЕНИЕ

/////////////////////////////////////////////////////////////////
?>
<form action="" method="post">
Логин:<br />
<
input name="text1" type="text" value="<?php echo htmlspecialchars($text1) ?>"/><br />
Сообщение:<br />
<
textarea name="text2" cols="40" rows="10"><?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 $id => $post)
{ // Тут уже проходили
$date = $post['date'];
$name = htmlspecialchars($post['name']);
$mess = nl2br(htmlspecialchars($post['mess']));
?>
<div style="border:1px solid; width:70%; background-color:#66FFFF; min-height:100px; margin:5px; padding:5px">
<?php echo $date; ?> / <strong><?php echo $name; ?></strong>
<
hr width="30%" align="left" />
<?php echo $mess; ?>
</div>
<?php
}
}




Спустя 6 минут, 28 секунд (16.09.2012 - 11:14) killer8080 написал(а):
а file_put_contents это что по твоему wink.gif

Спустя 5 часов, 51 минута, 43 секунды (16.09.2012 - 17:06) noice написал(а):
killer8080
не тут то было

if(file_exists('text.txt')) Если файл существует то
{
// Читаем файл и десериализуем массив
$posts = unserialize(file_get_contents('text.txt'));
// Достаем все ключи в другой массив
$keys = array_keys($posts);
// Вытаскиваем самый большой элемент и увеличиваем на 1
$id = max($keys) + 1;
} // Если файла нет, значит запись № 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));

header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);
exit();

Если файл сужествует то КАК ТУДА ДАННЫЕ ЗАПИСЫВАЮТЬСЯ?

Спустя 11 минут, 29 секунд (16.09.2012 - 17:17) Rand написал(а):
Условие отвечает за то, какое значение примет переменная $id, если файл существует, то старший из файла, если нет, то id = 1. Т.к. после else нет фигурных скобок, к else относится только $id = 1. Дальше идет код, который выполняется вне зависимости от условия if(file_exists('text.txt')), в том числе и file_put_contents

Спустя 13 минут, 18 секунд (16.09.2012 - 17:30) killer8080 написал(а):
Ну, собственно Rand ответил на твой вопрос wink.gif

Спустя 25 минут, 16 секунд (16.09.2012 - 17:56) noice написал(а):
Rand
Спасибо, laugh.gif

Спустя 17 часов, 22 минуты, 53 секунды (17.09.2012 - 11:19) noice написал(а):
а не подскажите чтоб сообщения добовлялись не сверху вниз а с низу вверх как сделать?

Спустя 4 минуты, 42 секунды (17.09.2012 - 11:23) Winston написал(а):
Использовать fopen() в режиме r+

Спустя 13 минут, 5 секунд (17.09.2012 - 11:36) noice написал(а):
$_posts=unserialize(fopen('base.txt',"r+");
ошибку пишет

Спустя 20 минут, 33 секунды (17.09.2012 - 11:57) Winston написал(а):
Для начала было бы неплохо заглянуть в мануал, как работает fopen(), а также как читать и записывать в файл.

Спустя 5 часов, 51 минута, 18 секунд (17.09.2012 - 17:48) noice написал(а):
Winston
читал, искал может что то упустил в мануалах.
везде одно и тоже написано. только расшифровка дополнительных символов и все r+ это чтение и запись. и как это в скрипт пристроить для воплощения задумки ума не приложу. я же новичек ) 3 день учу php

Спустя 8 минут, 50 секунд (17.09.2012 - 17:57) killer8080 написал(а):
Цитата (noice @ 17.09.2012 - 11:19)
а не подскажите чтоб сообщения добовлялись не сверху вниз а с низу вверх как сделать?

У тебя же там не просто текст, а сериализованный массив. Отсортируй его в обратном порядке, и всего делов wink.gif Или выводи в обратном порядке.

Спустя 42 минуты, 29 секунд (17.09.2012 - 18:40) noice написал(а):
killer8080
пробовал $id=count(array_values($posts))+1; подставить -1
но значение ключа массива я так понял не может быть отрицательным array[-1]
первое сообщение перезаписываеться под значением [0]

это запись.

А при выводе там функция foreach она перебирает с лева направо не иначе

пробовал с count что нибуть натворить но он выдает только число этих значений $posts[][]=''; а не первых ключей в котором номер сообщения идет

Спустя 33 минуты, 41 секунда (17.09.2012 - 19:13) killer8080 написал(а):
$array = array_reverse( unserialize(file_get_contents('text.txt')), 1);

Спустя 58 минут, 6 секунд (17.09.2012 - 20:11) noice написал(а):
killer8080
) спасибо
я даже сам догадался как нумерацию сообщений проставить в обратном порядке

smile.gif

Спустя 4 дня, 1 час, 42 минуты, 25 секунд (21.09.2012 - 21:54) noice написал(а):
ребята подскажите как сделать чтоб из input text при вводе "300 лет" можно было извлечь число 300 для суммирования?

Спустя 54 минуты, 27 секунд (21.09.2012 - 22:48) noice написал(а):
$rashodydisplay[]=unserialize(file_get_contents('rashody.txt'));
print_r($rashodydisplay);

в фаиле такие данные:
a:1:{i:0;s:1:"1";}a:1:{i:0;s:1:"2";}a:1:{i:0;s:8:"werewewf";}a:1:{i:0;s:9:"sddfsfsdf";}

выводит только это print_r
Array ( [0] => Array ( [0] => 1 ) )

почему не все выводит?

Спустя 11 часов, 37 минут, 49 секунд (22.09.2012 - 10:26) killer8080 написал(а):
Цитата (noice @ 21.09.2012 - 22:48)
почему не все выводит?

выводит всё, открой исходный html в браузере.



Спустя 1 минута, 9 секунд killer8080 написал(а):
Цитата (noice @ 21.09.2012 - 21:54)
ребята подскажите как сделать чтоб из input text при вводе "300 лет" можно было извлечь число 300 для суммирования?

echo (int)'300 лет';
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.