X



弐ch編集のphp講座
0001弐ch編集
垢版 |
02/02/05 18:40ID:???
まず最初は<?php
print("始まり");
?>
これでいいです
0147名無しさん@お腹いっぱい。
垢版 |
02/02/11 01:21ID:Sk1XO/tj
↑で指摘されてるように、
書き込むデータの改行を<br>じゃなくて\nにしないと
読み込んだときに複数データとしてばらしてもらえないよ。
それが証拠に5行以上表示されてるでしょ?
つまりforが機能していない。
$bbs[0]に全部のデータが1行で格納されちゃってます。
014870
垢版 |
02/02/11 01:32ID:EU7Zm1l2
単純にコレ
$msg="$msg\n";
だけじゃダメみたいですな。
0149名無しさん@お腹いっぱい。
垢版 |
02/02/11 01:32ID:Sk1XO/tj
リロードで書き込ませたくなければ・・・
ヒント
1:HTMLフォームの、nameが変数名に、valueが変数の値となる。
2:リロードの際は送信ボタンは押されない
3:一番最初にやった条件分岐を使う
やってみよう。
0150名無しさん@お腹いっぱい。
垢版 |
02/02/11 01:36ID:Sk1XO/tj
>>48
HTMLは<br>がないと改行されない。
ファイルは\nがないと改行されない。
だから両方入れればよい。
ファイル書き込みの際に\nを入れて、
HTML表示のprint()のときに<br>を入れる。
これがスマートなんかな。
ファイルに<br>書き込んじゃってもいいけどね。
015168
垢版 |
02/02/11 01:41ID:6dXkTmoo
苦労してるなぁ。
PHPの場合は
<?=$value?><br>
がスマートっぽい
015370
垢版 |
02/02/11 01:48ID:EU7Zm1l2
>>150さんのやりかたで改行は出来たけど再読み込み処理が出来ないよん。
ただいま修行中。
0154名無しさん@お腹いっぱい。
垢版 |
02/02/11 01:59ID:???
ちなみに、
test.php
と一緒に
test.phps(中身はtest.phpと同じ)
ってファイルを作ってアップロードしておくとweb上からtest.phpのソースが参照できるよ。
015670
垢版 |
02/02/11 03:06ID:KsEpt+eD
再読み込みつか、リロードしても書き込まれない処理、のことでした。
ゴメソ。
0157名無しさん@お腹いっぱい。
垢版 |
02/02/11 03:24ID:???
ファイルに書き込む処理を、送信ボタンが押されたときのみにすればいい。
たぶん今は呼び出されるたびに書き込むようになってるんじゃない?
それだとリロードどころか最初に呼び出したときにも空文字書き込んでると思うよ。
0159ミニ弐編 ◆exvx.LWc
垢版 |
02/02/11 18:24ID:QjQTA6MD
とりあえず処理とhtmを一緒にしないかifを使うか?
これで改行をかいれタンだけど、、どうかな?ドキドキ
<HTML>
<BODY>
<FORM method="POST" action="bbs.php"><INPUT size="20" type="text" name="msg"><INPUT type="submit" value="送信"></FORM>
<?php
if($submit=$msg)
{
$fl = "log.htm";
$filename = fopen("$fl","a+");
fwrite($filename,$msg."\n");
fclose($filename);
$bbs=file("$fl");
}
for($i=0;$i<5;$i++)
{
print("$bbs[$i]<BR>");
}
?>
</BODY>
</HTML>
0160ミニ弐編 ◆exvx.LWc
垢版 |
02/02/11 18:25ID:QjQTA6MD
あれごめん書き込みのいちおかしいや、治してうpする
↑は無視して
0161ミニ弐編 ◆exvx.LWc
垢版 |
02/02/11 22:23ID:QjQTA6MD
あれ基礎的なこと色々わすれてるや〜、じゃあ今日は休みで
基礎から俺も勉強しなおしてくるんで、明日、明後日再開です


          ご め ん な
0162名無しさん@お腹いっぱい。
垢版 |
02/02/11 23:11ID:V4D6aage
うぃ。がんばって。
0163名無しさん@お腹いっぱい。
垢版 |
02/02/11 23:36ID:W/lrEjt/
つーか勉強できるような日じゃなかったしね・・・
そーす。
http://s7.xrea.com:8080/~readcgi/nihen/source.php?ex.php
0164名無しさん@お腹いっぱい。
垢版 |
02/02/12 00:48ID:???
<HTML>
<BODY>
<FORM method="POST" action="bbs.php">
<INPUT size="20" type="text" name="msg">
<INPUT name="submit" type="submit" value="送信">
</FORM>
<?php
if($submit=="送信")
{
$filename = "log.htm";
$fp = fopen($filename ,"a+");
fwrite($fp,$msg . "\n");
fclose($fp);
$bbs=file($filename);
}
for($i=0;$i<5;$i++)
{
print("$bbs[$i]<BR>");
}
?>
</BODY>
</HTML>

これでどうかな?
ちょっと今動作確認できる環境が手元にないんで確認できないんだが。
ミスってたらごめん。
おそらく159の意図どおりリロードで書き込まないようになってると思う。
ただこれだと最新5件じゃなくて最初の5件にならない?
追記モードって確か最後に付け足すんじゃなかったっけ。
最新5件にするにはforの部分を少しいじらなきゃいけないな。
0165名無しさん@お腹いっぱい。
垢版 |
02/02/12 01:25ID:???
>>164
それだとリロードするとlogの内容も取得できなくない?
<HTML>
<BODY>
<FORM method="POST" action="bbs.php">
<INPUT size="20" type="text" name="msg">
<INPUT name="submit" type="submit" value="送信">
</FORM>
<?php
if($submit=="送信")
{
$filename = "log.htm";
$fp = fopen($filename ,"a+");
fwrite($fp,$msg . "\n");
fclose($fp);
}
$bbs=file($filename);
$bbs=array_reverse($bbs);
for($i=0;$i<5;$i++)
{
print("$bbs[$i]<BR>");
}
?>
</BODY>
</HTML>
でリロードの場合投稿されず&最新の5件を表示になると思う。
0166ミニ弐編 ◆exvx.LWc
垢版 |
02/02/12 16:24ID:GZCCMcX5
>>165
ありがと、やり方忘れてた、感謝〜〜!!!!
わかり易いようにソース書き直したけどいいのかな??
解説
<?php
$fl="log.htm";
if($msg)
{
$fp=fopen("$fl","a+");
fwrite($fp,$msg."\n");
fclose($fp);
}
$bbs=file($fl);
$bbs=array_reverse($bbs);←array_reverseっていう関数は
配列を逆にして返すって意味ね
for($i=0;$i<5;$i++)
{
print("$bbs[$i]<BR>");←それで逆から読みだしてる
}
?>
次回とう言うか今日だが本格的にテーブル等を使い掲示板を作る!
0169名無しさん@お腹いっぱい。
垢版 |
02/02/12 17:22ID:e1RIuohq
>ミニヘン
お前漏れこのスレ楽しみにしているので
せいぜいがんばってください。
0175名無しさん@お腹いっぱい。
垢版 |
02/02/12 22:37ID:YTgQL1q9
>173
$msg = htmlspecialchars ($msg);
こんなんでいいの?
上のスクリプトに足してみた。
タグ禁止。
0177名無しさん@お腹いっぱい。
垢版 |
02/02/12 23:26ID:e1RIuohq
PHPはえぇ!
017891 ◆Angel1EM
垢版 |
02/02/12 23:39ID:???
>68
反応遅れてごめんなさい〜。
こんなページあったんだ・・・。
とりあえずみてみるよ。
ありがと〜。

そういえば、PHP4.1.0からpost/getされたデータを
グローバル変数で取り出すの、非推奨になってたんだね。
0179名無しさん@お腹いっぱい。
垢版 |
02/02/12 23:43ID:tN7VQo4U
>176
ゴメソ。まともにダウンせずに、サイトに直で載ってたソースコピペしちゃってた。
直しまスた。
0180ミニ弐編 ◆exvx.LWc
垢版 |
02/02/12 23:45ID:GZCCMcX5
出来たできた〜、
やっぱフレームやめたは
ビルダー作だけど
htmlから
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 6.5.0.0 for Windows">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>

<BODY bgcolor="#619fbe" text="#ffffff">
<BLOCKQUOTE>
<form method="post" action="bs.php">
<DIV align="center">名前<BR>
<tt><INPUT name="name" type="text" size="24"><br>
本文<br>
<TEXTAREA name="com" cols="21" rows="9"></TEXTAREA><br>
<input type="submit" value=" Send "><br>
</tt></DIV>
</form><hr>
0181ミニ弐編 ◆exvx.LWc
垢版 |
02/02/12 23:47ID:GZCCMcX5
<?php
/* 設定 */
$logfile = "sample2.htm";//ログファイル名
$viewmax = 5; //表示行数
$logmax = 100; //保存最大行数
/* 書き込み処理 */
if($name && $com)
{
$com = str_replace("\r\n", "\r", $com);//Win系は\r\n
$com = str_replace("\r", "\n", $com); //Mac系は\r
$com = nl2br($com);//改行文字の前に<br />追加
$com = str_replace("\n", "", $com);//\n除去
$dat = "<P align=\"center\">$name<BR><BR><BR>$com</P>\n";
//ログに書き込む
$lines = file($logfile); //いままでのログを配列に読み込む
$fp = fopen($logfile, "w"); //ログをオープン(空になる)
fputs($fp,$dat); //データを書き込む(先頭に)
for($i = 0; $i < $logmax-1; $i++) //いままでの分を追記
fputs($fp, $lines[$i]); //(配列0-98→現ログ1-99行目)
fclose ($fp);
}
//表示処理
$lines = file($logfile);
for($i = 0; $i < $viewmax; $i++)
{
print("$lines[$i]<HR>");
}
?>
</BLOCKQUOTE>
</BODY>
</html>
ここ結構マネてんだけどね
http://php.s3.to/tt/tt5.php#multi
↓ソース解説、少しまってちょ
0182ミニ編 ◆exvx.LWc
垢版 |
02/02/12 23:52ID:GZCCMcX5
<?php
/* 設定 */
$logfile = "sample2.htm";//ログファイル名
$viewmax = 5; //表示行数
$logmax = 100; //保存最大行数
/* 書き込み処理 */
if($name && $com)←&&は〜と〜って意味
{
$com = str_replace("\r\n", "\r", $com);//Win系は\r\n←str_replace関数は置き換え関数みたいな感じ
$com = str_replace("\r", "\n", $com); //Mac系は\r
$com = nl2br($com);//改行文字の前に<br />追加←<BR>タグいれてくれる関数nl2br
$com = str_replace("\n", "", $com);//\n除去
$dat = "<P align=\"center\">$name<BR><BR><BR>$com</P>\n";
//ログに書き込む
$lines = file($logfile); //いままでのログを配列に読み込む
$fp = fopen($logfile, "w"); //ログをオープン(空になる)
fputs($fp,$dat); //データを書き込む(先頭に)
for($i = 0; $i < $logmax-1; $i++) //いままでの分を追記
fputs($fp, $lines[$i]); //(配列0-98→現ログ1-99行目)
fclose ($fp);
}
//表示処理
$lines = file($logfile);
for($i = 0; $i < $viewmax; $i++)
{
print("$lines[$i]<HR>");<HR>は水平線
}
?>
宿題
何か作ってきて
次回 明日はお休み
カウンタ作ってみる?
0183ミニ編 ◆exvx.LWc
垢版 |
02/02/12 23:59ID:GZCCMcX5
すまん急いで作ってんでわけわからんかもしれん、
またすっげー(・∀・)イイの作ってだすから〜ん!
今回わけわからんかった人も次の解説まってチヨ!
0187ミニ編 ◆exvx.LWc
垢版 |
02/02/13 00:23ID:TgdYFLH9
>>184
ぃゃぁあのhtmlを駆使してイカシテル掲示板とか、
じゃんけんスクリプトとか何でもいいんで、おもろいもん、自分で
何か作るのが一番の勉強だからさ
>>186
俺が?

あと
>>167
>>168
ありがとーう!!!
>>169
 意 味 が わ か ら ん
>漏れこのスレ楽しみにしてるから
ありがとう
>>せいぜいがんばれよ
はぁ?どっちやねん(´ω`;;;;)
0188ミニ編 ◆exvx.LWc
垢版 |
02/02/13 00:37ID:TgdYFLH9
じゃあ寝るんで、お休みなさい明後日から再開します
じゃぁ!
0190名無しさん@お腹いっぱい。
垢版 |
02/02/13 01:08ID:a5UGinf1
ミニヘソさん 乙です。
0192gikochan ◆Bei0tBWg
垢版 |
02/02/13 12:47ID:???
>>181
ミニ編さま、講師おつかれさまですー。
個人的に 181の別解おもいついたのですが、効率を重視して(?)、
こういうのはどうでしょうか?
181の書き込み処理を軽くすませる方法(・∀・)
新たな命令 array_shift / array_slice / implodeつかってしまいました(´Д`;)

181の14行目〜21行目
//ログに書き込む-----------------------------------------------------------------------
$lines = file($logfile); //いままでのログを配列に読み込む
$lines = array_shift($lines,$dat); //配列の先頭に新しい要素(データ)を追加
$lines = array_slice($lines,0,$logmax); //配列の先頭[0]の要素から、指定個数($logmax)だけ残す
$write_data = implode($lines,""); //配列の内容を1つの文字データに結合
$fp = fopen($logfile,"w"); //ログファイル書き込みオープン
fwrite($fp,$write_data); //書き込み
fclose($fp); //クローズ
//-------------------------------------------------------------------------------------
0193gikochan ◆Bei0tBWg
垢版 |
02/02/13 12:47ID:???
{192の補足コメント}
一度ログを配列にとりいれたのなら、配列だけで一度に新しい情報の追記などの処理をしてしまう。
書き込みは最後にfwrite一度のみで、済ませていまふ。
今回はforループ内で書き込み処理を使っていません。
forループで繰り返し書き込み処理(fputやfwriteなど)を行うと、保存行数が増えたとき、
(たとえば非現実的ですがログ保存行数が5000行とか)重くなるなど、のデメリットがあるため。
保存行数5000行ならループを5000回繰り返すことになるです(゚∀゚;)
以上、勝手な解釈ですみませぬ。m(_ _)m
0195名無しさん@お腹いっぱい。
垢版 |
02/02/13 22:09ID:Df5j9fvu
1 ミニ編 ◇aCDPDEl2 2002/02/13(水) 22:07

俺odnADSLだからしばらく書けないかも
0198名無しさん@お腹いっぱい。
垢版 |
02/02/14 00:16ID:HMQ3IZ2G
なんでょ?楽しみにしてたのに(´w`)カクー
0199193 ◆Bei0tBWg
垢版 |
02/02/14 00:54ID:???
193のarray_shiftはarray_unshiftの間違いでしたm(_ _)m
失礼しました。
0200名無しさん@お腹いっぱい。
垢版 |
02/02/14 01:33ID:???
負荷のことはよくわからないが、
193のやり方がすっきりしてていいと思う。
でもどちらがサーバにやさしいんだろう?
5000行ぽっちじゃなくて
50万行くらいいったら差が出るんかな?
0203201
垢版 |
02/02/14 09:49ID:???
あ、なんか勘違いしてた(;´Д`)
逝ってきます。
0204名無しさん@お腹いっぱい。
垢版 |
02/02/14 11:12ID:JQ2Gyegk
>202
foreachで回さない限り、破綻はしないけどね。
ま、アクセスが強烈なサイトだったらやめた方がいいかもね。
一日一万アクセス程度のサイトだったら、50万レコードの配列程度じゃびくともしなかったよ。
(ていうことは、やったということだけどね)

ちなみにサーバは、500MHz程度のペンティアムに512MBのメモリのLinuxだった。
whileで回して、lastで抜けてたけどね。
0207名無しさん@お腹いっぱい。
垢版 |
02/02/14 20:55ID:JQ2Gyegk
>205
foreachは、配列をいったん評価してからループにはいるから、配列の中身が50万個あると、
その50万個を評価するのに時間とリソース食う。
whileなら、さみだれ式に処理するから、めっかったところでなんか処理したらいい。
ただし、keysやvalues使っちゃうとwhileでも巨大なメモリ消費になるので、危険は危険。
eachで逐次処理するのが一番もっともらしいかな?
ただ、重いのは重いよ、やっぱし。
どきどきしちゃう。
0208すみません
垢版 |
02/02/14 21:02ID:Ng/0IjnQ
Web Arena って PHP3.PHP4使用できるって書いて有るけど、制約が有るみたいな事も書いてある
普通に動かすことってできるのですか?
過去ログに有ったらすみません、場所教えてください。
PHP 素人です。
0210名無しさん@お腹いっぱい。
垢版 |
02/02/15 09:54ID:BTNR6PIJ
(◕ฺ∀◕ฺ)
0212名無しさん@お腹いっぱい。
垢版 |
02/02/15 11:18ID:adcoziP5
php saiko
0214名無しさん@お腹いっぱい。
垢版 |
02/02/15 16:37ID:blqT6YTo
いや、セーフモードでいいと思うよ
制限かかってるといってもsystem()とかそういうやつなので
こった事やろうと思わないなら問題ないと思う
0217名無しさん@お腹いっぱい。
垢版 |
02/02/16 12:12ID:mTWd6Sj2
ミニ編いなくなっちゃったから、俺がしきるかなヽ(´ー`)ノ
0222ミニ編 ◆exvx.LWc
垢版 |
02/02/16 14:25ID:x2V+2d4L
わーい書けた〜、
>>191
phpの利点だが、早い,webprog専用なので関数がいっぱいあって楽!
逆にwebprogにしか使えないとも言えるが、、
IPなんて一行で抜ける、レイアウトとスクリプトの役割分担しやすい

だめなとこ
鯖は改善されてきたが、これといった本が無いな、こんなもんだよ
>>214
セーフモードってうpロダとか使えないんじゃなかったっけ?
>>217
おお!お願いできる?今日の講座終わったら次から よ ろ し く!
>>218
3週間もあれば書くけど、、自分で作ったほうが早いよー
0223ミニ編 ◆exvx.LWc
垢版 |
02/02/16 14:33ID:x2V+2d4L
じゃぁ最近リアルで忙しいんで最後の講座でーす!
続きは>>217さんか他の方ができたらやってもらいたいなぁ

カウンタを作ってみよう!
<?
$filename = "count.dat";

$file = fopen($filename,"r");
$count = fread($file, filesize($filename));
fclose($file);
$count++;
print("$count");
$file = fopen($filename,"w");
fwrite($file, $count);
fclose($file);
?>
解説
<?
$filename = "count.dat";←$filenameはcount.datにする
$file = fopen($filename,"r");←読み専用で開ける
$count = fread($file, filesize($filename));←
fread関数はfread(読み込むファイル,読み込むサイズ)
でfilesizeで$filenameの大きさ測った
fclose($file);←閉める
$count++;←$countに1足す
print("$count");←表示カウンタ
$file = fopen($filename,"w");←カク専用で開ける
fwrite($file, $count);←書く
fclose($file);←閉める
?>
0224ミニ編 ◆exvx.LWc
垢版 |
02/02/16 14:40ID:x2V+2d4L
じゃぁ、俺編は今日で最後です〜。。
これで興味を持った人や初めてphpを触って面白いと思った
人がいたら凄く嬉しいです。。
あとレッツphpさん俺もあなたのページ凄く好きですよ!
番外編-お勧めphpエディタ-&-お勧めページ-
エディタ↓
http://www2s.biglobe.ne.jp/~t-susumu/toclip/library/tpad.html
ページ↓
http://php.s3.to/
http://www.dcl.info.waseda.ac.jp/~hasegawa/php/
ここで覚えたんでソースそっくりです

誰か俺が教えてやるぞーって人いたらやってください
長い間楽しかったです、じゃぁ!   ミ二編
0227名無しさん@お腹いっぱい。
垢版 |
02/02/16 17:56ID:Rq7ix2oE
>>ミニさん
お疲れ様でした。
つうかできればこんどはもうちょっと上のレベルを
あなたに教えてほし(略)
0229ミニ編 ◆exvx.LWc
垢版 |
02/02/16 18:22ID:x2V+2d4L
>>227
また時間が出来たら中級編でもやるよー。じゃぁおつかれさまでした!
>>228
よりたいなら素直によりたいって言えば?あほちゃうか
0232名無しさん@お腹いっぱい。
垢版 |
02/02/16 22:01ID:49kJ9jS2
おつかれ〜
これでPHPに興味を持ったよ。本も買ったしね。
中級編楽しみにしてるね
0238名無しさん@お腹いっぱい。
垢版 |
02/02/17 12:48ID:Zw3sJVBz
>>233
PEAR?確かSoftwareDesignに乗ってたと思われ。
0240名無しさん@お腹いっぱい。
垢版 |
02/02/19 12:45ID:???
あぼんぬがイパーイになちゃたね。
ともあれ、ミニヘソさんオツカレでした。
おいらもPHPちょいと勉強してみる気になりました。
0241名無しさん@お腹いっぱい。
垢版 |
02/02/19 14:55ID:1v3AUB4U
はじめまして、とても勉強になりました。
あと、下記でPHPの本が丸ごと一冊ダウンロード出来ます。
通称マンモス本
http://www.php.gr.jp/php/php4tettei/
0242名無しさん@お腹いっぱい。
垢版 |
02/02/19 15:45ID:???
       / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       | おい! オカマ野郎出てこい!
   ∧ ∧ |/\_________
   (,,゚Д゚)____.
   (つ/~ ※ ※ \
   /※ ※ ※ ※ \
0246名無しさん@お腹いっぱい。
垢版 |
02/02/19 17:12ID:???
       ∧∧     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
       /⌒ヽ)  < 荒らしに使われてる…
     〜(___ )    \_____________
     ''" ""''"" "''
0247名無しさん@お腹いっぱい。
垢版 |
02/02/20 18:48ID:???
てか、なぜmegabbsでやらないの?
今までいろいろ類似スレ立ててたみたいだけど、いっこうに答えてくれてないぞ。
レスを投稿する


ニューススポーツなんでも実況