Код написал самостоятельно, изучая всяческую документацию в интернете.
И так. Суть кода в том, что бы выводить статьи на гоавной странице сайта.
Привожу пример кода:
---------------------------------------------------------------------------------
<?
// Читаем из файла содержимое в массив
$mas_1 = file("bloks/blog/base.txt");
// выделяем текст до запятой и вносим его в новый массив
foreach ($mas_1 as $index){
$mas_2 = explode(",", $index);
// Выводим заголовок статьи
echo "
<table width=720 border=0 cellspacing=0 cellpadding=0>
<tr><td class='text-001'>";
echo $mas_2[2];
echo"</td></tr></table>";
// Выводим дату публикации
echo "
<table width=720 border=0 cellspacing=0 cellpadding=0>
<tr><td width=100 class='text-006'>дата публикации:</td>
<td width=620 class='text-004'>";
echo $mas_2[0];
echo"</td>
</tr></table><table width=100 border=0 cellpadding=0 cellspacing=0><tr><td height=10></td></tr></table>";
// Выводим текст статьи
include "records/$mas_2[4].php";
echo"<table width=100 border=0 cellpadding=0 cellspacing=0><tr><td height=100></td></tr></table>";
}; ?>
А вот скриншот того, что получается:
---------------------------------------------------------------------------------
http://temp.malyshenko.ru/php.jpg
на всякий случай ссылка на место происходящего:
---------------------------------------------------------------------------------
http://www.temp.malyshenko.ru
попробую объяснить что происходит в коде:
Есть некий файл base.txt в котором хранятся строки типа:
091206,01,Здравствуйте я Ваша тетя.,02,091206-01-rec-short
5 декабря 2009 года,01,Интерьер как произведение искусств.,01,091205-01-rec-short
Скрипт считывает каждую строку и делит на фразу с разделителем "," (запятая)
Все бы хорошо, если бы не одна статья печаталась а вторая нет, а вместо нее выдает ошибку, которую видно на скриншоте.
Помогите, пожалуйста, найдите ошибку в коде. За ранее спасибо!
Спустя 31 минута, 16 секунд (6.12.2009 - 02:44) John_761 написал(а):
Спустя 9 минут, 55 секунд (6.12.2009 - 02:54) dr_Lev написал(а):
Замени
на
-----------------
Можно красивее и правильнее сделать...
Замени
на
// Выводим текст статьи
include "records/$mas_2[4].php";
на
// Выводим текст статьи
include "records/".str_replace("\n","",$mas_2[4]).".php";
-----------------
Можно красивее и правильнее сделать...
Замени
// выделяем текст до запятой и вносим его в новый массив
foreach ($mas_1 as $index){
$mas_2 = explode(",", $index);
на
// выделяем текст до запятой и вносим его в новый массив
foreach ($mas_1 as $index){
$mas_2 = explode(",", rtrim($index));
Спустя 5 минут, 24 секунды (6.12.2009 - 02:59) dr_Lev написал(а):
John_761
Ничего открывать и закрывать не нужно...
Функция file() сама все это делает и возвращает все содержимое файла в массиве.
http://docs.php.net/manual/ru/function.file.php
Ничего открывать и закрывать не нужно...
Функция file() сама все это делает и возвращает все содержимое файла в массиве.
http://docs.php.net/manual/ru/function.file.php
Спустя 11 часов, 1 минута, 46 секунд (6.12.2009 - 14:01) arhitec написал(а):
Цитата (dr_Lev @ 5.12.2009 - 23:54) |
Замени// Выводим текст статьи на // Выводим текст статьи |
Если не трудно, можно пояснить что происходит в этой замене и почему у меня работало не верно? Удивляет тот факт, что есть два файла - один открывается а второй нет...
Спустя 8 часов, 16 минут, 8 секунд (6.12.2009 - 22:17) dr_Lev написал(а):
Цитата (arhitec @ 6.12.2009 - 11:01) | ||
Если не трудно, можно пояснить что происходит в этой замене и почему у меня работало не верно? Удивляет тот факт, что есть два файла - один открывается а второй нет... |
Когда ты при помощи file() считываешь инфу с файла, то в массиве срок, которые ты получаешь, в каждой строке остается последний символ переноса строки (почитай документацию по функции), но в последней строке такого символа нет, именно поэтому у тебя выводится одна новость, но не вторая, а последняя, (попробуй добавь в base.txt еще несколько записей)
А при помощи функции str_replace(), этот последний символ переноса строки ("\n") заменяется на пустой символ ("") т.е. просто удаляется.
P.S. Как я в пред. посте писал, для удаления последнего символа переноса строки, лучше использовать функцию rtrim(). Кстати в мануале по функции file() тоже рекомендуют использовать rtrim(). (Маниуал для file())
Спустя 7 дней, 5 часов, 18 минут, 18 секунд (14.12.2009 - 03:36) arhitec написал(а):
Спасибо большое - очень помогло!
Приятно чувствовать себя увереннее в знаниях
Приятно чувствовать себя увереннее в знаниях
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)