Топик для форума, насколько это возможно без БД?

Yuriy_S

-=PHP-Club=-
ну хорошо, ежели так:
этот скрипт записывает новые топики, то есть этот кусок из скрипта моего:
$id=date("dmyHis");
$fp=fopen($file, "a");
$con="$id|$file2|$topic\n"; //записываем айдишник
$fwr=fwrite($fp, $con);
fclose($fp);
Затем, когда я считываю топики в массив, и бью их explode то присваиваю так list($idd,$message) - то есть просто переименовал $id в idd и все, потом ставлю условие: if ($id==$idd){ echo $message; }
а данные для этотго условия - это и есть ссылка: view.php?id=$idd
и все в цикле конечно!
Так же я передаю и имя файла через ссылку!
В общем, если не передавать имя файла через ссылку, то нужно тогда считывать файл с тоопиками заново в скрипте, который выводит сообщения, а это лишний код, но я вижу что нет другого выхода чтот бы скрыть имя файла в строке, лана, считаю файл есче раз!

И всеже, спасибо огромное за ответ и за помощь.!
Sorry....:)
 

RomikChef

Guest
Если ты думаешь, что я хоть что-то понял из твоего объяснения, то ты сильно заблуждаешься.
я так из него и не смог понять, что пишет этот код - топики или ответы.
почему id надо передавать по ссылке - я тоже не понял.
все, что я понял - это то, что у тебя переменная, содержащая время, почему-то названа id, а не time

структура твоих файлов, как я начинаю догадываться, тоже далека от идеальной. то есть, отличается себе от такой, которую я себе представляю.
файл с топиками, topics.txt:
заголовок|автор|время
заголовок|автор|время
заголовок|автор|время
заголовок|автор|время
...
файл с ответами, время.txt:
заголовок|автор|текст
заголовок|автор|текст
заголовок|автор|текст
....

У тебя же, получается, вместо этого какая-то фигня
 

Yuriy_S

-=PHP-Club=-
PHP:
<?
if ($topic != ""){
header("location: index.php");
}
$file="topic.txt";
$file2="db/$i.txt";
echo "<form action=index.php method=get><input type=hidden name=h1>Введите вашу тему:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type=text name=topic size=20><br>Ваше сообщение:<textarea name=message cols=45 rows=8></textarea><br><input type=submit value=add></form>";
$data=file($file);
$c=count($data);
$file2="db/$c.txt";
$id=date("dmyHis");
$fp=fopen($file, "a");
$con="$id|$file2|$topic\n";
$con2="$id|$message\n";
if ($topic != "" && $message !=""){
$fwr=fwrite($fp, $con);
fclose($fp);

$fp2=fopen($file2, "a");
$fwr2=fwrite($fp2, $con2);
}
fclose($fp2);
echo "<br><a href=view.php>Войти в форум</a>";
?>
--- код записывающий новый топик!!! $id=date(...) - это ид номер!
Вот скрипт который считывает данные с файла топика и передает их в другой скрипт, который выводит сообщения для топиков:
PHP:
<?
$file="topic.txt";
$data=file($file);
echo "<table border=0 width=100% height=30 cellspacing=1 cellpadding=0 bgcolor=#C7C6B8>
    <tr>
      <td width=749 height=1 valign=top colspan=6></td>
    </tr>";
for($i=0;$i<count($data);$i++){
list($idd,$path,$topic)=explode("|",$data[$i]);
echo "<tr><td width=150 height=1 valign=top bgcolor=#DAD6CD>";
echo "<a href=view3.php?id=$idd&path=$path>$topic</a>";
echo "</td>";
}
?>
Вот скрипт, который выводит сообщения для тоопиков:
PHP:
<?
$file=$path;
$data=file($file);
echo "<table border=0 width=749 height=340 cellspacing=1 cellpadding=0 bgcolor=#C7C6B8 align=top>
    <tr>
      <td width=749 height=1 valign=top colspan=6></td>
    </tr>";

for($i=0;$i<count($data);$i++){
list($id,$message)=explode("|",$data[$i]);
echo "<tr>";
echo "<td width=150 height=1 valign=top bgcolor=#DAD6CD>";
echo $message;
echo "</td>";
echo "</tr>";
}
?>
Извини что написал стоолько, зато тебе станет все понятно!
 

RomikChef

Guest
ну так объясни мне теперь, ЗАЧЕМ, черт возьми, ты передаешь скрипту, который выводит сообщения для тоопиков, эту переменную - $idd????????????????????
ЗАЧЕМ?
ответь мне, или я свихнусь.

Ну ладно, в прошлый раз ты передавал переменную, которую ты мог вычислить.
Но сейчас ты зачем передаешь переменную, которую ВООБЩЕ НЕ ИСПОЛЬЗУЕШЬ????????????????
 

Yuriy_S

-=PHP-Club=-
а на самом деле...., блин, я ее передавал что бы выводить, а блин, я забыл поставить условие if ($id==$idd){ echp $message; } , вот, для надежности! ну а то что я передаю имя файла - это правильно! но вот хотелось бы как нибудь скрыть его....
Да и условие можно не ставить, и $idd не передавать, а вот с именем файла то как.....
 

RomikChef

Guest
постой. у тебя в форум можно писать только по одному сообщению?

Ну-ка, расскажи-ка мне, как у тебя происходит добавление ответа в существующий топик?
 

Yuriy_S

-=PHP-Club=-
хех, Ромик, ты хочешь мне опять сказать что я тупой :))
я не делал ещё ответы, а сделать их легко - просто в скрипт для просмотри сообщений, добавляю форму, и все! запись так же идет в нужный файл по переменной $path, которая передается в этот скрипт, вот и все, все просто!
 

RomikChef

Guest
ну, если ты хотел проверять идд, то значит, собирался выводить только одно сообшение - разве нет?

показывать тебе я ничего не собираюсь - сам я в этом давно и бесповоротно убедился, а тебе показывать бесполезно.

скрыть очень просто.
надо добавлять в файл топиков не "db/$c.txt", а только $c
А $file2="db/$c.txt"; делать в view3.php, которому $c и передавать.

Это то, что ты никак не мог сообразить в треде про разбивку текста.
Думаю, что не дойдет до тебя и сейчас.
 

Yuriy_S

-=PHP-Club=-
я прекрасно понял, что тут непонятного то, передается токо $c и все, а папка указывается в скрипте, который принимает.
Это то мне все понятно, я уже сам давно разобрадся с раздедением на страницы, все сделал, так все просто, я посидел с листом бумаги и ручкой и все разобрал!
В общем спасибо огромное! все понятно!
казачок....:):);)
 

Yuriy_S

-=PHP-Club=-
>>А $file2="db/$c.txt"; делать в view3.php, которому $c и >>передавать.
да, сделал, работает на считывание.
Но только не работает почему то запись в файл, я как не пробовал, либо создает файл .txt либо не записывает.
делаю я запись:
PHP:
$file2="db/$c.txt";   //$c - передается ссылкой
$con="$id|$reply\n";
$fp=fopen($file2, "a");
$fwr=fwrite($fp, $con);
fclose($fp);
Вот с этим кодом он создает файл .txt и пишет в него... А по-другому не получается. Вроде пишу все правильно.
Или может просто функции считывания, и записи не понимают так? как можно тогда передат для записи путь к файлу?
 

Yuriy_S

-=PHP-Club=-
что значить нету?
у меня ссылка <a href=view3.php?c=$path>вернуться в форум</a>
$path = из массива (list($id,$path,$topic)) - то есть имя файла из файла с топиками. Все передаю, но почему то функция не видит....
 

Yuriy_S

-=PHP-Club=-
блин, $c передается, так как с помощью ее я считываю нужный файл в массив, и вывожу его на страницу, все выводится. $c передается в виде 0,1,2 в общем в виде числа, и я это число уже подставляю в виде $file="db/$c.txt"; и не работает, почему то в этой переменной функция для записи не видит $c, и когда я пытаюсь записать, то записывается только .txt без $c...
Как сделать то что б работало и видело?
 

RomikChef

Guest
дурень, при записи у тебя страница перезагружается.
и вот при посылке формы ты $c не передаешь.
Передавай его в хидден поле
 

Alexey333

Guest
Автор оригинала: Yuriy_S
хм....
просто насколько я понимаю, с одним файлом такое просто невозможно, либо нужно каждой строке уделять отдельный элемент массива.
Согласитесь, если для каждого топика использовать отдельный текстовой файл, то это будет удобнее и быстрее, т.е при создании какой-либо новой темы в форуме, создается новый файл с нужным именем. ?
Ошибаешься. Все возможно и с одним файлом для топика.
 

Yuriy_S

-=PHP-Club=-
ну хорошо, возможно, но подумай головой, что если у меня будет файл весить несколько мегабайт, то администрировать будет просто невозможно (удаление, перезапись, редактирование и т.п). Я сделал щас уже форум, все работает, для каждого топика свой файл с сообщениями, все замечательно! (p.s у меня получился такой же форум как здесь).
 

Alexey333

Guest
Автор оригинала: Yuriy_S
ну хорошо, возможно, но подумай головой, что если у меня будет файл весить несколько мегабайт, то администрировать будет просто невозможно (удаление, перезапись, редактирование и т.п). Я сделал щас уже форум, все работает, для каждого топика свой файл с сообщениями, все замечательно! (p.s у меня получился такой же форум как здесь).
Покажи свой форум.
 

RomikChef

Guest
Только не здесь!

алексей, а насчет твоей идеи хранить все в одном файле - она неправильная.
 
Сверху