Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (2) [1] 2  ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> обясните как происходить запись в файл?, в этом коде
noice  
 ۩  [x]    Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 35086
На форуме: 4 года, 8 месяцев, 15 дней
Карма:




здесь написано что если нажата ктопка ОК и поля 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
}
}
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8925
Пользователь №: 26630
На форуме: 6 лет, 2 месяца, 22 дня
Карма: 603




а file_put_contents это что по твоему wink.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
noice  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 35086
На форуме: 4 года, 8 месяцев, 15 дней
Карма:




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();

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

Это сообщение отредактировал noice - 16.09.2012 - 18:06
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Rand  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 985
Пользователь №: 22336
На форуме: 7 лет, 1 день
Карма: 62




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


--------------------
Спасибо, что дочитали до конца! Буду рад, если прочитаете ещё раз =)
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8925
Пользователь №: 26630
На форуме: 6 лет, 2 месяца, 22 дня
Карма: 603




Ну, собственно Rand ответил на твой вопрос wink.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
noice  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 35086
На форуме: 4 года, 8 месяцев, 15 дней
Карма:




Rand
Спасибо, laugh.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
noice  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 35086
На форуме: 4 года, 8 месяцев, 15 дней
Карма:




а не подскажите чтоб сообщения добовлялись не сверху вниз а с низу вверх как сделать?
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 11 месяцев, 1 день
Карма: 552




Использовать fopen() в режиме r+
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
noice  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 35086
На форуме: 4 года, 8 месяцев, 15 дней
Карма:




$_posts=unserialize(fopen('base.txt',"r+");
ошибку пишет
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Winston  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме




******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 9509
Пользователь №: 18161
На форуме: 7 лет, 11 месяцев, 1 день
Карма: 552




Для начала было бы неплохо заглянуть в мануал, как работает fopen(), а также как читать и записывать в файл.
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
noice  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 35086
На форуме: 4 года, 8 месяцев, 15 дней
Карма:




Winston
читал, искал может что то упустил в мануалах.
везде одно и тоже написано. только расшифровка дополнительных символов и все r+ это чтение и запись. и как это в скрипт пристроить для воплощения задумки ума не приложу. я же новичек ) 3 день учу php
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8925
Пользователь №: 26630
На форуме: 6 лет, 2 месяца, 22 дня
Карма: 603




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

У тебя же там не просто текст, а сериализованный массив. Отсортируй его в обратном порядке, и всего делов wink.gif Или выводи в обратном порядке.
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
noice  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 35086
На форуме: 4 года, 8 месяцев, 15 дней
Карма:




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

это запись.

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

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


Это сообщение отредактировал noice - 17.09.2012 - 19:58
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
killer8080  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Эксперт
Группа переписки
Сообщений: 8925
Пользователь №: 26630
На форуме: 6 лет, 2 месяца, 22 дня
Карма: 603




$array = array_reverse( unserialize(file_get_contents('text.txt')), 1);
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
noice  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Новичок
*

Профиль
Группа: Пользователь
Сообщений: 35
Пользователь №: 35086
На форуме: 4 года, 8 месяцев, 15 дней
Карма:




killer8080
) спасибо
я даже сам догадался как нумерацию сообщений проставить в обратном порядке

smile.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (2) [1] 2  Ответ в темуСоздание новой темыСоздание опроса