Вернуться   Дизайнерский форум » ВЕБ-ПРОГРАММИРОВАНИЕ » HTML, CSS, JavaScript

пустая строка

Обсуждение темы пустая строка в разделе HTML, CSS, JavaScript, часть категории ВЕБ-ПРОГРАММИРОВАНИЕ; Всем привет! Ситуация: Пишу новостную ленту. Всё очень просто. В админке есть форма с тремя полями: 1 - вводишь дату, 2 - краткое ...


Закрытая тема
 
Опции темы
Старый 30.04.2004, 17:53   #1
MXM

Всем привет!
Ситуация:
Пишу новостную ленту. Всё очень просто. В админке есть форма с тремя полями:
1 - вводишь дату, 2 - краткое описание новости, 3 - полное описание.
Далее форму принимает скрипт, обрабатывает её и записывает в простой текстовый файл / запись в файл / , далее с помощью скриптов я обрабатываю файл: либо просматриваю все добавленные новости, либо редактирую новости, либо удаляю не нужные.
В чём же проблема:
Когда сам файл пустой, при просмотре всех новостей мне выдаёт ошибку:
PHP код:
NoticeUndefined offset7 in z:\home\localhost\www\4\adin\change_max.phtml on line 36 
и т.д., строчек пять.
Когда добавляю новость, всё равно показывает эту же ошибку.
При подсчете количества новостей, отображает - 2 новости, а не одну, как есть на самом деле.
Как устранил ошибку:
Просто залез в файл и удалил перевод строки. Вид записи в файле:
PHP код:
1;2004-04-30;0;30-04-04;краткое описание;полное описапние 
После чего работает всё корректно. Но это не выход. Никак не могу найти ошибку в скрипте? Как удалить символ новой строки и перевода корретки - /n, /r в конце строки? Или как с этим бороться. Помогите найти.
Сам скрипт:
PHP код:
$fp=fopen("../data/news.txt","r"); 
$news=array(); 
$i=0
while(!
feof($fp)) 

$str=""
$news[$i]=fgets($fp,10000); 
$pt=explode(";",$news[$i]); 
$news[$i]=implode(";",$pt); 
$str=$str.";"
$news[$i]=$str.$news[$i]; 
$i++;} 
fclose($fp); 
sort($news); 
$nnews=count($news); 
print 
"Всего новостей - $nnews"
for(
$i=0;$i<$nnews;$i++) 
{
$pt=explode(";",$news[$i]); 
print 
"<td>$pt[1]</td>\n"

вывод на экран 


Заранее спасибо за ответ!
 
Старый 30.04.2004, 17:53
Ссылки
Старый 30.04.2004, 19:05   #2
Это же не "warning"! Notice на серваках отключены. Я, конечно, тоже стараюсь без этого говна делать, но вот процентов 90 всех ру_скриптов настолько кривые, что при E_ALL ; & ~E_NOTICE они там тонну дерьма выдают!
 
Старый 30.04.2004, 19:18   #3
MXM

Цитата:
Nielson:
Это же не "warning"! Notice на серваках отключены. Я, конечно, тоже стараюсь без этого говна делать, но вот процентов 90 всех ру_скриптов настолько кривые, что при E_ALL ; & ~E_NOTICE они там тонну дерьма выдают!
Не спорю. Но ведь как-то можно же избавиться от перевода кооретки или новой строки, чтоб не было пустой строки, она же не из-за Notic'а же образуется?
Спасибо за внимание.
 
Старый 30.04.2004, 19:48   #4
А где ты вообще смотрел? Может ты при записи в файл каретку переводишь.
 
Старый 30.04.2004, 20:08   #5
MXM

Цитата:
Nielson:
А где ты вообще смотрел? Может ты при записи в файл каретку переводишь.
На локалке у себя. Прошу прощения, но так скрипт лучше видно,
добаление новости:

<?php
$td=date("Y-m-d");

$fp=fopen("../data/news.txt","r");
$ca=array();
$i=0;
$limit=0;
while(!feof($fp))
{$line=fgets($fp,10000);
$pt=explode(";",$line);
if($pt[0]>$limit) $limit=$pt[0];
$ca[$i]=$line;
$i++;}
$limit++;
fclose($fp);

$fp=fopen("../data/news.txt","w");
$opkrat=preg_replace ("'([\r\n])[\n]+'",' ',$opkrat);
$oppoln=preg_replace ("'([\r\n])[\n]+'",' ',$oppoln);
$t="$limit;$td;$spec;$data;$opkrat;$oppoln\n";
fputs($fp,$t);
for($i=0;$i<count($ca);$i++)
fputs($fp,$ca[$i]);
fclose($fp);

print "Новость добавлена!";
?>
 
Старый 09.05.2004, 06:47   #6
Цитата:
PHP код:
$fp=fopen("../data/news.txt","r"); 
$news=array(); 
$i=0
while(!
feof($fp)) 

$str=""
$news[$i]=fgets($fp,10000); 
$pt=explode(";",$news[$i]); 
$news[$i]=implode(";",$pt); 
$str=$str.";"
$news[$i]=$str.$news[$i]; 
$i++;} 
fclose($fp); 
sort($news); 
$nnews=count($news); 
print 
"Всего новостей - $nnews"
for(
$i=0;$i<$nnews;$i++) 
{
$pt=explode(";",$news[$i]); 
print 
"<td>$pt[1]</td>\n"

вывод на экран 


Добавь после строки
PHP код:
$news[$i]=fgets($fp,10000); 
вот эту
PHP код:
if (trim($news[$i])=='') continue; 
и забей н \n\r
 
Старый 10.05.2004, 10:23   #7
MXM

Цитата:
CPAS:
Добавь после строки
PHP код:
$news[$i]=fgets($fp,10000); 
вот эту
PHP код:
if (trim($news[$i])=='') continue; 
и забей н \n\r
Снова всем привет!
CPAS, спасибо за ответ. Попробую испытать твой вариант.
На данный момент ответ найден, надо сделать проверку:
PHP код:
$fp=fopen("../data/news.txt","r"); 
$news=array(); 
$i=0
while(!
feof($fp)) 
{
$str=fgets($fp,10000); 
if(
$str==''&&feof($fp)) break; /* принудительный выход из цикла без сохранения строки в массиве */ 
$news[]=$str;} 
fclose($fp); 
Думаю, что тему можно закрыть.
 
Старый 16.05.2004, 00:15   #8
Если кто не знал, то в виндах перевод строки, в отличие от юнихов, осуществляется не одним символом, а двумя (автоматом).
т.е. если мы пишем в файл \n, автоматом пишется \r\n.

Кстати, почему бы на чтение не пользоваться простым file()?
 
Старый 17.05.2004, 09:54   #9
MXM

Цитата:
Alkeeper: Если кто не знал, то в виндах перевод строки, в отличие от юнихов, осуществляется не одним символом, а двумя (автоматом).
т.е. если мы пишем в файл \n, автоматом пишется \r\n.

Кстати, почему бы на чтение не пользоваться простым file()?
Можно, конечно и file() воспользоваться, даже многие советуют так делать, к примеру:
PHP код:
$news=file('../data/news.txt'); 
sort($news); 
print 
"Всего новостей - ".count($news); 
foreach (
$news as $v){ 
  
$pt=explode(";",$v); 
  echo 
"<td>$pt[0]</td>\n"
  
// . 
  // вывод на экран 
  // . 

или
PHP код:
$arFile file('../data/news.txt'); 
printf('

Всего новостей: %d</p>'
sizeof($arFile)); 
print 
'<table border="1">'
print 
'<tr><th>Номер новости</th><th>Дата добавления</th></tr>'
foreach(
$arFile as $v) { 
    
$arData explode(';'$v); 
    
printf('<tr><td>%d</td><td>%s</td></tr>', ++$i$arData[0]); 

print 
'</table>'
, но поставлена цель использовать fopen().
 
Старый 17.05.2004, 10:33   #10
2MXM, Ok! Тогда приведи полный листинг скрипта.
Ошибка товя выскакивает в цикле при обращении к элементу с несуществующим ключем.

проверь количество итераций
 
Старый 17.05.2004, 10:33
Закрытая тема




Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Строка CSS Xuser HTML, CSS, JavaScript 1 15.08.2011 07:44
IIS 6 + статус страницы 404 - на выходе пустая страница Макс-Текс ASP, Perl, PHP и MySQL 0 02.03.2011 18:07
Бегущая строка zanuda2008 HTML, CSS, JavaScript 15 15.04.2009 14:34
Красная строка Escaper HTML, CSS, JavaScript 7 29.01.2006 13:08
Бегущая строка Intery HTML, CSS, JavaScript 3 31.08.2005 18:36


Текущее время: 13:45. Часовой пояс GMT +4.

Реклама на форуме Условия размещения рекламы
Биржа ссылок Заработай на сайте!
Дизайнерский форум