menu


2017年4月28日金曜日

保存・再読み込み機能を付ける⑥保存処理を付ける

保存処理は、csv 形式で保存します。
保存は、簡単です。各データの間に「,」を入れて、改行の入るデータは、「"」で囲みます。以下にソースをつけます。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>新規作者編集</title>
<script>
function setMode(mode){
document.getElementById("mode").value = mode;
}

function addtcount(){
document.getElementById("tcount").value = parseInt(document.getElementById("tcount").value)+1;
}
</script>
</head>
<body>
<?php
function WriteCsv($fname,$tbl){
$file = fopen($fname,"w");
$tbl[0][3]="\"".$tbl[0][3]."\"";
for( $i=1;$i < count($tbl) ; $i++ ){
$tbl[$i][4]="\"".$tbl[$i][4]."\"";
}
for( $i=0;$i < count($tbl) ; $i++ ){
for( $j=0 ; $j < count($tbl[$i]) ; $j++ ){
fwrite( $file,$tbl[$i][$j]) ;
if( $j < (count($tbl[$i])-1) ){
fwrite($file,",");
}
else {
fwrite($file,"\n");
}
}
}
fclose($file);
}

$tcount = 1 ;
$tb = array();
if( isset($_POST["mode"])){
if( $_POST["mode"] == "1" ){
print "<div>作者編集(保存)</div>";
$tcount = $_POST["tcount"] ;
$tb[0][0] = $_POST["name"] ;
$tb[0][1] = $_POST["yomi"] ;
$tb[0][2] = $_POST["path_dir"] ;
$tb[0][3] = $_POST["info"] ;
for( $i = 0 ; $i < $tcount ; $i++ ){
$tb[$i+1][0]=$_POST["title_".$i];
$tb[$i+1][1]=$_POST["dir_link_".$i];
$tb[$i+1][2]=$_POST["Publishing_company_".$i];
$tb[$i+1][3]=$_POST["Journal_title_".$i];
$tb[$i+1][4]=$_POST["Comment_".$i];
}
if( $tb[0][2]!="" ){
WriteCsv("../autho/".$tb[0][2],$tb);
}
}
else if( $_POST["mode"]=="2"){
print "<div>作者編集(再読み込み)</div>";
}
else {
print "<div>作者編集(タイトル追加)</div>";
$tcount = $_POST["tcount"] ;
$tb[0][0] = $_POST["name"] ;
$tb[0][1] = $_POST["yomi"] ;
$tb[0][2] = $_POST["path_dir"] ;
$tb[0][3] = $_POST["info"] ;
for( $i = 0 ; $i < $tcount ; $i++ ){
$tb[$i+1][0]=$_POST["title_".$i];
$tb[$i+1][1]=$_POST["dir_link_".$i];
$tb[$i+1][2]=$_POST["Publishing_company_".$i];
$tb[$i+1][3]=$_POST["Journal_title_".$i];
$tb[$i+1][4]=$_POST["Comment_".$i];
}
}
}
else {
print "<div>新規作者編集</div>";
$tb[0]=array("","","","");
$tb[1]=array("","","","","");
}
print "<br>";
print "<input type=\"button\" onclick=\"window.location.href='./index.php';\" value=\"メニューに帰る\" /><br>";
print "<form method=\"POST\" action=\"newautho.php\" name=\"main_form\">";
print "<div>";
print "<div style=\"border: solid 1px #202020;margin: 5px 5px 3px;\">";
print "<div style=\"border: solid 0px #202020;margin: 5px 5px 5px 5px;\">";
print "<input id=\"mode\" type=\"hidden\" name=\"mode\" />";
print "<input id=\"tcount\" type=\"hidden\" name=\"tcount\"value=".$tcount." />";
print "著者名:<input id=\"name\" type=\"text\" name=\"name\" size=\"50\" value=\"".$tb[0][0]."\" /><br>";
print "  読み:<input id=\"yomi\" type=\"text\" name=\"yomi\" size=\"50\" value=\"".$tb[0][1]."\" /><br>";
print "ファイル名:<br>";
print "<input id=\"path_dir\" type=\"text\" name=\"path_dir\" size=\"50\" value=\"".$tb[0][2]."\" />";
if( isset($_POST["mode"])){
if( ( $_POST["mode"] == "1" )||( $_POST["mode"] == "2" ) ){
if( $tb[0][2]=="" ){
print "<font color=\"#ff0000\">ファイル名が指定されてません!</font>";
}
}
}
print "<br>";
print "追記事項:<br>";
print "<textarea id=\"info\" name=\"info\" rows=\"4\" cols=\"50\">".$tb[0][3]."</textarea><br>";
print "</div>";
print "<input id=\"renewal\" type=\"submit\" name=\"renewal\" onclick=\"setMode(1);\" value= \"保存\" />";
print "<input id=\"renewal\" type=\"submit\" name=\"renewal\" onclick=\"setMode(2);\" value= \"再読み込み\" />";
print "</div>";
print "</div>";
print "<div style=\"border: solid 1px #202020;margin: 5px 5px 3px;\">";
print "作品リスト<br>";
for( $i = 0 ; $i < $tcount ; $i++ ){
print "<div style=\"border: solid 1px #202020;margin: 5px 5px 5px 5px;\">";
print "<div style=\"border: solid 0px #202020;margin: 5px 5px 5px 5px;\">";
print "タイトル<input id=\"title_".$i."\" type=\"text\" name=\"title_".$i."\" size=\"50\" value=\"".$tb[$i+1][0]."\" /><br>";
print "リンク<input id=\"dir_link_".$i."\" type=\"text\" name=\"dir_link_".$i."\" size=\"50\" value=\"".$tb[$i+1][1]."\" /><input id=\"Search\" type=\"button\" name=\"Search\" value= \"検索\" /><br>";
print "出版社<input id=\"Publishing_company_".$i."\" type=\"text\" name=\"Publishing_company_".$i."\" size=\"50\" value=\"".$tb[$i+1][2]."\" /><br>";
print "雑誌名<input id=\"Journal_title_".$i."\" type=\"text\" name=\"Journal_title_".$i."\" size=\"50\" value=\"".$tb[$i+1][3]."\" /><br>";
print "コメント<br>";
print "<textarea id=\"Comment_".$i."\" name=\"Comment_".$i."\" rows=\"4\" cols=\"50\">".$tb[$i+1][4]."</textarea><br>";
print "</div>";
print "</div>";
}
print "<input id=\"add\" type=\"submit\" name=\"add\" onclick=\"setMode(31);addtcount();\" value= \"追加\" />";
print "</div>";

print "</div>";
print "</form>";

?>
</body>
</html>
新規作成箇所と修正の説明をします。
新規作成の保存処理です。
function WriteCsv($fname,$tbl){
$file = fopen($fname,"w");ファイルを書き込みで作成
$tbl[0][3]="\"".$tbl[0][3]."\"";追記事項を「"」で囲む
for( $i=1;$i < count($tbl) ; $i++ ){全タイトルコメントを「"」で囲む
$tbl[$i][4]="\"".$tbl[$i][4]."\"";
}
for( $i=0;$i < count($tbl) ; $i++ ){全ライン数くり返す
for( $j=0 ; $j < count($tbl[$i]) ; $j++ ){ライン毎のデータ数くり返す
fwrite( $file,$tbl[$i][$j]) ;データファイル保存
if( $j < (count($tbl[$i])-1) ){最後の1以外
fwrite($file,",");「,」をファイルに書く
}
else {最後のデータ
fwrite($file,"\n");改行をファイルに書く
}
}
}
fclose($file);
}
保存処理を実行します。
if( $tb[0][2]!="" ){ファイル名が入力してある
WriteCsv("../autho/".$tb[0][2],$tb);保存処理実行
}
ファイル名が入力されているか判定します。
if( isset($_POST["mode"])){新規じゃない
  mode が1か2なら
if( ( $_POST["mode"] == "1" )||( $_POST["mode"] == "2" ) ){
if( $tb[0][2]=="" ){ファイル名が入ってない
print "<font color=\"#ff0000\">ファイル名が指定されてません!</font>";
}
}
}
保存処理簡単ですね!
キーワードは、fopen fwrite fclos です。
次はファイルから読み込みます。

0 件のコメント:

コメントを投稿