PHPとMySQLによるタグ検索について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
nayo

PHPとMySQLによるタグ検索について

#1

投稿記事 by nayo » 15年前

こんにちは、お世話になっております
先日皆様に教えて頂いた書籍やサイトでPHPやMySQLに対する理解が深まりました
おかげさまでサンプルを利用して保存されてる情報が画像だけの画像アップローダ的なものは作れました
これをさらに拡張して画像にタグを付け、検索できるようにするには一般的にどのような手法が使われているのでしょうか
(例えばpixivやニコニコ動画のような)

検索方法が下手なため上手く見つけきれませんでした
キーワードだけでも良いのでどなたかご教授願います

環境はXAMPPのver 2.5をWindows7にインストールした状態です

たいちう

Re:PHPとMySQLによるタグ検索について

#2

投稿記事 by たいちう » 15年前

必要な機能ですが、まず表面的には、タグの編集・タグの表示・タグによる検索ですね。
MySQLに、タグ管理用のテーブルも必要です。

ニコ動をモデルにして、実装の簡単な方法を考えると、
画像のIDとタグ文字列を主キーにしたテーブルがあれば良いでしょう。
タグの表示が一番簡単でしょうから、テーブルを作成して、
適当なデータを入れて、表示から試してみて下さい。

# 効率面ではベターな方法があると思いますが、最も簡単な方法がこれだと思いますので、
# 負荷が気になるようになるか、大規模なサービスを開始するような時に、再度検討してください。

nayo

Re:PHPとMySQLによるタグ検索について

#3

投稿記事 by nayo » 15年前

遅れましてすみません
ありがとうございます

なるほどまずはそこからですね
ちょっと作ってみようと思います
また出来たらそのソースを元にアドバイスをもらいに来ようと思います

nayo

Re:PHPとMySQLによるタグ検索について

#4

投稿記事 by nayo » 15年前

おかげさまで一応タグの表示のみは出来るようになりました
現在の状態をテキストファイルにて添付しましたので見てもらってもよろしいでしょうか

現在不具合としては
 ・画像をアップした瞬間に画面に反映されない
 ・画像をアップした後更新ボタンを押すと前回アップされた画像がもう一度アップされたことになる

また、ここから拡張したい内容としては
 ・既にアップされた画像のタグ編集
 ・タグによる検索

以上のような感じです

念のためこのファイルのためのデータベースとテーブル作成用のphpファイルの内容も余分なものもありますが記述しておきます
文字列型などこれで良いか、他に必要な情報はないかアドバイスお願いします

---ここから---
<?php

// 文字コードの変更
mb_internal_encoding( "UTF-8" );

$DBSERVER = "localhost" ; //
$DBUSER = "root" ; //
$DBPASSWORD = "" ; //
$DBNAME = "testdb" ; //

$sql = "DROP DATABASE $DBNAME" ;

//
if ( ! $con = mysql_connect( $DBSERVER, $DBUSER, $DBPASSWORD ) )
{
exit( "MySQLに接続できませんでした" ) ;
}
else
{
print "MySQLに接続成功<br />";
}

//
$sql = "CREATE DATABASE $DBNAME" ;

if ( mysql_query( $sql, $con ) )
{
print "データベース testdb の作成に成功しました<br />";
}
else
{
print "データベース testdb の作成に失敗しました<br />" ;
}

// データベースを選択
mysql_select_db( $DBNAME ) ;

// 文字コード設定
mysql_query( "set names UTF8" ) ;

// テーブルを新規作成
$sql = "CREATE TABLE upload_file_info (
tag varchar(255),
org_name varchar(255),
thm_name varchar(255)
) engine=MyISAM;";

if ( mysql_query( $sql ) )
{
print "upload_file_infoテーブルを作成しました<br /><br />" ;
}
else
{
print "upload_file_infoテーブルの作成に失敗しました<br /><br />" ;
}

// テーブルの一覧を取得
$tbllist = mysql_list_tables( $DBNAME ) ;
while ( $col = mysql_fetch_array( $tbllist ) )
{
print $col[ 0 ] . "<br />" ;
}

// フォルダ新規作成
if ( mkdir( "test" ) )
{
print "ディレクトリ test を作成しました<br />" ;
}
else
{
print "ディレクトリ test の作成に失敗しました<br />" ;
}

// クローズ
mysql_close();

?>
---ここまで---

たいちう

Re:PHPとMySQLによるタグ検索について

#5

投稿記事 by たいちう » 15年前

> 現在の状態をテキストファイルにて添付しましたので見てもらってもよろしいでしょうか

ソースファイルのみでは私には困難です。
せめて問題点をもっと絞り込んでください。

まず現在の不具合についてですが、タグとは関係ないように思われます。
タグを表示するようになったために、不具合が発生するようになったのですか?
それとも、画像をアップした瞬間に、何らかのタグが表示される、という仕様ですか?

状況の説明と、現象を再現できる最小限のソースコードをお願いします。

nayo

Re:PHPとMySQLによるタグ検索について

#6

投稿記事 by nayo » 15年前

申し訳ないです
不具合については画面を更新する際にF5キーなどで行っていたので

「このページを再表示するには、以前送信した情報を再送信する必要があります。(中略)
その他の場合は、[再試行]をクリックして Web ページを再表示してください。」

と出てきていたところを[再試行]していたために起こった現象でした
お騒がせしました

恐れ入りますが拡張したい内容やその他ソースの細かな改善点などについてアドバイスをお願いします

たいちう

Re:PHPとMySQLによるタグ検索について

#7

投稿記事 by たいちう » 15年前

> 恐れ入りますが拡張したい内容やその他ソースの細かな改善点などについてアドバイスをお願いします

具体的に何に困っているのですか?
私はPHPに関しては、数年前の一時期いくつかの仕事をしていて、
その時にニコ動のタグのようなものも実装したことがありますが、
経験は限られているうえ、自己流です。
具体的な問題点があれば解決の手助けをすることができるかもしれませんが、
潜在的な問題点を見つけるのには自信がありません。

そんな私でも言えることとしては、ソースコードを見ると
セキュリティ面が全く考慮されていないようですので、
何らかの形で公開するのでしたら、セキュリティ対策についてのポリシーを決定し、
それに沿って全て作り直す必要があるでしょう。

nayo

Re:PHPとMySQLによるタグ検索について

#8

投稿記事 by nayo » 15年前

>たいちうさん
ありがとうございます
確かにセキュリティの面に関しては全く考えてませんでした
書籍を買うなどして対策を考えようと思います
また、後からさらに編集していたらミスが多々…もう少しテストしておくべきでした

質問が曖昧過ぎましたね
すみません

具体的には
 ・テーブルに登録されたデータのタグを利用して検索する方法

…と、まだ曖昧ですね

一応現在データ固有の値としてauto incrementのidがフィールドとして登録されてます

タグの編集については自分の考えてるものとして
 画像タグ表示部分にフォームを設置、idを同時にそこに記述してテーブルデータと対応できるようにする(できるのか分からない)
 新しくタグ登録があった場合、そのidを利用してデータを参照、UPDATE文で書き換える
というもので出来るかな、と思ったのですが検索についてはどのような関数を使えばいいか分からないという状況です

そして分からないことが

SELECT文で文字列型内に特定の文字列が入っているものだけをチョイスするにはどうすれば良いか
また、代替案はないか

ということです
分かりにくくて申し訳ないです

Poco

Re:PHPとMySQLによるタグ検索について

#9

投稿記事 by Poco » 15年前

> SELECT文で文字列型内に特定の文字列が入っているものだけをチョイスするにはどうすれば良いか
> また、代替案はないか

SQLのLIKE演算子が使えませんか? 画像

nayo

Re:PHPとMySQLによるタグ検索について

#10

投稿記事 by nayo » 15年前

>ぽこさん
検索してみたらそれらしいことが出来そうです
おかげさまでなんとかなりそうです
ありがとうございます

これ以上のことはC言語の掲示板ですし、まだプログラムで実装チャレンジしてないのに続けるとご迷惑かと思うので一旦〆させて頂きます

たいちうさん、ぽこさん改めてありがとうございました 画像

たいちう

Re:PHPとMySQLによるタグ検索について

#11

投稿記事 by たいちう » 15年前

> これ以上のことはC言語の掲示板ですし、
> まだプログラムで実装チャレンジしてないのに続けるとご迷惑かと思うので一旦〆させて頂きます

C言語どころかプログラミングとも関係ない質問も歓迎されていますので迷惑でないでしょう。
C/C++に比べると回答できる人は少ないですが、もっと良い掲示板が見つからなければ、
また質問してください。

最後に書籍の紹介。

『PHPサイバーテロの技法―攻撃と防御の実際』
http://www.amazon.co.jp/dp/4883374718

Poco

Re:PHPとMySQLによるタグ検索について

#12

投稿記事 by Poco » 15年前

私もWebページの紹介をば。

IPAセキュア・プログラミング講座
http://www.ipa.go.jp/security/awareness ... index.html

nayo

Re:PHPとMySQLによるタグ検索について

#13

投稿記事 by nayo » 15年前

>たいちうさん
参考になりそうな書籍ありがとうございます
来週にでも購入してみようと思います

>ぽこさん
おお、ありがとうございます
お気に入り登録させて頂きました

お二方重ね重ねありがとうございました
またお世話になるかもしれませんがそのときはよろしくお願いします

閉鎖

“C言語何でも質問掲示板” へ戻る