(PHP)DBに aaa bbb ccc と単語がスペースで区切られて格納されています。


行いたいことはPHPで全てのレコードから単語の数をかぞえて、例えば同じ単語が20個以上なら赤色で表示し、15個以上なら黄色、5個以下なら表示しないといった感じにするにはどうしたらいいのでしょうか?

簡単なソースお願いいたします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:ygs No.1

回答回数8ベストアンサー獲得回数0

ポイント25pt

$sql = ”select field from table”;

$res = mysql_query($sql);


$words = array();

while($row = mysql_query($res)){

foreach(explode(’ ’,$row[field]) as $field){

$words[$field] = 1;

}

}

foreach($words as $field => $dummy){

$sql = ”

select count(*) as cnt from table

where field regexp ’(^| )” . mysql_escape_string(preg_quote($field)) . ”( |$)’”;

$res = mysql_query($sql);

list($row) = mysql_fetch_row($res);

$words[$field] = $row[cnt];

}


foreach($words as $field => $cnt){

if($cnt >= 20){

echo ’<font color=”red”>’.htmlspecialchars($field).’</font>

’;

}else if($cnt >= 15){

echo ’<font color=”yellow”>’.htmlspecialchars($field).’</font>

’;

}else if($cnt > 5){

echo htmlspecialchars($field).’

’;

}

}


mysqlの場合こんな感じです。

id:esecua

ありがとうございました。実際に試してポイント数を決めていきたいと思います。

2006/01/22 01:02:25
id:ito-yu No.2

回答回数323ベストアンサー獲得回数14

ポイント25pt

//とりあえずすべての単語を配列に格納

$sql = ”SELECT DISTINCT hoge FROM table”; //テーブル名table、単語の入っているカラム名hogeとする

$rtn = $db->query($sql); //PEAR DB例

$item_list = array();

while($row = $rtn->fetchRow()){

$list = explode(’ ’, $row[’hoge’]);

foreach($list as $line){

$item_list[$line] = $line;

}

}

//すべての単語についてcount()で個数を数える

foreach($item_list as $item){

$sql = ”SELECT COUNT(*) FROM table WHERE hoge~’{$item}’”;

$cnt = $db->getOne($sql);

if($cnt >= 20){

echo ’<div style=”color:red;”>’.$item.’</div>’;

}elseif($cnt >= 15){

echo ’<div style=”color:yellow;”>’.$item.’</div>’;

}elseif($cnt > 5){

echo ’<div>’.$item.’</div>’;

}else{

//表示しない

}

}


質問するときはサンプルとなるテーブルやカラム名を書いてもらう方がいいんですけどねぇ。今後ご検討ください。その方があなたも勉強になると思います

id:esecua

回答ありがとうございます。

2006/01/25 11:45:35

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません