8.[PG4]PHPでTODOリスト(csv版)を作ってみよう(xampp & PHP) その3
こちら第8回「プログラマー養成講座」のパート3になります!
目次はこちらからご参照下さい!
HTML宿題提出
ひさびさの宿題、ちゃんと頑張ってきました!
見かけ具合も、できる限り似せてみました!
コードはこんな感じです!
<html>
<head>
<title>WEBページタイトル</title>
<style>
#frame
{
display: grid;
grid-template-columns: 140px 1fr;
justify-content: space-around;
text-align: center;
}
nav
{
background-color:#F9CA02;
}
nav>ul>li
{
text-align:left;
padding:20px 0;
}
nav>ul>li>a
{
color:#5C291E;
}
main
{
background-color:#F17502;
}
main>h2
{
color:#FFFFFF;
margin:40px;
padding:0 30px;
text-align:left;
font-size:40px;
}
main>p
{
background-color:#FFFFFF;
color:#0000000;
margin:30px 60px;
padding:30px;
text-align:left;
}
</style>
</head>
<body>
<div id="frame">
<nav>
<ul>
<li><a href="index.php">TOP</a></li>
<li><a href="page2.php">HTML</a></li>
<li><a href="page3.php">Javascript</a></li>
<li><a href="page4.php">CSS</a></li>
<li><a href="page5.php">PHP</a></li>
</ul>
</nav>
<main>
<h2>TOP</h2>
<p>
ひさき、計画名SPRINT-A(英語:Small (省略)
</p>
<p>
当初は、2013年8月22日に打上げを予定(省略)
</p>
</main>
</div>
</body>
</html>
なるほど、わかりました!
例えば、
<title>ひさきHP</title>
とか
<title>HTML|ひさきHP</title>
って感じですかね?
TODOリストとは
HTMLとPHPの関係性
入力フォームの作成①
<form method="POST" action="./todo-entry.php">
<div>登録名<input type="text" name="todo-name" value="" /></div>
<input type="submit" name="cmd" value="登録する" />
</form>
TODOリスト-登録処理②(入力フォームの値を受け取り)
<?php
//todo-nameの内容を表示
print $_POST['todo-name'];
?>
<?PHP
//todo-nameの内容を表示
//print $_POST['todo-name'];
file_put_contents('./list.csv' , $_POST['todo-name'].',no,'.date('Y/m/d H:i:s')."\n" , FILE_APPEND);
?>
登録しました<br />
<a href="todo.php">戻る</a>
TODOリスト-読込処理③(表示用のHTML作成)
<?php
$csv = file_get_contents('list.csv');
print $csv;
?>
TODOリストのフォーム作成④
<?php
$csv = file_get_contents('list.csv');
//print $csv;
$lines = explode("\n" , $csv);
foreach($lines as $num => $line)
{
echo "<div>".$line."</div>\n";
}
?>
<?php
$csv = file_get_contents('list.csv');
//print $csv;
$lines = explode("\n" , $csv);
foreach($lines as $num => $line)
{
//echo "<div>".$line."</div>\n";
if($line)
{
$values = explode("," , $line);
echo "<div>チェック状態".$values[1].' 項目名:'.$values[0].' 登録日時:'.$values[2]."</div>\n";
}
}
?>
わかりました、頑張ってみます!
あれ、エラーになるようになっちゃった。
なんだろう・・・
わかりました!
(・・・15分経過・・・)
こんな感じでしょうか。
<form method="POST" action="./todo-entry.php">
<div>登録名<input type="text" name="todo-name" value="" /></div>
<input type="submit" name="cmd" value="登録する" />
</form>
<form method="POST" action="./todo-check.php">
<?php
$csv = file_get_contents('list.csv');
//print $csv;
$lines = explode("\n" , $csv);
foreach($lines as $num => $line)
{
//echo "<div>".$line."</div>\n";
if($line)
{
$values = explode("," , $line);
if ( $values[1] == 'no' )
{
print '<div><input type="submit" name="chk['.$num.']" value="no" />'.$values[0].'</div>';
}
else
{
print '<div>yes'.$values[0].'</div>';
}
}
}
?>
</form>
printのところで、ダブルコーテーションとかシングルコーテーションがうまくいってなかったみたいです。
なるほど、確かに。書き方が違っても、結果が同じになるところは、自分がわかりやすいほうが良いということですね。
TODOリスト-チェック処理⑤
<?PHP
//更新する行数を変数に格納
$upd_num = '';
foreach($_POST['chk'] as $num => $value)
{
if ( $value == 'no' )
{
$upd_num = $num;
}
}
//更新する行数が記録されていたら更新処理を開始する
if ( $upd_num !== '' )
{
//更新用のCSV情報を初期化
$upd_csv = '';
//csvファイルを読み込み
$csv = file_get_contents('list.csv');
//レコード分割
$lines = explode("\n" , $csv);
foreach($lines as $num => $line)
{
if($line)
{
if ( $num == $upd_num )
{
//更新対象の処理
$values = explode("," , $line);
$upd_csv .= $values[0].',yes,'.$values[2]."\n";
}
else
{
//更新対象以外の処理
$upd_csv .= $line."\n";
}
}
}
file_put_contents('./list.csv' , $upd_csv);
}
?>
更新しました<br />
<a href="todo.php">戻る</a>
では、次回はデータベース回となります!!
この記事が気に入ったらサポートをしてみませんか?