phpのツリーのアルゴリズムがわかんねんんだよ!
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
02/03/10 17:26ID:G6SLgnQAmysql使って普通の掲示板は組めたんですがそれにレスできる
こんな感じ↓
コメント1
コメント1
コメント1に対するレス
コメント1
簡単なサンプルで解説してください
本スレで教えてもらったけど何度が高すぎました。。
>>2
掲示板ソース、コレにコメント付けれるように直すにはどうすれば
いいんでしょうか?
0002nobodyさん
02/03/10 17:26ID:G6SLgnQA<?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>");
}
0003nobodyさん
02/03/10 17:28ID:G6SLgnQA時間
名前
本文
知ってる方がおられたら伝授してください
0004困った1(´Д`;)さん ◆JjsLsZzw
02/03/10 17:31ID:G6SLgnQAぶっちゃけどうやってID持たせるの?(゜q゜)ボケー
って感じでわけわかんないんです(;;)
0005mySQL
02/03/10 18:00ID:???0006困った1(´Д`;)さん ◆h49ANHg2
02/03/10 18:10ID:G6SLgnQAというと?
その型が関係してるのとかまでは探れたんですが、、
後がまったくなんです、、、(;;)
それをどう利用したらいいんでしょうか?
0007nobodyさん
02/03/10 21:58ID:???0008nobodyさん
02/03/10 22:35ID:???0009nobodyさん
02/03/11 01:23ID:???0010nobodyさん
02/03/11 03:38ID:IZPenvnOインクリメントしてしまっとけば。
0011困った1(´Д`;)さん ◆JjsLsZzw
02/03/11 09:24ID:6zR1ua/0>>7
ソースのエラー処理もでしょうか?
>>8
日本語の問題?
>>8
その再帰するまではわかったんですが、どうやって再帰するのか
想像できないんですよ、サンプルみしてください(;;)
>>10
インクリメント自体はできるのですが、、それをどう利用するんですか?
0012nobodyさん
02/03/11 10:43ID:???ツリー番号をつける。これにはシーケンス使ったりシーケンス知らない場合
はインクリメントとかで対処しろ。
このツリー番号を元に、返信なら同じツリー番号、新規発言なら新しい番号
を付与。
記事を表示する場合は同じツリー番号の集団を表示すればよい。
0013名無しさん
02/03/11 16:30ID:???レスをつけたいときにはその名前で指名する。
表示するときは指名されたものをうしろにくっつける。
0014困った1(´Д`;) ◆JjsLsZzw
02/03/11 18:03ID:6zR1ua/0>>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>
0016困った1(´Д`;) ◆JjsLsZzw
02/03/11 19:03ID:6zR1ua/0普段は付けてるけど、エラー処理入れると
ここに書き込めないので省いたんです、、
それよりそれより、、ソワソワ
0017nobodyさん
02/03/11 19:12ID:???これくらい用意しろ
関数化しねぇと再帰できないぞ。再起不能
0018困った1(´Д`;) ◆JjsLsZzw
02/03/11 19:16ID:6zR1ua/0とりあえずそれ組んでみます
ありがとうございます。
0019nobodyさん
02/03/11 21:36ID:???0020困った1(´Д`;) ◆JjsLsZzw
02/03/11 21:56ID:6zR1ua/0とりあえずDBでoyaidとtreeid作りました(msgnoは最初からある)
今日は寝るので明日指導してくだちゃい。おやすみなさい、、
0022困った1(´Д`;)
02/03/12 15:55ID:BOgC8D8Bこれをレス型にするにはどうすれば・・?
レス型に書き直してください(;;)
<?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>
0023nobodyさん
02/03/12 16:22ID:???0024困った1(´Д`;) ◆JjsLsZzw
02/03/12 16:26ID:BOgC8D8Bというと?それは具体的に何をするんでしょうか?
あたいの脳がその部分だけかけていて考えられないのです!
サンプル組んでください!
0025nobodyさん
02/03/12 16:43ID:???0026nobodyさん
02/03/12 17:01ID:???セッションでツリーID渡すかINPUTタグのHIDDENで仕込んどけ
002713
02/03/12 19:18ID:???0028nobodyさん
02/03/13 08:16ID:???mysql_query("insert into tree(datetime, name, msg, refid) values(now(),'$name', '$msg', '$oyaIDne')");
あとは再帰でツリーは描けるから。
0029nobodyさん
02/03/13 15:49ID:???ここにそのまま載ってるぞ
よって
===============終了===============
0030困った1(´д`) ◆JjsLsZzw
02/03/13 16:34ID:bTyUwLh6買ってきます!
あと最後にこれ教えてください、自分でソース読んだけどしくみが
わからん、ツリーはわかったけどこれができなきゃね♪
質問スレでも聞いたけど、マルチじゃないよ
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
0031nobodyさん
02/03/13 16:42ID:???リンクに貼ってあるprint_numberっていうパラメータのこと聞いてるんだよ
ね?
君は基本的にCGIを1から勉強した方が良いかと思われ。
>>29で紹介した本を買って、その他いろんなドキュメントを読んでみれ。
0032nobodyさん
02/03/13 16:43ID:???再帰もほどほどの件数にしとかないとメモリ食うからね。
0033nobodyさん
02/03/13 18:56ID:OqBWlBtphttp://www.dcl.info.waseda.ac.jp/~hasegawa/php/source/bbs1/bbs1.php?print_number=1
って言うふうに使うのだと思われ
0034nobodyさん
02/03/13 19:00ID:OqBWlBtpごめん、間違えた(汗)
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だけどナー
00351 ◆JjsLsZzw
02/03/13 19:10ID:bTyUwLh6(゚д゚)ハッ!良く見直してみたらわかった!
ツリーの仕方もログ読み直してわかった!
ありがとうございます!!!1111!!!
しばらくがんばってみますね!
できそうです。
あとあのサンプルスクリプト集って本いい本なんですかねぇ?
0036nobodyさん
02/03/13 19:11ID:OqBWlBtpfunction tree ($parent = 0) {
$result=mysql_query("select * from tree where parent = $parent order by no desc");
while($array=mysql_fetch_array($result))
{
print("{$array[no]}");
print("{$array[name]}");
print("{$array[date]}");
print("{$array[msg]}");
tree($array[no]); // 再起呼出
}
mysql_free_result($result);
}
ってやればイイと思われ。
ちなみに動作未確認。
あとは自分で頑張れ。
0038nobodyさん
02/03/14 02:24ID:80hRLeB+print 使うより echo 使ったほうが早いよ。
0039nobodyさん
02/03/18 17:09ID:???そうなん?
printは値を返すからその分スピードがechoの方が速いって解釈で
いいのかな?
ってかprintってエイリアスなのだろうか。
0040真実
03/01/02 16:46ID:???資金が底をつけば終わり。あまり知られていないことだが、
2ちゃんねる内部関係者によると今、大手通信会社系が調査費名目で資金提供している。
だが、それが止まれば続けてはいけないだろう」と証言する。
2ちゃんねるが判決によって力を失った場合、資金提供の打ち切りも予想される。
http://ascii24.com/news/reading/causebooks/2002/07/01/636911-000.html
以下、別の記事のキャッシュ http://memo2ch.tripod.co.jp/article.html
2ちゃんねるに近いあるインターネット関連会社の社長は、2ちゃんねるの幹部から得
た話として証言する。「2ちゃんねるは、運営者や幹部などがそれぞれ別々に会社を
作りカネの流れを見え難くしているが、実際の資金源は複数の大手通信会社系からの
調査費名目のカネ。月額で計約700万円と言い、年間にすれば1億円近く。額はともあ
れ、これは通信会社系的には、ぼう大なトラフィックを調査すると言う表向きの理由
が一応は立つ。自社系に都合の悪い書き込みがされた時に優先的に削除してもらうこ
とも期待している」と前置きし「通信会社系の削除の期待も含めて、2ちゃんねるは
総会屋と同じになっている」と言うのだ。
その具体的な理由として社長は、こう話す。「2ちゃんねるはボランティアの削除人
が書き込みをチェックして、好ましくない書き込みを一所懸命削除している、という
ことになっているが、あれはウソ。削除人には給料が支払われ、その給料の原資と
なっているのが、まずいことを書き込まれた企業が削除要求とともに渡す裏金。これ
はまさに、総会屋の構図そのものだ。これまで裁判になっているのは金額で折り合え
なかったり、裏金を出さない強い態度の企業とだけだ」
0041山崎渉
03/01/15 13:38ID:???0042山崎渉
03/03/13 17:42ID:???0043nobodyさん
03/03/13 19:06ID:???何かagaってるのでついでに書いておくと、ソース見れば判る
(エイリアスの定義があるのでCがそんなに読めなくても判るよ)けど、
エイリアスじゃないです。リファレンスで調べても戻り値のある/なしや
引数の違い(,区切りで複数OKなど)もあるので、その辺でも判るかと。
0044山崎渉
03/04/17 12:17ID:???0045山崎渉
03/04/20 06:17ID:???( ^^ )< ぬるぽ(^^)
0046山崎渉
03/05/22 02:18ID:???0047山崎渉
03/05/28 17:11ID:???ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0048t-akiyama
03/05/30 21:47ID:???このPSPは、新規格UMD(ユニバーサルメディアディスク)というディスクを利用しており、そのサイズは直径6cmととても小さい(CDの半分程度)。 容量は1.8GBとなっている。
画面は4.5インチのTFT液晶で、480px x 272px(16:9)。MPEG4の再生やポリゴンも表示可能。外部端子として、USB2.0とメモリースティックコネクタが用意されているという。
この際、スク・エニもGBAからPSPに乗り換えたらどうでしょう。スク・エニの場合、PSPの方が実力を出しやすいような気がするんですが。
任天堂が携帯ゲーム機で圧倒的なシェアをもってるなら、スク・エニがそれを崩してみるのもおもしろいですし。かつて、PS人気の引き金となったFF7のように。
0049山崎 渉
03/07/15 11:23ID:???__∧_∧_
|( ^^ )| <寝るぽ(^^)
|\⌒⌒⌒\
\ |⌒⌒⌒~| 山崎渉
~ ̄ ̄ ̄ ̄
0050山崎 渉
03/08/02 02:30ID:???( ^^ )< ぬるぽ(^^)
0051ぼるじょあ ◆ySd1dMH5Gk
03/08/02 05:04ID:???ピュ.ー ( ・3・) ( ^^ ) <これからも僕たちを応援して下さいね(^^)。
=〔~∪ ̄ ̄ ̄∪ ̄ ̄〕
= ◎――――――◎ 山崎渉&ぼるじょあ
0052山崎 渉
03/08/15 23:22ID:???│ ^ ^ │<これからも僕を応援して下さいね(^^)。
⊂| |つ
(_)(_) 山崎パン
0053nobodyさん
04/06/17 09:14ID:???HTMLに関する質問ですが、ツリーのアルゴリズムについてなので。。。
HTMLタグの<ul><li><li></ul>をネストして書こうと思っているのですが、
データベースを使っていたりデータベースをチューニングしてる関係などにより、
各項目について、
●上から何番目か($nとします)・・・@seq =(1,2,3,4,5,6,7,8,9,10)とし、$nには1,2,3,4,..10が入ります
●階層の深さが何階層目か($depth[$n]とします)
●項目名($name[$n]とします)
しかわかっていません。
★参考:<ul><li></li></ul>の見た目とソースの対応を、下記URLにおいておきます。
http://31.com/tmp/ul_algorithm.html
で、やりたいのはこれらの情報を使って
*上から順*にソースを書き込んでいきたいということです。
そのためのアルゴリズムがわからずに苦慮しています。
$depth[n]=$depth[n-1]のときは、
単に<li>name(n)</li>と書けばいいことは自明です
しかし、それ以外のパターンのアルゴリズムがわからず。。。
なお、アルゴリズムの考え方やそのヒントでも、phpでやperlのソースでも、
あるいは、ヒントだけでもいいので、教えていただければ幸いです。
005453
04/06/17 23:25ID:hAY00qtb0055nobodyさん
04/06/18 08:59ID:???行頭 → <ul> * $depth[n]
$depth[n-1]-$depth[n]=1 → <ul>
$depth[n-1]-$depth[n]=2 → <ul><ul>
$depth[n-1]-$depth[n]=-1 → </ul>
行末 → </ul> * $depth[n]
単純にこれじゃダメかい?
005653
04/06/19 00:51ID:???最初にulを考えて、そのあとliを考えたらうまくいきました。参考までにそのソース。
while ($row = pg_fetch_array($rs)) {
$n++;
$depth[$n] = $row[depth];//深さ(最小は1)
$name[$n] = $row[name];//項目名
//わかりやすく
$now_depth = $depth[$n];
$name = $name[$n];
//</li></ul>を挿入
$ul_li_insert = $before_depth - $now_depth;
if ($n >= 2) {
if ($ul_li_insert >= 0) $HTMLcattree .= "</li>\n";
for ($i=1;$i<=$ul_li_insert;$i++){
$HTMLcattree .= "</ul>\n";
$HTMLcattree .= "</li>\n";
}
}
//<ul><li>を挿入
$ul_li_insert = $now_depth - $before_depth;
for ($i=1;$i<=$ul_li_insert;$i++){
$HTMLcattree .= "<ul>\n";
}
005753
04/06/19 00:51ID:???$HTMLcattree .= "<li>\n";
//項目名を表示
$HTMLcattree .= $name;
//「前の項目の階層数」として使う
$before_depth = $now_depth;
}
//締めの、</li></ul>を挿入
$ul_li_insert = $before_depth;
$HTMLcattree .= "</li>\n";
for ($i=1;$i<=$ul_li_insert;$i++){
$HTMLcattree .= "</ul>\n";
$HTMLcattree .= "</li>\n";
}
$HTMLcattree .= "</ul>\n";
print $HTMLcattree;
//ありがとうございました。
ピュ.ー ( ^^ ) <これからも僕を応援して下さいね(^^)。
=〔~∪ ̄ ̄〕
= ◎――◎ 山崎渉
0060nobodyさん
2006/08/22(火) 10:16:04ID:???0061nobodyさん
2009/05/09(土) 16:15:08ID:unp/QYBCZ
z
z
<⌒/ヽ-、___
/<_/____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄
0062nobodyさん
2011/11/21(月) 15:28:47.26ID:???0064nobodyさん
2013/12/28(土) 23:28:41.33ID:xIlaW9Ufhttp://webblogsakusei.main.jp/seo_taisaku_syukyaku.html
■ このスレッドは過去ログ倉庫に格納されています