форум вебмастероff на AlfaSpace.NET

Ubuntu и Linux |реактивный бесплатный хостинг | Киноклуб. ВСЁ БЕСПЛАТНО!
база знаний хостинга | правила форума

  Начало ° Ответить ° Статистика ° Опрос ° Регистрация ° Поиск ° FAQ °
Форум вебмастеров на AlfaSpace.NET / Создание сайта / Почему при записи в файл стирается начало предидущей строки?
. 1 . 2 . >>
Автор Сообщение
Рамиль
minibb moder

1152
# Дата: 10 Май 2006 07:36


<? 
$news = fopen("z:/home/inet.info/www/templates/news.dat", "r+") or die("Невозмож 
но открыть файл news.dat!"); rewind($news); fputs($news, "<u>".$day.".".$month.".".$year."</u>|".$title."|".$body."\n") or d
ie("<center><font size=1 face=Tahoma>=Нет доступа к записи в файл news.dat!</fon
t></center>"); fclose($news); exit("<center><font size=1 face=Tahoma>Данные записаны успешно!<br><a href=news-
adder.php>Добавить ещё одну новость</a></font></center>"); } ?>


Код. Первый самостоятельный опыт в РНР. Почему при записи в файл начало предидущей строки стирается?
З.Ы. Если соединяешься с параметром "а", т.е. записываешь в конец строки, всё нормально

smallcms
Участник

2752
# Дата: 10 Май 2006 08:36


Рамиль
r+ не для этих целей создан. тебе нужно найти где у тебя eof.
а можно проще.
a. пишешь в конец файла. потом собираешь построчно в массив, а потом -ооопааа: array_reverse() и всё новое оказывется сверху, а старое - в самом последнем ряду.
всё! больше не подскажу, а то не интересно будет

Андрей
Алексеевич

2123
# Дата: 10 Май 2006 08:57 ° Поправил: Андрей


smallcms

» smallcms
потом собираешь построчно в массив, а потом -ооопааа: array_reverse() и всё новое оказывется сверху, а старое - в самом последнем ряду

Садомазахист!
----
Усп, я подумал что ты хотел перевернуть и записать перевёрнутым... Ступил я

Тогда уж вот так:
 
$addive = 'Это надо добавить в начало'; 
$fp = fopen("z:/home/inet.info/www/templates/news.dat", "r+"); 
$content = fread($fp, filesize($fp) ); 
$newcontent = $addive . $content; 
fwrite( $fp, $newcontent ); 
fclose( $fp ); 


Рамиль
minibb moder

1152
# Дата: 10 Май 2006 10:50


А как можно сделать чтобы чтение из файла начиналось с конца в этом коде:
<? 
$news = fopen("z:/home/inet.info/www/templates/news.dat", "r"); 
$file_array = file("z:/home/inet.info/www/templates/news.dat"); 
for($i=0; $i < count($file_array); $i++) 
{ 
    $explode[$i] = explode("|", $file_array[$i]); 
    echo '<font size=1 face=Tahoma>'.$explode[$i][0].' '.$explode[$i][1].'<br /> 
'.$explode[$i][2].'</font><br>'; } fclose($news); ?>


acsid
Alfa Guru

2469
# Дата: 10 Май 2006 12:38 ° Поправил: acsid


» Рамиль
$file_array

$file_array=array_reverse($file_array);
тогда последняя строка в фаиле станет первым элементом массива

Рамиль
minibb moder

1152
# Дата: 10 Май 2006 12:49


acsid
Я вроде так пробовал. Хотя нет, пробовал перевернуть $explode, ну а получалось сам знаешь что...

smallcms
Участник

2752
# Дата: 10 Май 2006 12:54


абырвалг!

acsid
Alfa Guru

2469
# Дата: 10 Май 2006 12:55


» Рамиль
Хотя нет, пробовал перевернуть $explode

елсли превернуть эксплоид получиться типа edolpxe$

Рамиль
minibb moder

1152
# Дата: 10 Май 2006 12:57


acsid


acsid
Alfa Guru

2469
# Дата: 10 Май 2006 13:07


» Рамиль
$explode[$i][0].

а зачем такие замуты ктати)
$explode[0] -так работает без проблем)

Рамиль
minibb moder

1152
# Дата: 10 Май 2006 13:12


acsid
Я хотел там одну чтучку замудить. Не получилось. Я ж говорю, на выходных половину переделаю

Рамиль
minibb moder

1152
# Дата: 20 Май 2006 09:37


Появился ещё один вопрос: почему при записи в файл кавычки экранируются обратным слешем (\), хотя а обрабатываю переменные хтмлспециалсчарзом?

acsid
Alfa Guru

2469
# Дата: 20 Май 2006 09:45


Рамиль
потому что переменная не может их содержать без (\)..
попробуй так htlspecialchats($_POST[]);

Рамиль
minibb moder

1152
# Дата: 20 Май 2006 13:11


acsid
» acsid
попробуй так htlspecialchats($_POST[]);

Чета не получается!

acsid
Alfa Guru

2469
# Дата: 20 Май 2006 16:27


Рамиль
выложи код..ясновидящих тут нет)

Рамиль
minibb moder

1152
# Дата: 25 Май 2006 08:25


acsid
Кажись функции
» acsid
htlspecialchats($_POST[]);
нет!

Рамиль
minibb moder

1152
# Дата: 25 Май 2006 08:38


Народ, помогите составить регулярное выражение!
Нужно, чтобы в строке находилось число, состоящее только из одной цифры, а потом заменялось preg_replace на число, найденное в строке плюс 0 спереди. У меня получился такой код:
if (preg_match("/^[1-9]/i", $day, $match)) 
{ 
    $day = preg_replace("/^[1-9]/i", "0".$day, $day); 
} 


Но, почему-то у цифр, с любым количеством знаков, вставлялось по обоим краям по нулю, а вот что нужно не работало

Рамиль
minibb moder

1152
# Дата: 27 Май 2006 12:34 ° Поправил: Рамиль


acsid
» acsid
выложи код..ясновидящих тут нет)

<? 
require_once("adminonly.php"); 
if (isset($_GET['day']) && $_GET['day'] != '') 
{ 
    $day = $_GET['day']; 
} 
if (isset($_GET['month']) && $_GET['month'] != '') 
{ 
    $month = $_GET['month']; 
} 
if (isset($_GET['year']) && $_GET['year'] != '') 
{ 
    $year = $_GET['year']; 
} 
if (isset($_GET['title']) && $_GET['title'] != '') 
{ 
    $title = $_GET['title']; 
} 
if (isset($_GET['body']) && $_GET['body'] != '') 
{ 
    $body = $_GET['body']; 
} 
$news = fopen("../templates/datas/news.dat", "a") or die("Невозможно открыть фай 
л news.dat!"); if (isset($day, $month, $year, $title, $body)) { $body = htmlspecialchars($body); $title = htmlspecialchars($title); htlspecialchats($_POST[]); fputs($news, "<u>".$day.".".$month.".".$year."</u>|".$title."|".$body."\n")
or die("<center><font size=1 face=Tahoma>=Нет доступа к записи в файл news.dat!<
/font></center>"); fclose($news); exit("<center><font size=1 face=Tahoma>Данные записаны успешно!<br><a href=n
ews-adder.php>Добавить ещё одну новость</a><br><a href=adminlogout.php>Покинуть
админпанель</a></font></center>"); } else { print "<center><font size=1 face=Tahoma>Введите данные:</font></center>\n"; } ?>


Roler
USA Hater

1368
# Дата: 27 Май 2006 12:46


Сорри плиз за оффтоп, но я в РНР новичок, решил напистаь гоствеху на файлах. Вопрос - как мне сохранять сообщения вмест с логином, мылом и урлом сайта, лучше в одни файл, а потом это читать.

Рамиль
minibb moder

1152
# Дата: 27 Май 2006 12:53


Roler
Используй код выше, форму могу дать я. Код чтения... да он тоже у меня есть. Всё будет сохраняться в один файл, одно сообщение - ода строка

acsid
Alfa Guru

2469
# Дата: 27 Май 2006 13:27 ° Поправил: acsid


Рамиль
начнём с того что $_GET[]том передавать крайне не рекомендую. лучше постом.
второе как бы ты там не решил передавать значения делай так:
возьмём на примере $month

$month = htmlspecialchars(trim($_GET['month']));


ili
$month = htmlspecialchars(trim($_POST['month']));



а эту хрень
htmlspecialchats($_POST[]); 

убери .. я когда писал тебе это, думал ты догадаешься что к чему..)

Рамиль
minibb moder

1152
# Дата: 27 Май 2006 14:59


acsid
Спасибо. Только вот почему
» acsid
$_GET[]том передавать крайне не рекомендую


acsid
Alfa Guru

2469
# Дата: 27 Май 2006 15:07 ° Поправил: acsid


» Рамиль
$_GET[]том передавать крайне не рекомендую

хм ну например потому что допустим ты передаёшь гетом текст из формы русский длинной допустим 400 символов.. + ещё куча переменных --это изврат.. да и ломать такой скрипт легче.. не нужно формы менять ..

Рамиль
minibb moder

1152
# Дата: 27 Май 2006 15:13


acsid
» acsid
да и ломать такой скрипт легче..

Пробовал?
Ещё однин вопрос:
» Рамиль
Народ, помогите составить регулярное выражение!
Нужно, чтобы в строке находилось число, состоящее только из одной цифры, а потом заменялось preg_replace на число, найденное в строке плюс 0 спереди. У меня получился такой код:
if (preg_match("/^[1-9]/i", $day, $match))
{
$day = preg_replace("/^[1-9]/i", "0".$day, $day);
}


Но, почему-то у цифр, с любым количеством знаков, вставлялось по обоим краям по нулю, а вот что нужно не работало


acsid
Alfa Guru

2469
# Дата: 27 Май 2006 15:55 ° Поправил: acsid


Рамиль
т.к. я несовсем понял твои регулярки .. сделал по описанию.. подстроишь сам:
 
$day="3423012";//переменная с числом 
if(is_numeric($day)){//если это число 
    $var=substr($day,0,1);//отрезаем все ,оставляем тока первое 
    $match=str_replace($day,"0$day",$match); заменяем это число в строке и стави 
    м перед ним ноль 
    echo $match; //в итоге получишь 03 заменённое в строке $match 
} 




скрип работает если переменная содержит числа. ..($day, $match) - это ведь числа ? нетак ли?

Roler
USA Hater

1368
# Дата: 28 Май 2006 02:26


Рамиль
Спасибо к5онечно, но мне охота ещё и его понять.

acsid
Alfa Guru

2469
# Дата: 28 Май 2006 03:29 ° Поправил: acsid


Roler
создай новую тему,напиши что именно тебе не ясно(пхп). обьясню подробно

Рамиль
minibb moder

1152
# Дата: 28 Май 2006 03:40


acsid
$day="3423012";//переменная с числом 
if(is_numeric($day)){//если это число 
    $var=substr($day,0,1);//отрезаем все ,оставляем тока первое 
    $match=str_replace($day,"0$day",$match); заменяем это число в строке и стави 
    м перед ним ноль 
    echo $match; //в итоге получишь 03 заменённое в строке $match 
} 


Надо бы добавить сюда условие, чтобы если $day > 9, изменения не происходило

acsid
Alfa Guru

2469
# Дата: 28 Май 2006 03:42 ° Поправил: acsid


$day="3423012";//переменная с числом 
if(is_numeric($day)){//если это число 
    if($day =< 9){//если меньше или равно 9ти заменяем 
        $var=substr($day,0,1);//отрезаем все ,оставляем тока первое 
        $match=str_replace($day,"0$day",$match); заменяем это число в строке и с 
        тави 
        м перед ним ноль 
        echo $match; //в итоге получишь 03 заменённое в строке $match 
    } 
} 


Рамиль
minibb moder

1152
# Дата: 28 Май 2006 03:45 ° Поправил: Рамиль


acsid
» Рамиль
Надо бы добавить сюда условие, чтобы если $day > 9, изменения не происходило

Сорри, это смогу зделать сам. Думал, это будет сложнее

---
Топик был написан раньше чем предыдущий

. 1 . 2 . >>
Ваш ответ

Quote  Bold Style  Italic Style  Underlined Style  URL Link  Email Link  Script AutoTab  Preformatted Text  Отменить *Что это?
... Запретить смайлы


Перед отправкой "нелатинского" текста проверьте кодировку броузера!
 » Логин  » Пароль 
 
Powered by miniBB forum software © 2001-2008
Powered by miniBB-gzipper. Original size:50431, gzipped size:11952

Mp3 Download || Мир Спанч боба || Song's Lyrics
eXTReMe Tracker Rambler's Top100 Рейтинг@Mail.ru Форум ТвойWeb [Valid RSS]