PHPからMysqlに接続するコード(sqlデータベース名等)は必要ないのかと悩んでいて、またそのようなソースコードが紹介されていなくお手上げ状態です。宜しくお願いします。
MySQLに接続するコードは自分で書く必要があるのだと思います。
1.必要なファイルをダウンロードします。
http://www.jdmweb.com/resources/video_manager
※ページ上部にある説明のすぐ下(デモの上)の真ん中のアイコンをクリックするとダウンロードできます。
2.スクリプトのヘッダー内に各ファイルを読み込む記述を追加します。
3.「MyVideo.php」の3行目に使用するテーブル名を指定します。
define("table_name","myvideos");
4.「video_manager.js」の1行目で設置するURLを指定します。
※「http://web.example.com/admin/video_manager.php」がスクリプトのURLの場合
var pageurl = "/admin/video_manager.php"; // WEBルートからのパスで記述した場合
5.phpMyAdmin等を使用して、次のSQL文を実行してテーブルを作成します。
※テーブル名は、3で指定したものと同じ名前にします。
CREATE TABLE テーブル名 ( `video_id` int(11) NOT NULL auto_increment, `video_url` varchar(255) default NULL, `video_title` varchar(255) default NULL, PRIMARY KEY (`video_id`) )
上記SQL文を実行する代わりにスクリプトに「MyVideo::createVideoTable();」と書いても大丈夫です。
初回アクセス時にテーブルが自動作成されます。
※MySQLに接続した後の部分に記述してください。
6.249行目付近でスクリプトのパスに変更します。
echo MyVideo::getVideoForm(0,"/admin/video_manager.php","post");
※「http://web.example.com/admin/video_manager.php」がスクリプトのURLの場合
7.動画タイトルの文字化け対策※save()の処理
105行目付近の以下の行を
$title = htmlentities($_POST["video_title"],ENT_QUOTES);
次のように変更します。
$post_title = $_POST["video_title"]; $title = mysql_real_escape_string($post_title);
例えば、スクリプトの方は以下のような記述になります。
<?php //Video Manager PHP Class include("MyVideo.php"); $html = "<html>\r\n"; $html .= "<head>\r\n"; $html .= '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">'."\r\n"; $html .= "<title>Video Manager</title>\r\n"; //Scripts (jQuery + FancyBox Plugin + Video Manager Script) $html .= '<script type="text/javascript" src="js/jquery.js"></script>'."\r\n"; $html .= '<script type="text/javascript" src="fancybox/jquery.fancybox.js"></script>'."\r\n"; $html .= '<script type="text/javascript" src="js/video_manager.js"></script>'."\r\n"; //CSS (FancyBox CSS + Video Manager CSS) $html .= '<link rel="stylesheet" type="text/css" href="fancybox/fancy.css">'."\r\n"; $html .= '<link rel="stylesheet" type="text/css" href="css/video_manager.css">'."\r\n"; $html .= "</head>\r\n<body>\r\n<div>\r\n"; echo $html; $host = "DBサーバー"; $dbuser = "DBユーザー名"; $dbpass = "DBパスワード"; $dbname = "データベース名"; $con = mysql_connect($host,$dbuser,$dbpass); mysql_set_charset("utf8"); $db = mysql_select_db($dbname); MyVideo::createVideoTable(); //On your Page: echo '<div id="publicside"> <h3>Public side : Your List Of Videos</h3>'."\r\n"; MyVideo::getPublicSide(); echo '</div>'."\r\n"; //On your Page: echo '<div id="adminside">'."\r\n"; MyVideo::getAdminSide(); echo '</div>'."\r\n"; echo "</div>\r\n</body>\r\n</html>\r\n"; ?>
※読み込む各ファイルのパスに気をつけてください。
いるかとポイントをありがとうございました。(^^)
ところで、メール通知で初回の返信を確認しましたが、その後Xserverでも無事に動作したのでしょうか?
> Xserverでは作成したvideo_manager.phpを実行すると白紙になります。どうもmysqlに接続できてないような気がします。
サーバーがエラーを表示しない設定になっているようですので、php.iniあるいは.htaccessでエラーを表示させて確認してください。
※どちらで設定するかは、使用しているサーバーによって異なります。
http://www.xserver.ne.jp/faq_service_php.php#01
sv1~sv35サーバー ・・・ .htaccess
php_flag display_errors On
sv50サーバー以降 ・・・ php.ini
display_errors = On
※なお、エラー出力レベルを「E_ALL」など「E_NOTICE」レベルが含まれている値に設定した場合、軽微な文法違反がたくさん出ます。
以下を設定して確認してみてください。
.htaccess
php_value error_reporting 2047
php.ini
error_reporting = E_ALL
対処方法は以下になります。
1.165行目から181行目付近にある「$video[video_xxx]」を「'」または「"」で囲んで「$video['video_xxx']」のようにする。
2.240行目付近にある「if($_POST['ajaxrequest']!=1) ~ 」という行の前に1行追加して以下のようにする。
$_POST['ajaxrequest'] = null;
if($_POST['ajaxrequest']!=1){ //If not an ajax request
3.206行目から209行目付近にある「$video[video_xxx]」を「'」または「"」で囲んで「$video['video_xxx']」のようにする。
上記の3つを行えば、エラーは表示されなくなります。
ご親切に追記コメントいただき有り難うございます。初回の返信での件ですが、
mysql_set_charset("utf8");をコメントアウトすれば動きました^^;
ご指摘のとおりにphp.iniでエラーを表示させてみたところ
Call to undefined function mysql_set_charset() in・・・・と
エラー表示が帰ってきたので、文字コードセットで何かあるみたいです。
コメントアウトして特に文字化け等発生してないので、このままでいいのかな?と
そのまま使用しています。
mysql_set_charset()がPHP 5.2.3以降でないと使用できないのが原因です。
文字化けしていないそうですのでそのままで大丈夫なはずですが、MySQL 4.1以降を使用する場合は、「mysql_query("SET NAMES スクリプトの文字コードに合わせた文字セット名")」で文字コードを設定してください。
http://dev.mysql.com/doc/refman/4.1/ja/charset-charsets.html
※PHPが5.2.3以降で、MySQLが5.0.7以降の場合は、mysql_set_charset()が推奨されています。
http://php.net/manual/ja/function.mysql-set-charset.php
MySQL 4.0を使用しているのでしたら、そのまま(文字コードをセットしない)で大丈夫だと思います。
ご自分だけで使用するのかもしれませんが一応・・・
$post_title = $_POST["video_title"];
上記の行を次のように変更してください。(※手順7で変更した部分です。)
$post_title = strip_tags($_POST["video_title"]);
※HTMLタグがすべて削除されます。
※変更するのは上記1行だけです。(次の行はそのまま)