Today: Yesterday: Total: Online:
カテゴリー
その他
  • RSS1.0
  • RSS2.0
  • atom0.3
  • valid XHTML1.0
  • valid CSS2
  • Credit
RSSリーダーで購読する | この日記のはてなブックマーク数 | プロフィール
コメントが一番多い記事(233コメント):人の心理の裏をかくホームページ集客術:リピータになってもらうためには
ツイートが一番多い記事(94ツイート):ちょっと待て!twitterやfacebookに子供の写真を掲載する親達への警告
いいねが一番多い記事(574いいね):facebookスパムに要注意。なりすましの見分け方とアカウント乗っ取りの手口(2013年度版)

カテゴリー » Web/ミディリン July 25, 2004

7ヶ月連続更新+音楽ライブラリ再構築 ID:1090681200


自分がリーダーをしていた仕事が今年最初からあったのですが
7月いっぱいで終わります。
4月までは要件定義、外部設計、内部設計、コーディング、単体テストと
忙しかったのですが、一ヶ月前倒しで進めていたことから
(本当はコーディングで、5月末までが単体テスト予定)
5月、6月、7月前半で統合テスト、システムテストも終わり
予定より2週間早くリリースができ、
今は保守で様子見をしているのですが
重大なバグもおきず、今週1週間でようやく終わります。

ミディリンも気がついたら1月4日から7ヶ月近く毎日連続更新をしており
O型面倒くさがりや人間なのに、意外とマメなところもあったのだなと
自分で驚きながら更新をしている毎日なのですが

仕事のほうは今月は落ち着いている一方
ミディリンの方が慌ただしいです。

今、音楽ライブラリ(MIDI、MP3など)の再構築をしており、
今まではHTMLにより更新係さんに更新してもらっていました。
HTML更新なので、更新は楽(技術的に楽という意味)にできるのですが
HTMLベースなので検索ができなかったり
登録者情報が変わった場合、一個ずつ曲を探して書きかえるなど
メンテナンスをするときに膨大な作業がかかるのが現状でした。

それを改善するために、前回掲示板過去ログシステムで失敗に終わった
PHP+Mysqlに再チャレンジし、
音楽の検索・登録・修正・削除システムを作っています。

例えば、1人の人が20曲投稿したとします。
その人のURLとメールアドレスが変わったら、
HTMLだと20×2=40個書き換えないといけません。

しかし、DBを使うことによって登録者情報のテーブルを1つ作り、
その登録者情報と曲をリレーショナルDBを使い結合して出力するという方式をとるため
(ただのCSVによるファイル検索だとこれができなく全情報を置換しなければいけない)
今度の新システムは、メールアドレス、URLを1回ずつ変えるだけでいいのです。
その辺りは更新のメリットがかなり上がりますね。

あとは1つ音楽のジャンルを追加したら
他のページにも自動的に追加されるような仕組みや
あとは曲名や作曲者で検索できて、かつ
作曲者検索に投稿者別の投稿数ランキング(投稿数が多い投稿者ほど上位に表示される)などを作成しようと思ってます。

そこでシステムを構築するための前準備に入りました。
一番最初に苦戦したのが、毎度の事ながらHTMLからCSVをつくる作業です。
今回は約280曲を、一個ずつすべてコピー&ペーストを行ったため、
1曲の登録情報が
ハンドルネーム、ジャンル、曲名、ファイル名(DL先)、メールアドレス、感想LV、音源、コメント、更新日などあると、
280×項目だけあるので
CSVを作成する為に数千回のコピー&ペーストを行う気が遠くなる作業から手をつけました。
これが20時間くらいかけて、とりあえず現ライブラリのものはほぼ終了です。

次にDB設計を考え、作成したDBにCSVデータを流し込み、データ格納終了です。

次に検索システムは、上記で挙げた
ライブラリ検索や、投稿者検索、投稿者ランキングなど案を作成し
現機能としてあるライブラリ検索のみ早急に作りました。
その他の投稿者検索、投稿者ランキングは後付で制作します。

それと登録・修正・削除システムです。
更新係さんが曲や投稿者の情報を登録・更新するシステムで
今まではファイルを更新するときに更新係さんが
HTMLを直接編集するという作業でしたが
ブラウザで必要項目を入力すると
後は自動的にライブラリに反映され、検索や作曲者検索、ランキングにも同時に反映されるという仕組みです。

これが一番難易度が高く、画面だけで、何十画面となり
IDとパスワードでシステムにログインした後、
登録や、修正などを行うと自動的にID名をデータとしてもち
どのデータをいつ、誰が修正したかを自動記録するようにしています。

また、今までは更新日も手で入力していましたが
更新した日が自動的に入るような仕組みです。

できるだけ、PHPでテンプレートを作り、
同じテンプレートで登録や修正ができ
パラメータの渡し方を変えて登録・修正・削除・内部検索ができるように作成中です。

仕事をしながらこのシステムを構築するだけでも
暇な時間にやっているので数ヶ月かかりますが・・・・・


もう1つ、サイト移転という大きな作業があります。
トップページのso-netはかわらないのですが
チェルトや音楽、イラスト、掲示板、リディア同盟などが置いてある
さくらネットが移動になるので、ミディリンの8割以上を
移動するという涙がちょちょぎれる作業があるんです。

音楽のライブラリ更新にかかってくるので
旧サイトでは旧音楽ライブラリを使って
新サーバー移転後、音楽システムが完成したら新しいライブラリに移行しようと考えています。

自分でこういうシステムの仕事をするようになってから
システムを仕事で作るには何千万円くらいかかるのかという予想はつくようになったのですが
ミディリンのシステムと移転構築を仕事(要件定義〜設計〜コーディング〜テスト)として頼むと、
システムとしては小規模ながらも750万円以上〜1000万円位はかかるだろうなと
(1人単価:80万(安いSE、PGさん)を3人で3人月ちょっと〜4人月くらいかかるという見積もり)
これを一人で仕事と併用しながら、趣味でやるには大きいよ、つらいよという泣きごとを言いながらも、
趣味サイトで、技術者を雇うこともできないので、
前回のログ検索システムもシステムはそのものはできていたので
プログラムを流用できるところは流用してプログラム組んでいます。

作っているプログラムはこんなの↓
(まだ完成の1/20にも至ってない)



<?php /// 2004.6.26 Makoto Yasuda Create /// ?>

<?php

//////////各設定値を決める//////////

//DBの設定値の記入

function db_property(){

   //DB名

   $dbname = "●";

   //ホスト名

   $hostname = "●";

   //userid

   $userid = "●";

   //password

   $passwd = "●";   

   

   return array($dbname,$hostname,$userid,$passwd);

}


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

//・配列を取得して出力する

//・tableタグも付属して出力

//・アンカータグを埋め込み、hiddenフィールドにlink情報に

// どこからクリックされたかを判別するJavascritpをセット

//・printArrayTableLinkと違うところは、hiddenフィールドが2つに対応

function printArrayTableLink2($doublearray,$tr_haba,$td_width,$formname,$hiddename,$hiddenarray){


   $linkarray = $doublearray[0];

   $namearray = $doublearray[1];

      

   //ループカウント

   $roop_count = count($linkarray) + ($tr_haba - count($linkarray)%$tr_haba);

   

   echo "<table border=0>";

   //チェックボックス表示

   for($i=0;$i<$roop_count;$i++){


      if($i%$tr_haba==0){

         echo "<tr valign=top>";

      }

      echo "<td width=" . $td_width . ">";

      if($i < count($linkarray)){

         

         echo "<a href=\"javascript:Submit('".$formname."')\""
;

         echo " onclick=\"window.document.".$formname.".link.value='"
. $linkarray[$i] ."';";

         echo "window.document.".$formname."." . $hiddename.
".value='" . $hiddenarray[$i] ."'\">";

         echo $namearray[$i];

         echo "</a>";

      }

      echo " </td>";

      

      if($i%$tr_haba==$tr_haba-1){

         echo "</tr>";

      }

   }

   echo "</table>";

   

}

?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

//空かnullなら空を表示して、値があればそのまま表示

function printNullCheck($data){

   if($data==null || $data=='' || $data == '0000-00-00'){

      return "";

   }

   return $data;

}

?>


<?php /// 2004.07.04 Makoto Yasuda Create /// ?>

<?php


//SQLを実行する(select専用)

function sql_run($con,$sql){

   //select文を実行

   if(!$res=mysql_query($sql)){

      echo "SQL失敗";

      mysql_close($con);//データベースを切断      

      exit;

   }


   if (!($rs = mysql_query($sql))) {

      die;

   }

   else{

      return array($res,$rs);

   }         

}


//SQLを実行する(select以外)

function sql_run_otherselect($con,$sql){

   //select文を実行

   if(!$res=mysql_query($sql)){

      echo "SQL失敗";

      mysql_close($con);//データベースを切断      

      exit;

   }

   else{

      return array($res,$rs);

   }         

}

?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php   


$pagestate = $_POST['pagestate'];

echo "<input type=hidden name=id value=".$id.">";

echo "<input type=hidden name=pass value=".$pass.">";

echo "<input type=hidden name=pagestate value=".$pagestate.">";




?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

   //ヘッター読み込み

   include '../comm/header.php';

   

   include '../comm/property.php';

   include '../comm/sql_run.php';

   

   include 'music_sql.php';

   include 'music_control_pagestate.php';

   

?>

<?php   

   $db_key = db_property();//DB設定値の読み込み


   //データベースに接続

   if(!$con=mysql_connect($db_key[1],$db_key[2],$db_key[3])){

      echo "接続失敗";

      exit;

   }

   //データベースを選択

   $row=mysql_select_db($db_key[0],$con);

      

   $id = $_POST['id'];

   $pass = $_POST['pass'];

   

   $sql = sql_login($id,$pass);

   $rs_array = sql_run($con,$sql);


   $res = $rs_array[0];

   $rs = $rs_array[1];

   


   //ログイン失敗

   if(mysql_num_rows($rs)!=1){

      echo "<font color=red>IDかパスワードが間違っています。</font><p>";

      echo "<a href=\"music_control_login.php\">認証画面に戻ります</a>";

   }

   //ログイン成功

   else{



      //注意書きの表示

      include 'music_control_attention.php';

      

               

      echo "<form name=\"mainform\" method=\"post\"
action=\"music_control_index.php\">";

   

      //hidden項目の保持

      include 'music_control_hiddenhold.php';

             

             

      //メニュー表示//

      echo "<font color=#FF00FF>【検索・登録・修正・削除メニュー一覧】</font>";

      echo "<table border=0 width=500>";

      echo "<tr>";

      echo "<td width=125><font color=#FF00FF>■</FONT><a
href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaSearch()."'\">投稿者検索</a></td>";      

      echo "<td width=125><font color=#FF00FF>■</FONT><a
href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaAdd()."'\">投稿者登録</a></td>";

      echo "<td width=125><font color=#FF00FF>■</FONT><a
href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaEdit()."'\">投稿者修正</a></td>";

      echo "<td width=125><font color=#FF00FF>■</FONT><a
href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaDel()."'\">投稿者削除</a></td>";

      echo "<tr>";

      echo "</table><HR>";

      

      

             

      ////////////////各機能////////////////

      //+投稿者検索+//

      if($pagestate==pagestate_toukousyaSearch()){

         $pagename = "検索";

         include 'music_control_toukousyaSearch.php';

      }

      //+投稿者検索結果リスト+//

      else if($pagestate==pagestate_toukousyaSearchResultList()){

         $pagename = "検索リスト";

         $nextpagestate = pagestate_toukousyaSearchResultdetails();//次ページステータスセット

         include 'music_control_toukousyaSearchResultList.php';

      }

      //+投稿者検索詳細+//

      else if($pagestate==pagestate_toukousyaSearchResultdetails()){

         $pagename = "検索詳細";

         include 'music_control_toukousyaSearchResultdetails.php';

      }

      //+投稿者登録+//

      else if($pagestate==pagestate_toukousyaAdd()){

         $pagename = "登録";

         include 'music_control_toukousyaAdd.php';

      }

      //+投稿者登録終了+//

      else if($pagestate==pagestate_toukousyaAdd_end()){

         include 'music_control_toukousyaAdd_end.php';

      }   

      //+投稿者修正+//

      else if($pagestate==pagestate_toukousyaEdit()){

         $pagename = "修正";

         include 'music_control_toukousyaEdit.php';

      }

      //+投稿者修正検索結果リスト+//

      else if($pagestate==pagestate_toukousyaEditSearchResultList()){

         $pagename = "修正検索リスト";

         $nextpagestate = pagestate_toukousyaEditSearchResultdetails();//次ページステータスセット

         include 'music_control_toukousyaEditSearchResultList.php';

      }

      //+投稿者修正検索詳細+//

      else if($pagestate==pagestate_toukousyaEditSearchResultdetails()){

         $pagename = "修正検索詳細";

         include 'music_control_toukousyaEditSearchResultdetails.php';

      }

      //+投稿者修正終了+//

      else if($pagestate==pagestate_toukousyaEdit_end()){

         include 'music_control_toukousyaEdit_end.php';

      }      

      //+投稿者削除+//

      else if($pagestate==pagestate_toukousyaDel()){

         $pagename = "削除";

         include 'music_control_toukousyaDel.php';

      }

         

      echo "</form>";

      echo "<HR><font color=#FF00FF>■</FONT><a href=\"music_control_login.php\">ログアウトをします</a>";

   }

   

   

   //データベースを切断

   mysql_close($con);

?>

   

<?php

   //フッター読み込み

   include '../comm/footer.php';

?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

//////////ページステータス//////////


//登録者検索

function pagestate_toukousyaSearch(){

      return "toukousyaSearch";

}

//登録者検索結果リスト

function pagestate_toukousyaSearchResultList(){

      return "toukousyaAddSearchResultList";

}

//登録者検索詳細

function pagestate_toukousyaSearchResultdetails(){

      return "toukousyaSearchResultdetails";

}

//登録者追加

function pagestate_toukousyaAdd(){

      return "toukousyaAdd";

}

//登録者追加終了

function pagestate_toukousyaAdd_end(){

      return "toukousyaAdd_end";

}

//登録者修正

function pagestate_toukousyaEdit(){

      return "toukousyaEdit";

}

//登録者修正検索結果リスト

function pagestate_toukousyaEditSearchResultList(){

      return "toukousyaEditSearchResultList";

}

//登録者修正検索詳細

function pagestate_toukousyaEditSearchResultdetails(){

      return "toukousyaEditSearchResultdetails";

}

//登録者修正終了

function pagestate_toukousyaEdit_end(){

      return "toukousyaEdit_end";

}

//登録者削除

function pagestate_toukousyaDel(){

      return "toukousyaDel";

}


?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>


<?php


   //値取得

   $toukousya_name = $_POST['toukousya_name'];

   $mailaddress = $_POST['mailaddress'];

   $hpurl = $_POST['hpurl'];


   //入力チェック   

   //DBに削除区分が0のもので、同一の投稿者名がいたらエラーで、

   //フィールドの値は保持したまま

   $sql = sql_get_toukousya(" and 投稿者 = '".$toukousya_name."'");


   $rs_array = sql_run($con,$sql);


   $res = $rs_array[0];

   $rs = $rs_array[1];


   //登録エラー:投稿者重複がいた場合

   if(mysql_num_rows($rs)!=0){

      echo "<font color=red>既に同じ投稿者名が存在していますので登録できません。</font><p>";

      include 'music_control_toukousyaAdd.php';      

   }

   //

   else{

      //投稿者IDのMAX取得   

      $sql = sql_toukousya_id_max();

      $rs_array = sql_run($con,$sql);

      while($row=mysql_fetch_array($rs_array[0])){

         $toukousya_id_max = $row["max_id"];

      }

      $toukousya_id_max_int_plus = (int)substr($toukousya_id_max,1)+1;

      $rp_cnt = 4 - strlen($toukousya_id_max_int_plus);//4桁にそろえるため

      for($j=0;$j<$rp_cnt;$j++){

         $toukousya_id_max_int_plus = "0".$toukousya_id_max_int_plus;//0付加

      }

      $toukousyaid = "T".$toukousya_id_max_int_plus;//新規投稿者ID

      $kousinsya = $id;

      //データinsert

      $sql = sql_insert_toukousya($toukousyaid,$toukousya_name,$mailaddress,$hpurl,$kousinsya);


      $rs_array = sql_run_otherselect($con,$sql);

      

      //メッセージ表示

      echo "<font color=red>データを登録しました。</font><p>";

   }

?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>


<?php

   include 'music_control_toukousyaTempUnit.php';      

?>

<?php

   //登録ボタン

   echo "  <a href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaAdd_end()."'\">登録します</a>";

?>

<?php /// 2004.7.25 Makoto Yasuda Create /// ?>


<?php


   //値取得

   $toukousya_id = $_POST['toukousya_id'];

   $toukousya_name = $_POST['toukousya_name'];

   $mailaddress = $_POST['mailaddress'];

   $hpurl = $_POST['hpurl'];


   //入力チェック   

   //DBに削除区分が0のもので、自分以外の投稿者IDで、変更後の名前に同一の投稿者名がいたらエラーで、

   //フィールドの値は保持したまま

   $sql = sql_get_toukousya(" and 投稿者 = '".$toukousya_name."'
and not 投稿者ID = '".$toukousya_id."'");

   echo $sql;

   $rs_array = sql_run($con,$sql);


   $res = $rs_array[0];

   $rs = $rs_array[1];


   //登録エラー:投稿者重複がいた場合

   if(mysql_num_rows($rs)!=0){

      echo "<font color=red>既に同じ投稿者名が存在していますので登録できません。</font><p>";

      include 'music_control_toukousyaEdit_end.php';      

   }

   //

   else{

      /*

      //投稿者IDのMAX取得   

      $sql = sql_toukousya_id_max();

      $rs_array = sql_run($con,$sql);

      while($row=mysql_fetch_array($rs_array[0])){

         $toukousya_id_max = $row["max_id"];

      }

      $toukousya_id_max_int_plus = (int)substr($toukousya_id_max,1)+1;

      $rp_cnt = 4 - strlen($toukousya_id_max_int_plus);//4桁にそろえるため

      for($j=0;$j<$rp_cnt;$j++){

         $toukousya_id_max_int_plus = "0".$toukousya_id_max_int_plus;//0付加

      }

      $toukousyaid = "T".$toukousya_id_max_int_plus;//新規投稿者ID

      $kousinsya = $id;

      //データinsert

      $sql = sql_insert_toukousya($toukousyaid,$toukousya_name,$mailaddress,$hpurl,$kousinsya);


      $rs_array = sql_run_otherselect($con,$sql);

      */

      //メッセージ表示

      echo "<font color=red>データを修正しました。</font><p>";

   }

?>


<?php /// 2004.7.25 Makoto Yasuda Create /// ?>


<?php

      $pagename = "修正検索";

      echo "修正対象物を限定するため検索してください<BR>";

      include 'music_control_toukousyaTempUnit.php';      

?>

<?php

   //検索ボタン

   echo "  <a href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaEditSearchResultList()."'\">検索します</a>";

?>


<?php /// 2004.7.24 Makoto Yasuda Create /// ?>


<?php

   include 'music_control_toukousyaSearchResultdetails.php';      

?>

<?php

   //修正ボタン

   echo "  <a href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaEdit_end()."'\">修正します</a>";

?>


<?php /// 2004.7.24 Makoto Yasuda Create /// ?>


<?php

   include 'music_control_toukousyaSearchResultdetails.php';      

?>

<?php

   //修正ボタン

   echo "  <a href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaEdit_end()."'\">修正します</a>";

?>


<?php /// 2004.7.24 Makoto Yasuda Create /// ?>


<?php

      include 'music_control_toukousyaSearchResultList.php';      

?>


<?php /// 2004.7.24 Makoto Yasuda Create /// ?>


<?php

      $pagename = "検索";

      include 'music_control_toukousyaTempUnit.php';      

?>

<?php

   //検索ボタン

   echo "  <a href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.pagestate.value='".pagestate_toukousyaSearchResultList()."'\">検索します</a>";

?>


<?php /// 2004.7.24 Makoto Yasuda Create /// ?>


<?php

   $list_key = $_POST['list_key'];//キー項目取得

   

   $sql = sql_get_toukousya(" and 投稿者ID = '".$list_key."'");


   $rs_array = sql_run($con,$sql);

   

   $res = $rs_array[0];

   $rs = $rs_array[1];

   

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

      $toukousya_id = $row["投稿者ID"];

      $toukousya_name = $row["投稿者"];

      $mailaddress = $row["メールアドレス"];

      $hpurl = $row["URL"];

   }

   include 'music_control_toukousyaTempUnit.php';      

?>

<?php /// 2004.7.24 Makoto Yasuda Create /// ?>


<?php


   //値取得

   $toukousya_name = $_POST['toukousya_name'];

   $mailaddress = $_POST['mailaddress'];

   $hpurl = $_POST['hpurl'];

   

   //SQLパラメータ設定

   if($toukousya_name!=''){

      $param = $param ." and 投稿者 = '".$toukousya_name."'";

   }

   if($mailaddress!=''){

      $param = $param ." and メールアドレス = '".$mailaddress."'";

   }

   if($hpurl!=''){

      $param = $param ." and URL = '".$hpurl."'";

   }


   //投稿者一覧

   $sql = sql_get_toukousya($param);


   $rs_array = sql_run($con,$sql);


   $res = $rs_array[0];

   $rs = $rs_array[1];

   

   //投稿者がいなかった場合

   if(mysql_num_rows($rs)==0){

      echo "<font color=red>検索条件の投稿者が存在しません</font><p>";

      include 'music_control_toukousyaSearch.php';      

   }

   //投稿者が存在するとき

   else{

      echo "検索結果<font color=red>".mysql_num_rows($rs)."件</font><p>";

      //検索結果を配列に格納

      $j=0;

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

         $toukousya_id_List[$j] = $row["投稿者ID"];

         $toukousya_name_List[$j] = $row["投稿者"];

         $mailaddress_List[$j] = $row["メールアドレス"];

         $hpurl_List[$j] = $row["URL"];

      }

      

      include 'music_control_toukousyaTempList.php';

   }

?>


<?php /// 2004.7.24 Makoto Yasuda Create /// ?>




<table width="500" border="0" cellspacing="4"
bgcolor="#FF6600">

<tr>

<td><font color="#FFFFFF"><b>■パステル・ミディリン音楽ライブラリ更新:投稿者

<?php

echo $pagename;

?>

画面</b></font></td>

</tr>

</table>


<table width="500" border="0" cellpadding="3">

<tr>

<td width="50"> </td>

<td width="100">登録者</td>

<td width="150">メールアドレス</td>

<td width="200">URL</td>

</tr>

<?php

   for($k=0;$k<count($toukousya_id_List);$k++){

    echo "<tr valign=\"top\">";

    echo " <td width=\"50\"><input type=hidden name=list_key><a
href=\"javascript:Submit('mainform')\" onclick=\"window.document.mainform.list_key.value='".$toukousya_id_List[$j]."';window.document.mainform.pagestate.value='".$nextpagestate."'\">[詳細]</a> </td>";

    echo " <td width=\"100\">".$toukousya_name_List[$j]." </td>";

    echo " <td width=\"150\">".$mailaddress_List[$j]." </td>";

    echo " <td width=\"200\">".$hpurl_List[$j]." </td>";

    echo "</tr>";

   }


?>

</table>

<?php /// 2004.7.24 Makoto Yasuda Create /// ?>




<table width="500" border="0" cellspacing="4"
bgcolor="#FF6600">

<tr>

<td><font color="#FFFFFF"><b>■パステル・ミディリン音楽ライブラリ更新:投稿者

<?php

echo $pagename;

?>

画面</b></font></td>

</tr>

</table>


<?php

   //投稿者ID

   echo "<input type=hidden name=toukousya_id value=" .$toukousya_id.">";

?>

<table width="75%" border="0">

<tr>

<td>投稿者名</td>

<td>

<?php

echo "<input type=text name=toukousya_name value=" .$toukousya_name.">";

?>

</td>

</tr>

<tr>

<td>メールアドレス</td>

<td>

<?php

echo "<input type=text name=mailaddress size=40 value=" .$mailaddress.
">";

?>

</td>

</tr>

<tr>

<td>ホームページURL</td>

<td>

<?php

echo "<input type=text name=hpurl size=50 value=" .$hpurl. ">";

?>

</td>

</tr>

</table>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php


//MIDI一覧

function music_genre_original_midi($con){

   

   $sql = sql_get_genre_original_midi();

   $temp = music_genre_original_comm_set($con,$sql);

   return $temp;

}


//MP3一覧

function music_genre_original_mp3($con){

   

   $sql = sql_get_genre_original_mp3();

   $temp = music_genre_original_comm_set($con,$sql);

   return $temp;

}


function music_genre_original_comm_set($con,$sql){

   $rs_array = sql_run($con,$sql);


   $res = $rs_array[0];

   $i = 0;

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

      $temp01[$i] = $row["ジャンル"];

      $temp02[$i] = $row["ジャンル日本語名"];

      $temp03[$i] = $row["音楽拡張子区分"];

      $i++;

   }

   $temp = array($temp01,$temp02,$temp03);

   

   return $temp;

}

?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

   //ヘッター読み込み

   include '../comm/header.php';

?>

<?php

   //その他読み込み

   include '../comm/property.php';

   include '../comm/sql_run.php';

   include '../comm/printArrayTableLink2.php';

   

   include 'music_sql.php';

   include 'music_sum_original.php';

   include 'music_genre_original.php';


?>



<font color="#FF00FF">【読者投稿】(投稿については<a href="../toukou/index-frame.html">こちら</a>をご覧下さいね♪)<br>

●<font color="#FF00FF">オリジナル曲:

<?php

   //オリジナル音楽の総曲数

   $db_key = db_property();//DB設定値の読み込み

   //データベースに接続

   if(!$con=mysql_connect($db_key[1],$db_key[2],$db_key[3])){

      echo "接続失敗";

      exit;

   }


   //データベースを選択

   $row=mysql_select_db($db_key[0],$con);


   //MIDIの総計   

   $sum_midi = music_sum_original_midi($con);

   

   //MIDI以外の総数

   $sum_midiother = music_sum_original_midiother($con);

   

   //曲数表示

   echo $sum_midi + $sum_midiother ."曲";

   echo "(MIDI:" . $sum_midi."曲/";

   echo "MP3:" .$sum_midiother."曲)";

?>

</font></font>

<br>

(オリジナル曲更新係:リュートさん・JASRAC_URL登録曲更新係:藤原光成さん)

<?php

//formの定義

$formname = "mainform";

$hidden2 = "syubetu";


echo "<form action=\"music_search_result.php\" name=\"".$formname."\"
method=\"POST\">";

echo "<input type=hidden name=link>";

echo "<input type=hidden name=" . $hidden2. ">";




   //折り返し行

   $tr_haba = 4;

   $td_width = 125;

   

   //音楽ジャンル(MIDI)

   $genre_midi = music_genre_original_midi($con);


   //音楽ジャンル(MP3)

   $genre_mp3 = music_genre_original_mp3($con);


   echo "<font color=\"#FF00FF\">◆MIDI</font>";

   printArrayTableLink2($genre_midi,$tr_haba,$td_width,$formname,$hidden2,$genre_midi[2]);


   echo "<font color=\"#FF00FF\">◆MIDI以外(MP3など)</font>";

   printArrayTableLink2($genre_mp3,$tr_haba,$td_width,$formname,$hidden2,$genre_mp3[2]);

   

   //データベースを切断

   mysql_close($con);

?>


</form>


<?php

   //フッター読み込み

   include '../comm/footer.php';

?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

//リンク切れ区分が0でなければ、リンク切れという文字を出力

function music_print_linkgure($data){

   if($data=='1'){

      return "リンク切";

   }

   return "";


}

?>


<?php /// 2004.6.26 Makoto Yasuda Create /// ?>

<?php

//////////各設定値を決める//////////


function music_file_pass_midi(){

      return "http://www.kasumi.sakura.ne.jp/~midilin/";

}


function music_file_pass_othermidi_text(){

      return "http://www.kasumi.sakura.ne.jp/~midilin/";

}


?>

<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

   //ヘッター読み込み

   include '../comm/header.php';

   include '../comm/property.php';

   include '../comm/sql_run.php';

   include '../comm/printNullCheck.php';

   include 'music_sql.php';

   include 'music_genre_original.php';

   include 'music_property.php';

   include 'music_print_linkgure.php';

?>

<?php   

   $db_key = db_property();//DB設定値の読み込み


   //データベースに接続

   if(!$con=mysql_connect($db_key[1],$db_key[2],$db_key[3])){

      echo "接続失敗";

      exit;

   }

   //データベースを選択

   $row=mysql_select_db($db_key[0],$con);

      

   $sql_key = $_POST['link'];

   $syubetu_flag = $_POST['syubetu'];

   

   

   $sql_param = " and ジャンル = '" . $sql_key ."'";

   ////midiの場合////

   if($syubetu_flag==1){

      $sql = sql_get_original_midi_outerjoin($sql_param);      

   }

   ////midi以外の場合////

   else{

      $sql = sql_get_original_othermidi_outerjoin($sql_param);

      

      echo "「リンク切」と表示されているものは、こちらでリンクが切れているものを確認しているものです。データ作成者に直接お問い合わせください。";

   }


   $rs_array = sql_run($con,$sql);


   $res = $rs_array[0];

   $i = 0;

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

      

      //HTML出力部分

         echo "<P align=center><B><FONT color=#ff00ff size=5><I>".printNullCheck($row["更新日"])."</I></FONT></B>
<BR>";

         echo "<FONT size=+1><B>-<A href=\"mailto:".$row["メールアドレス"]."\">".$row["投稿者"]."</A>-</B></FONT>
";      

         echo "<DIV align=center>";

         echo "<TABLE style=\"BORDER-COLLAPSE: collapse\"
borderColor=#111111 cellSpacing=3 cellPadding=5 width=500 border=0><TR
align=middle>";      

      //midiの場合

      if($syubetu_flag==1){

         $filepassmidi = music_file_pass_midi() . $row["ファイルパス"];

         echo "<TD width=40 bgColor=#FFFF77>midi</TD><TD
width=240 bgColor=#ccffcc><P align=center><B><A href=\"".$filepassmidi."\">".$row["曲名"]."</A></B></P></TD>";

         echo "<TD width=160 bgColor=#ffccff><P align=center>".$row["音源"]."</P></TD>";

      }

      ///midi以外の場合

      else{

         echo "<TD width=40 bgColor=#FFFF77>mp3</TD><TD
width=240 bgColor=#ccffcc><P align=center><B><A href=\"".$row["ファイルパス"]."\">".$row["曲名"]."</A></B></P></TD>";

         echo "<TD width=50 bgColor=#ffccff><P align=center><A
href=\"".music_file_pass_othermidi_text().$row["テキストファイルパス"]."\">txt</A></P></TD>";

         echo "<TD width=50 bgColor=#ffccff><P align=center>".$row["容量"]."</P></TD>";

         echo "<TD width=60 bgColor=#ffccff><P align=center>".music_print_linkgure($row["リンク切れ区分"])."</P></TD>";

         

      }

      

      echo "<TD width=60 bgColor=#aaeaff>".$row["感想Lv"]."</TD></TR>";

      echo "</TABLE>";

      

      echo "<TABLE style=\"BORDER-COLLAPSE: collapse\" borderColor=#111111
cellSpacing=3 cellPadding=5 width=500 border=0><TR align=middle>";

      echo "<TR align=middle><TD bgColor=lemonchiffon colSpan=3>".$row["コメント"]."</TD></TR>";

      echo "</TABLE>";

   }


   //データベースを切断

   mysql_close($con);

?>

      

<!--




</DIV>

-->




<?php

   //フッター読み込み

   include '../comm/footer.php';

?>


<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

//オリジナル音楽の総数(MIDI)を求める

function sql_get_sum_music_original_midi(){

   $sql = "select count(*) as count from music_original_midi where not
削除区分 = 1;";

   return $sql;

}


//オリジナル音楽の総数(MIDI以外)を求める

function sql_get_sum_music_original_midiother(){

   $sql = "select count(*) as count from music_original_othermidi where
not 削除区分 = 1;";

   return $sql;

}


//ジャンル全部取得

function sql_get_genre_original(){

   $sql = "select ジャンル,ジャンル日本語名,音楽拡張子区分 from genre_original_mst where not
削除区分 = 1";

   return $sql;

}


//ジャンルMIDI取得

function sql_get_genre_original_midi(){

   $sql = "select ジャンル,ジャンル日本語名,音楽拡張子区分 from genre_original_mst where not
削除区分 = 1 and 音楽拡張子区分 = 1";

   return $sql;

}


//ジャンルMP3取得

function sql_get_genre_original_mp3(){

   $sql = "select ジャンル,ジャンル日本語名,音楽拡張子区分 from genre_original_mst where not
削除区分 = 1 and 音楽拡張子区分 = 2";

   return $sql;

}


//midi検索

function sql_get_original_midi($param){

   $sql = "select id,ジャンル,音楽シリアルNo,投稿者ID,曲名,ファイルパス,音源,感想Lv,コメント,更新者,更新日,更新時刻,削除区分
from music_original_midi where not 削除区分 = 1 " .$param;

   return $sql;

}


//midi検索(外部結合)

function sql_get_original_midi_outerjoin($param){

   $sql = "select mom.id,mom.ジャンル,mom.音楽シリアルNo,mom.曲名,mom.ファイルパス,mom.音源,mom.感想Lv,mom.コメント,mom.更新日,mom.更新者,mom.更新時刻,mom.削除区分,cm.投稿者,cm.メールアドレス,cm.URL
from music_original_midi mom left outer join contributor_mst cm on mom.投稿者ID
= cm.投稿者ID where not mom.削除区分 = 1 and not cm.削除区分 = 1 " .$param;

   return $sql;

}


//midi以外検索

function sql_get_original_othermidi($param){

   $sql = "select id,ジャンル,音楽シリアルNo,投稿者ID,曲名,ファイルパス,テキストファイルパス,容量,感想Lv,コメント,更新者,更新日,更新時刻,リンク切れ区分,削除区分
from music_original_othermidi where not 削除区分 = 1 " .$param;

   return $sql;

}


//midi以外検索(外部結合)

function sql_get_original_othermidi_outerjoin($param){

   $sql = "select moom.id,moom.ジャンル,moom.音楽シリアルNo,moom.投稿者ID,moom.曲名,moom.ファイルパス,moom.テキストファイルパス,moom.容量,moom.感想Lv,moom.コメント,moom.更新者,moom.更新日,moom.更新時刻,moom.リンク切れ区分,moom.削除区分,cm.投稿者,cm.メールアドレス,cm.URL
from music_original_othermidi moom left outer join contributor_mst cm on moom.投稿者ID
= cm.投稿者ID where not moom.削除区分 = 1 and not cm.削除区分 = 1 " .$param;

   return $sql;

}

//ログイン

function sql_login($id,$pass){

   $sql = "select id,pass from music_system_login where id = '".$id."'
and pass = '".$pass."'";

   return $sql;

}

//投稿者一覧取得

function sql_get_toukousya($param){

   $sql = "select 投稿者ID,投稿者,メールアドレス,URL,更新者,更新日,更新時刻,削除区分 from contributor_mst
where not 削除区分 = 1" .$param;

   return $sql;

}

//投稿者全項目insert(削除区分は除く)

function sql_insert_toukousya($toukousyaid,$toukousyaname,$mailaddress,$url,$kousinsya){

   $sql = "insert into contributor_mst (投稿者ID,投稿者,メールアドレス,URL,更新者,更新日,更新時刻,削除区分)
values ('".$toukousyaid."','".$toukousyaname."','".$mailaddress."','".$url."','".$kousinsya."',current_date,current_time,0)";

   return $sql;

}

//投稿者IDのMAX取得:削除区分の有無に限らずMAXを取得。登録者IDは削除区分があっても重複を行わせない

function sql_toukousya_id_max(){

   $sql = "select MAX(投稿者ID) as max_id from contributor_mst";

   return $sql;

}

?>




<?php /// 2004.7.23 Makoto Yasuda Create /// ?>

<?php

//オリジナル音楽の総数(MIDI)を求める

function music_sum_original_midi($con){

   

   $sql = sql_get_sum_music_original_midi();

   $rs_array = sql_run($con,$sql);


   $res = $rs_array[0];

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

      $count = $row["count"];

   }

   

   return $count;

}


//オリジナル音楽の総数(MIDI以外)を求める

function music_sum_original_midiother($con){

   

   $sql = sql_get_sum_music_original_midiother();

   $rs_array = sql_run($con,$sql);


   $res = $rs_array[0];

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

      $count = $row["count"];

   }

   

   return $count;

}

?>


— posted by midilin @ 12:00AM | Comment (0) | TrackBack (1) 

カテゴリー » 食べ物 July 10, 2004

続・8段アイス ID:1089428400


そういえば5月30日の日記で8段ソフトクリームの話をしたのですが、
新大久保にも八段ソフトクリームがあったので食らってきました。

八段アイスver2


バッファローマンのロングホーンのようなアイスです。
前回の八色ソフトクリームと比べると色合いにかけますが、迫力はあります。

そして中野にも八段アイスがあったので
それも食らってきました。

八段アイスver3


こちらはなかなかすべての段の色と味が違い、食べ甲斐がありました。
パイナップル、抹茶、巨峰などがまざっているのですが

中段にあるモカとカルピスが泣かせてくれます。

他にはない味のアイスで、これで300円とはお得です。
東京はこれで八段アイス制覇か?

ここのところアツイ日が続くので夏はアイス付けの生活を送ってみてもよいのではないでしょうか。
(おなかがピーピーになっても当方は一切責任を追いません)

— posted by midilin @ 12:00PM | Comment (0) | TrackBack (1) 

カテゴリー » Web/ミディリン July 10, 2004

過去ログ検索システム ID:1089385200


前回のログ検索システムをPHP+Mysqlで作成していたのですが・・・
失敗に終わりました(涙)

プログラムとDBまわりはうまくいってローカル上での動作確認をしたのですが
実際にサーバーで動かしてみるとサーバーに負担がかかりすぎて
WEBサーバーが落ちてしまうという現象が起きてしまいました。

DBからキーワードをSQLで検索した後
PHP上でタグを除去して再度タグをのぞいたものを格納し表示するというのを作ったのですが
記事件数が500以上のものを検索するとWebサーバーが落ちてしまいました。

そこでPHP上で処理の負担を減らすため
DBのMysql上にタグつきデータとタグなしデータの2つをあらかじめ入れ
キーワード検索をタグなしのテキストで検索を行い、
そこのIDを変数に格納したあと、再度SQLを発行してIDのタグつきデータを持ってくるというのにしました。
データベースにはタグ付きとタグナシの2つを格納するので容量は多くなるのですが
PHP上でタグを除去する必要がなくなり、若干はやくなりました。
が、13000件あるデータを検索するSQLを発行するだけで1分近くかかるということで
やっぱりWebサーバーが落ちてしまい、
SQLを発行すること自体が無理ということがわかったので
一ヶ月近くプログラムを組んで完成はしたのですが断念という結果になりました。

しかしそのサーバーをお借りしている読者のmasanoriさんの好意によって
namazuによる検索システムをつくってもらい
掲示板の記事を一件一件分割した状態で保存したものをこちらで作成して
それを検索できるようにしてもらいました。

まだ調整中ですが近々掲示板ログ部屋を掲載できそうです。
とりあえず、過去ログの検索はブラウザの検索機能と併用しながら行えそうです。

それと先日、読者のBCGさんとお会いしてきました。
BCGさんの企画で関東の読者と関西の読者+アメリカから
結婚祝いということで色紙を書いていただいたようで、
ありがとうございます。
(証拠の品↓)







先日、確かに色紙を受けとりました。
(何度もスキャナーで取り込んでつぎはぎしたので、上の画像がきたなくなってしまいましたが)

BCGさんからお話を伺いましたが半年くらい前から行われていたとのことで、全然知りませんでした。
たくさんの方からお祝いのお言葉ありがとうございます。
本当は一通一通お返事を書きたいのですが
ここでまとめてですが皆様にお礼を申し上げます。ありがとうございました。
そしてお届けくださったBCGさん、ありがとうございました。

— posted by midilin @ 12:00AM | Comment (0) | TrackBack (0) 


カウンター