phpのツリーのアルゴリズムがわかんねんんだよ!
教えてください(´Д`;)
mysql使って普通の掲示板は組めたんですがそれにレスできる
こんな感じ↓
コメント1
コメント1
コメント1に対するレス
コメント1
簡単なサンプルで解説してください
本スレで教えてもらったけど何度が高すぎました。。
>>2
掲示板ソース、コレにコメント付けれるように直すにはどうすれば
いいんでしょうか? エラー処理は省いてます
<?php
$db=mysql_connect("localhost","***",***);
mysql_select_db(bbs);
if($name&&$msg)
{
$msg=ereg_replace("\r\n|\r|\n","<BR>\n","$msg");
mysql_query("insert into bbs values(now(),'$name','$msg')");
}
$hoge="select * from bbs order by time desc";
$sql=mysql_query($hoge);
while($array=mysql_fetch_array($sql))
{
print("投稿者:$array[name] 投稿時刻:$array[time]<BR>");
print("<BR>$array[msg]<HR>");
} DB構造
時間
名前
本文
知ってる方がおられたら伝授してください 自分なりに調べたところユニークなID持たせるっていいますよねぇ
ぶっちゃけどうやってID持たせるの?(゜q゜)ボケー
って感じでわけわかんないんです(;;) >>5
というと?
その型が関係してるのとかまでは探れたんですが、、
後がまったくなんです、、、(;;)
それをどう利用したらいいんでしょうか? シーケンスわかんねぇなら発言毎に
インクリメントしてしまっとけば。 みなさんおはようございます!!!!!!!!!!!!
>>7
ソースのエラー処理もでしょうか?
>>8
日本語の問題?
>>8
その再帰するまではわかったんですが、どうやって再帰するのか
想像できないんですよ、サンプルみしてください(;;)
>>10
インクリメント自体はできるのですが、、それをどう利用するんですか? 的外れならスマソ
ツリー番号をつける。これにはシーケンス使ったりシーケンス知らない場合
はインクリメントとかで対処しろ。
このツリー番号を元に、返信なら同じツリー番号、新規発言なら新しい番号
を付与。
記事を表示する場合は同じツリー番号の集団を表示すればよい。
カキコした順に通し番号を1から振っていく。それがそのカキコについた名前。
レスをつけたいときにはその名前で指名する。
表示するときは指名されたものをうしろにくっつける。
>>12
>>13
とりあえずこれ作ってみたんです、番号が1upしれくやつ
これで bbs.php?msgno=[ここに選択NO]にアクセスしてみても反応無しなんです
これに反応でるようにするにはどうするんでしょうか?
まずここからでいいのかな・・・?
ドキドキ
<?php
//DB構造
//msgno これint primary key auto_increment,
//datetime
//name
//msg
$db=mysql_connect("localhost","hodaka",124);
mysql_select_db(tree);
if($name&&$msg)
{
$msg=ereg_replace("\r\n|\r|\n","<BR>\n","$msg");
mysql_query("insert into tree(datetime,name,msg) values(now(),'$name','$msg')");
}
$hoge="select * from tree order by msgno desc";
$sql=mysql_query($hoge);
while($array=mysql_fetch_array($sql))
{
print("投稿番号:$array[msgno]");
print("投稿者:$array[name] 投稿時刻:$array[datetime]<BR>");
print("<BR>$array[msg]<HR>");
}
?>
</BODY>
</HTML> >>14
なぜ皆mysql_query()のエラーチェックをしないのかと小一時間……(以下略)
>>15
普段は付けてるけど、エラー処理入れると
ここに書き込めないので省いたんです、、
それよりそれより、、ソワソワ ID,親記事ID,ツリーID
これくらい用意しろ
関数化しねぇと再帰できないぞ。再起不能
>>17
とりあえずそれ組んでみます
ありがとうございます。 メッセージID(自分ID)と親IDだけあればいいんでないの? >>19
とりあえずDBでoyaidとtreeid作りました(msgnoは最初からある)
今日は寝るので明日指導してくだちゃい。おやすみなさい、、 treeID作りました!型はintですがいいんでしょうか?
これをレス型にするにはどうすれば・・?
レス型に書き直してください(;;)
<?php
$db=mysql_connect("localhost","*****",****);
mysql_select_db(tree);
if($name&&$msg)
{
$msg=ereg_replace("\r\n|\r|\n","<BR>\n","$msg");
mysql_query("insert into tree(datetime,name,msg) values(now(),'$name','$msg')");
}
$hoge="select * from tree order by msgno desc";
$sql=mysql_query($hoge);
while($array=mysql_fetch_array($sql))
{
$msgno=$array[msgno];
print("投稿番号$msgno<BR>");
print("投稿者:$array[name] 投稿時刻:$array[datetime]<BR>");
print("<BR>$array[msg]<HR>");
}
?>
</BODY>
</HTML> 「レスをする」ということで、レスをするツリーIDを渡す
>>23
というと?それは具体的に何をするんでしょうか?
あたいの脳がその部分だけかけていて考えられないのです!
サンプル組んでください! サンプル組むってほどのものかよ。。。
セッションでツリーID渡すかINPUTタグのHIDDENで仕込んどけ だから親のIDを持っとくんだってばさ
mysql_query("insert into tree(datetime, name, msg, refid) values(now(),'$name', '$msg', '$oyaIDne')");
あとは再帰でツリーは描けるから。 PHP4サンプル集 秀和システム 著 山田祥寛
ここにそのまま載ってるぞ
よって
===============終了=============== >>29
買ってきます!
あと最後にこれ教えてください、自分でソース読んだけどしくみが
わからん、ツリーはわかったけどこれができなきゃね♪
質問スレでも聞いたけど、マルチじゃないよ
http://www.dcl.info.waseda.ac.jp/~hasegawa/php/bbs.html
ここのスクリプトで
http://www.dcl.info.waseda.ac.jp/~hasegawa/php/source/bbs1/bbs1.php
これのレスの中身を見るときprint_numbe
使ってますけどこれどういう仕組みなんでしょうか?
これ最後で!タノンます(´д`)
トリップも公開します!#ore 根気のいい俺でもそろそろ限界か?
リンクに貼ってあるprint_numberっていうパラメータのこと聞いてるんだよ
ね?
君は基本的にCGIを1から勉強した方が良いかと思われ。
>>29で紹介した本を買って、その他いろんなドキュメントを読んでみれ。 ついでに
再帰もほどほどの件数にしとかないとメモリ食うからね。 >>30
http://www.dcl.info.waseda.ac.jp/~hasegawa/php/source/bbs1/bbs1.php?print_number=1
って言うふうに使うのだと思われ >>30
ごめん、間違えた(汗)
http://www.dcl.info.waseda.ac.jp/~hasegawa/php/source/bbs1/bbs1.phps
http://www.dcl.info.waseda.ac.jp/~hasegawa/php/source/bbs1/show_contents1.phps
この辺見れ。EUCだけどナー >>34
(゚д゚)ハッ!良く見直してみたらわかった!
ツリーの仕方もログ読み直してわかった!
ありがとうございます!!!1111!!!
しばらくがんばってみますね!
できそうです。
あとあのサンプルスクリプト集って本いい本なんですかねぇ?