menu


2017年4月29日土曜日

コミック情報入力ページ作成

実は、ここが結構大変でした。
まっさらな新規作成なら問題なかったんですが、私の場合は、アニメデータとかぶったフォルダーになり、すでに、タイトルフォルダーが作成されていて、コミック情報ファイルが無い状態で、エラーが続出しました!
コミック情報は、ホルダー名が各コミック名を示し、フォルダー内にcomicInfo.csvファイルにコミック情報を出力します。
ちなみにDMM.com のコミック情報は、comic.csv に保存されます。
この構造は、私のアニメサイトに合わせてあり、このフォルダーに関連アニメ情報が一緒に管理されていて、アニメリストの表示の際にcomic.csv があれば、自動でコミック一覧を出力します。
ちなみにbook.csv があれば、文庫一覧を出力するなどの機能もあります。
これで、私のサイトは、ファイルの追加をするだけで表示情報が増える作りです。
以下にソースを載せます。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<script>
function setMode(mode){
document.getElementById("mode").value = mode;
}
function setComic(){
document.getElementById("tgt").value ="../csv/"+document.getElementById("comic_dir").value;
}
</script>

<title>作者編集</title>
</head>
<body>
<?php;
function getkazu($str,$c){
$b=explode($c,$str);
return count($b)-1;
}

function getcsv($handle){
$str="" ;
do{
$str = $str.fgets($handle);
$cun = getkazu($str,"\"") ;
}while( ($cun%2)!=0 );
$str = str_replace("\"", '', $str);
return explode(",",$str) ;
}

function ReadCsv($fname){
$records = array() ;
$fname = str_replace(array("\r\n", "\r", "\n"), '', $fname);
if (($handle = fopen($fname, "r")) !== false) {
while (!feof($handle)){
$line = getcsv($handle) ;
if( count($line) == 1 && $line[0] == "" ){
}
else {
       $records[] = $line;
}
 } 
 fclose($handle); 

return $records ;
}

function list_files($dir){
$list = array();
$files = scandir($dir);
$cunt = 0 ;
foreach($files as $file){
        if($file == '.' || $file == '..'){
            continue;
        } else if (is_file($dir.$file)){
            $list[$cunt][0] = $file;
            $tb = ReadCsv($dir.$file);
            $list[$cunt++][1] = $tb[0][0];
        }
    }
    return $list;
}

function writeComic($comic_dir,$comic_title,$comic_yomi,$path_dir,$Publishing_company,$Journal_title,$Comment){
if( !is_dir("../csv/".$comic_dir) ){
mkdir("../csv/".$comic_dir,0777);
}
$file = fopen("../csv/".$comic_dir."/comicInfo.csv","w");
fwrite($file,$comic_title.",".$comic_yomi.",".$path_dir.",".$Publishing_company.",".$Journal_title.",\"".$Comment."\"");
fclose($file);
}

$result = list_files("../autho/");
print "<div>コミック新規登録</div><br>";
print "<input type=\"button\" onclick=\"window.location.href='./index.php';\" value=\"メニューに帰る\" /><br><br>";
print "<div style=\"margin: 5px;\" >";
print "<form method=\"POST\" action=\"newcomic.php\" name=\"main_form\">";
$comic_dir = "";
if( isset($_POST["comic_dir"])){
$comic_dir = $_POST["comic_dir"];
}
if( isset($_POST["path_dir"])){
$path_dir = $_POST["path_dir"];
}
$comic_title = "";
if( isset($_POST["comic_title"])){
$comic_title = $_POST["comic_title"];
}
$comic_yomi = "";
if( isset($_POST["comic_yomi"])){
$comic_yomi = $_POST["comic_yomi"];
}
$Publishing_company = "";
if( isset($_POST["Publishing_company"])){
$Publishing_company = $_POST["Publishing_company"];
}
$Journal_title = "";
if( isset($_POST["Journal_title"])){
$Journal_title = $_POST["Journal_title"];
}
$Comment = "";
if( isset($_POST["Comment"])){
$Comment = $_POST["Comment"];
}

$mode = 1;
$err = 0 ;
if( isset($_POST["mode"])){
if( $_POST["mode"] == 1 ){
if( $comic_dir == "" ){
$err = 1 ;
}
else {
if( is_file("../csv/".$comic_dir."/comicInfo.csv") ){
$mode = 2 ;
}
else {
writeComic($comic_dir,$comic_title,$comic_yomi,$path_dir,$Publishing_company,$Journal_title,$Comment);
}
}
}
else if( $_POST["mode"] == 2 ){
writeComic($comic_dir,$comic_title,$comic_yomi,$path_dir,$Publishing_company,$Journal_title,$Comment);
}
else if( $_POST["mode"] == 3 ){
$mode = 1 ;
if( is_file("../csv/".$comic_dir."/comicInfo.csv") ){
$tb = ReadCsv("../csv/".$comic_dir."/comicInfo.csv");
$comic_title = $tb[0][0] ;
$comic_yomi = $tb[0][1] ;
$path_dir = $tb[0][2] ;
$Publishing_company = $tb[0][3] ;
$Journal_title = $tb[0][4] ;
$Comment = $tb[0][5] ;
}
}
}


print "<input id=\"mode\" type=\"hidden\" name=\"mode\" value=\"".$mode."\" />";
print "登録コミックフォルダ名<br><input id=\"comic_dir\" type=\"text\" name=\"comic_dir\" size=\"50\" value=\"".$comic_dir."\" />";
if( $mode == 2 ){
print "<font color=\"#ff0000\">すでにファイルが存在します。強制保存で上書き保存するか、フォルダ名を変更して通常保存してください!</font>";
}
else {
if( $err == 1 ){
print "<font color=\"#ff0000\">フォルダ名を入力してください!</font>";
}
}
print "<br>";
print "コミックタイトル<br><input id=\"comic_title\" type=\"text\" name=\"comic_title\" size=\"50\" value=\"".$comic_title."\" />";
print "<br>";
print "ひらがな読み<br><input id=\"comic_yomi\" type=\"text\" name=\"comic_yomi\" size=\"50\" value=\"".$comic_yomi."\" />";
print "<br>";
print "著者選択<select id='path_dir' name='path_dir' >";
for($mi=0;$mi<count($result);$mi++ ){
$op="";
if( $result[$mi][0] == $path_dir ){
$op = "selected";
}
print "<option value=\"".$result[$mi][0]."\" ".$op." >".$result[$mi][1]."</option>";
}
print "</select><br>";
print "出版社<input id=\"Publishing_company\" type=\"text\" name=\"Publishing_company\" size=\"50\" value=\"".$Publishing_company."\" /><br>";
print "雑誌名<input id=\"Journal_title\" type=\"text\" name=\"Journal_title\" size=\"50\" value=\"".$Journal_title."\" /><br>";
print "コメント<br>";
print "<textarea id=\"Comment\" name=\"Comment\" rows=\"8\" cols=\"60\">".$Comment."</textarea><br><br>";
if( $mode == 1 ){
print "<input id=\"save\" type=\"submit\" name=\"save\" value= \"保存\" />";
}
else if( $mode == 2 ){
print "<input id=\"save\" type=\"submit\" name=\"save\" value= \"強制保存実行\" />";
print " <input id=\"save\" type=\"submit\" name=\"save\" onclick=\"setMode(1);\" value= \"通常保存実行\" />";
}
print "</form>";

print "</div>";
print "<div style=\"margin: 5px;\" ><br><br>";
print "<form method=\"POST\" action=\"comic.php\" name=\"main_form\">";
print "<input id=\"tgt\" type=\"hidden\" name=\"tgt\" />";
print "<input id=\"type\" type=\"hidden\" name=\"type\" value=\"コミック\" />";
print "<input id=\"comic_input\" type=\"submit\" name=\"comic_input\" onclick=\"setComic();\" value= \"DMMコミック入力\" />";
print "</form>";
print "</div>";
?>
</body>
</html>
基本は、全て今までのソースと同じ作りです。新しい処理は、setComicくらいです。これは、すでに、作成されているDMM.com のコミック情報取得ページの実行の為の引数設定をしてます。
引数type にコミックを入れてtgt に保存するフォルダーを設定して実行すると、その場所にコミック広告情報をcomic.csv に出力します。便利でしょ!
次回は、コミック情報編集を載せます。

0 件のコメント:

コメントを投稿