PHP vol.18
- ファイルの読み書き
- 一行掲示板を作る(1)
ファイルの読み書き
- fopen/fclose
fopen (パス,オプション); //ファイルを読む $fp = fopen (パス,'r'); $contents = fread($fp,バイト数); //指定したバイト数まで読む $line = fgets($fp); //一行 //ファイルを書き込む $fp = fopen (パス,'w'); $contents = fwrite($fp,バイト数); //指定したバイト数まで読む $line = fputs($fp) //一行 //ファイルを閉じる fclose($fp);
fopenのモード
r | 読み込み専用 |
---|---|
w | 書き込み専用 |
書き込み
<?php $member_list = array(1 => "araki", 2 => "enomoto", 3 => "fukata" ); $fp = fopen("member_list.txt","w"); foreach ($member_list as $num => $value) { fputs ($fp,$num." ".$value."\n"); } fclose($fp); ?>
実行結果
$ php 01.php $ cat member_list.txt 1 araki 2 enomoto 3 fukata
書き込み
<?php $fp2 = fopen("member_list.txt","r"); while (!feof($fp2)) { $line = fgets($fp2); echo $line; } fclose($fp2); ?>
実行結果
$ php 02.php 1 araki 2 enomoto 3 fukata
追記
<?php $member_list = array(4 => "obata"); $fp = fopen("member_list.txt","a"); foreach ($member_list as $num => $value) { fputs ($fp,$num." ".$value."\n"); } fclose($fp); ?>
実行結果
$ php 03.php $ php 02.php 1 araki 2 enomoto 3 fukata 4 obata
一行掲示板を作る(1)
- いまいち動きがおかしい。
- はじめの行の表示無効化ができない。
等の問題を抱えています。
<?php $filepath = './data_bbs.txt'; $fgc = file($filepath); $scrname = $_SERVER['SCRIPT_NAME']; if (!empty($_POST['name'])&&!empty($_POST['comment'])){ $bbsid = count($fgc); $fp = fopen($filepath,'a+'); $w_date = date("n/j(D) G:i:s"); $uhost = $_SERVER['HTTP_HOST']; $delete_check = 0; $bbsd = array($bbsid,$_POST['name'],$_POST['comment'],$w_date,$uhost,$delete_check."\n"); $add_bbs = implode(",",$bbsd); fputs($fp,$add_bbs); fclose($fp); header("Location: $scrname"); } if (!empty($_POST['delete'])) { $fp = fopen($filepath,'w'); foreach($fgc as $value) { list($bbsid,$name,$comment,$date,$host,$delete_check) = explode(",",$value); if ($bbsid == $_POST['delete']) { $delete_check_id = 1; $value = $bbsid.",".$name.",".$comment.",".$date.",".$host.",".$delete_check_id."\n"; } fputs($fp,$value); } fclose($fp); $scrname = $_SERVER['SCRIPT_NAME']; header("Location: $scrname"); } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>linebbs</title> <style type="text/css"> <!-- #header { text-align: center; } --> </style> </head> <body> <div id="header"> <h1>linebbs</h1> <p>名前と内容を入力して「発言」ボタンを押してください。</p> <form method="post" action=""> 名前:<input type="text" name="name" /> 内容:<input type="text" name="comment" /> <input type="submit" value="発言" /> </div> </form> <hr /> <?php krsort($fgc); foreach ($fgc as $key => $value) { list($bbsid,$name,$comment,$date,$host,$delete_check) = explode(",",$value); if ($delete_check==0) { echo '<form method="post" action="">'; echo "名前:".$name." "; echo "内容:".$comment." "; echo "( ".$date." ) "; echo "host:".$host." No.".$key; echo '<input type="hidden" name="delete" value="'.$bbsid.'" /><input type="submit" value="削除" /></form>'; echo "<br />\n"; } } ?> </body> </html>