SQLiteな休日
1. 編集する

すでに書き込んであるデータを編集します。下記のように書き込みしてきたデータベース(sqlite.db)があった時

idsitenameurl
1phpな猫の森http://p-ho.net/photolog/
2phpな休日http://p-ho.net/
3SQLiteな休日http://p-ho.net/sqlite/

1行目の“phpな猫の森”の部分を “phpな猫の森(森の猫と家猫ちぃのブログ)” に変更する場合の書き方は
update [テーブル名] set [変更する項目名]=[変更内容] where [対象行を特定するための情報]
となります。
変更する項目が複数ある場合は , (コンマ) で区切って連記します。

<?php
$file = "./sqlite.db"; //データベースファイル定義
$data = sqlite_open("$file"); //オープン
$query = "update table1 set sitename='phpな猫の森(森の猫と家猫ちぃのブログ)' where id=1"; //クエリの定義
$result = sqlite_query ($data,$query); //実行
sqlite_close($data); //切断
?>

なお、データを編集するにはファイル(sqlite.db)が書込可能になっている必要があります。
ファイルのパーミッションを変更しておいてください。
設定値はサーバーのマニュアル参照で。わからない場合はいつもの要領で 600・606・666 の順にお試しを。

2. フォームから編集する

フォームから編集できるようにします。
以下のソースはスクリプト名が index.php 、データベース名が sqlite.db で、すでに table1 の設定がされていて、index.phpと同じ階層にある場合のものです。

<?php
if ($_GET["edit"]) { //編集画面(Edi クリックで来た場合)
$edit = $_GET["edit"]; //編集行の特定(GETされた id による)
$file = "./sqlite.db"; //データベースファイル定義
$data = sqlite_open("$file"); //オープン
$query = "select sitename,url from table1 where id=" . $edit . ""; //クエリの定義(value= 用に sitename と url を取り出す)
$result = sqlite_query ($data,$query); //実行
$scan = sqlite_fetch_array ($result); //配列に入れる
$scan1 = $scan["sitename"]; //sitename を $scan1 に代入
$scan2 = $scan["url"]; //url を $scan2 に代入
sqlite_close($data); //切断
print "<br />¥n";
print "▼編集する<br />¥n";
print "<form method='POST' action='./index.php'>¥n";
print "サイト名<br />¥n";
print "<input type='text' name='sitename' size='50' value='" . $scan1 . "' /><br />¥n";
print "URL<br />¥n";
print "<input type='text' name='url' size='50' value='" . $scan2 . "' /><br />¥n";
print "パスワード<br />¥n";
print "<input type='password' name='pass' size='20' /><br />¥n";
print "<input name='ediline' type='hidden' value='" . $edit . "' />¥n";
print "<input type='submit' value='送信' /><br />¥n";
print "</form><br />¥n";
print "</div>¥n";
print "<br />¥n";
}
else { //編集画面以外
if (($_POST["pass"] == "hoge") && ($_POST["sitename"] != "") && ($_POST["url"] != "")) { //全てに入力があり、パスワードが正しければ
$sitename = $_POST["sitename"]; //POSTのデータを変数$sitenameに格納
if( get_magic_quotes_gpc() ) { $sitename = stripslashes("$sitename"); } //クォートをエスケープする
$sitename = htmlspecialchars ($sitename); //HTMLタグ禁止
$sitename = mb_strimwidth ($sitename, 0, 50, "", "UTF-8"); //長いデータを50バイトでカット
$url = $_POST["url"]; //POSTのデータを変数$urlに格納
if( get_magic_quotes_gpc() ) { $url = stripslashes("$url"); } //クォートをエスケープする
$url = htmlspecialchars ($url); //HTMLタグ禁止
$url = mb_strimwidth ($url, 0, 50, "", "UTF-8"); //長いデータを50バイトでカット
if ($_POST["ediline"]) { //編集処理
$ediline = $_POST["ediline"]; //編集行の特定(GETされた id による)
$file = "./sqlite.db"; //データベースファイル定義
$data = sqlite_open("$file"); //オープン
$query = "update table1 set sitename='" . $sitename . "',url='" . $url . "' where id=" . $ediline . ""; //クエリの定義(update による更新)
$result = sqlite_query ($data,$query); //実行
sqlite_close($data); //切断
}
else { //新規投稿処理
$file = "./sqlite.db"; //データベースファイル定義
$data = sqlite_open("$file"); //オープン
$query = "insert into table1 values(null,'$sitename','$url')"; //クエリの定義
$result = sqlite_query ($data,$query); //実行
sqlite_close($data); //切断
}
}
if ($_GET["delline"]) { //削除の場合
$delline = $_GET["delline"]; //削除行の特定(GETされた id による)
$file = "./sqlite.db"; //データベースファイル定義
$data = sqlite_open("$file"); //オープン
$query = "delete from table1 where id='" . $delline . "'"; //クエリの定義(削除)
$result = sqlite_query ($data,$query); //実行
sqlite_close($data); //切断
}
$file = "./sqlite.db"; //データベースファイル定義
$data = sqlite_open("$file"); //オープン
$query = "select * from table1"; //クエリの定義(SelectAll)
$result = sqlite_query ($data,$query); //実行
print "<table border='1' cellspacing='0' cellpadding='4'>¥n";
print "<tr><td>id</td><td>sitename</td><td>url</td><td>&nbsp;</td><td>&nbsp;</td></tr>¥n";
$linecount = 0;
while ($scan = sqlite_fetch_array ($result)) {
print "<tr><td>" . $scan["id"] . "</td><td>" . $scan["sitename"] . "</td><td>" . $scan["url"] . "</td><td><a href='./index.php?delline=" . $scan["id"] . "'>Del</a></td><td><a href='./index.php?edit=" . $scan["id"] . "'>Edi</a></td></tr>¥n";
$linecount++;
}
print "</table>¥n";
sqlite_close($data); //切断
?>
<br />
<br />
▼追加する
<form method="POST" action="">
サイト名<br />
<input type="text" name="sitename" size="50" /><br />
URL<br />
<input type="text" name="url" size="50" /><br />
パスワード<br />
<input type="password" name="pass" size="20" /><br />
<input type="submit" value="送信" /><br />
</form>
</div>
<?php
}
?>

書込はパスワード制限してあります。

実行
2014.2.4 last edit

Produced by haku