中学生がPHPを習得するスレ
■ このスレッドは過去ログ倉庫に格納されています
中学生ですが、PHPを習得したく思います。 最初は何を学べばいいですか? 本を紹介してくれてもいいです。 そのままレッスンしてくれてもいいです。 次は、フォーム処理が一番勉強になると思う。 <html> <head> <title>form.php</title> </head> <body> <?php $_POST['post'] = isset($_POST['post']) ? $_POST['post'] : NULL; if ($_POST['post']) { print '<div>送信を確認しました。 送信内容は ' . $_POST['post'] . ' です。</div>'; } ?> <form method="post" action="<?php print $_SERVER['PHP_SELF']; ?>"> <label for="post">送信内容</label><input type="text" name="post" id="post" /> <input type="submit" /> </form> </body> </html> >>60 表示だけで実害はないと思うが、XSS脆弱だな 表示だけでXSS脆弱って、あるんですか? 勉強になりそうなので、詳しく教えてください。 >>60 を参考にして、足し算マシーンを作ってみました。 <? if(empty($_GET)){ ?> <HTML> <HEAD><title>足し算スクリプト</title></HEAD> <BODY> <form method="get" action="test.php" /> <input type="text" name="sahen">+<input type="text" name="uhen" /> <input type="submit" value="送信" /> </form> </BODY> </HTML> <?php }else{ $answer = $_GET[sahen]+$_GET[uhen]; echo "答えは $answer です。"; } ?> どうでしょうか? >>64 うーm、HTMLを出力するためにPHPモードをぬけているのはワザあり でグッジョブ! それでは、早速ポイント解説に。 ・empty()関数は値が0の場合にもfalseを返します。つまり、uhen=0, sahen=0 の場合、式としてはオケィでも、計算をしてもらえなくなります。こういうとき にはstrlen()あたりがおすすめです。 ・遊び心たっぷりのユーザにも対応できるように、入力が数字かどうかを確か めるといいかも。 if (! preg_match('/^[0-9]$/', $_GET[sahen] . $_GET[uhen])) { print '入力は半角数字でね'; } みたいに。 >>65 誤) '/^[0-9]$/' 正) '/^[0-9]+$/' >>65 ありがとうございます。 >>65-66 を参考にして割り算スクリプトを作りました。 <? if(empty($_GET)){ ?> <HTML> <BODY> <form method="get" action="<?php $_SERVER['PHP_SELF']; ?>"> <input type="text" name="sahen">÷<input type="text" name="uhen"> <input type="submit" value="送信"> </form> </BODY> </HTML> <? }else{ if(!preg_match('/^[0-9]+$/',$_GET[sahen].$_GET[uhen])){ echo "入力は半角数字で。"; }elseif($_GET[sahen] % $_GET[uhen]!==0){ $amari_answer = $_GET[sahen] % $_GET[uhen]; $answer = $_GET[sahen] / $_GET[uhen]; $answer = (int)$answer; echo "答えは、$answer あまり $amari_answer です。"; }else{ $answer = $_GET[sahen] / $_GET[uhen]; echo "答えは、$answer です"; } } ?> 今回はコメントで解説してみました。 <HTML><BODY> <form method="get" action="<?php print $_SERVER['PHP_SELF']; ?>"> <input type="text" name="sahen">÷<input type="text" name="uhen"> <input type="submit" value="送信"> </form> </BODY></HTML> <?php //フォームは常に表示したほうがいいかも。 //計算するたびに電源が切れる電卓が使いにくいのと同じ。 if ((! strlen($_GET['uhen'])) && (! strlen($_GET['sahen']))) { print '右辺と左辺を入力してください。'; } elseif(!preg_match('/^[0-9]+$/',$_GET['sahen'].$_GET['uhen'])){ print '入力は半角数字で。'; }elseif(($_GET['sahen'] % $_GET['uhen'] !== 0) && ($_GET['sahen'] > $_GET['uhen'])){ //左辺が右辺より小さい場合に、ここを実行すると変な答えになるので、 //条件をちょっと厳しくして、左辺が右辺より小さい場合はここをスルー。 $amari_answer = $_GET['sahen'] % $_GET['uhen']; $answer = $_GET['sahen'] / $_GET['uhen']; $answer = (int)$answer; echo "答えは、{$answer} あまり {$amari_answer} です。"; //これは漏れのこだわりでしかないんだけど、二重引用符で変数を展開す //るときには{}で変数を囲んで明示的に展開するようにすると読みやすく //なる }else{ $answer = $_GET['sahen'] / $_GET['uhen']; echo "答えは、{$answer} です"; } ?> どうでもいい事だが、「左辺」と「右辺」の使い方が間違っている。 おれPerlつかう人だけどさ、 PHPってきもいね。 記法が。 入るだの抜けるだのありえないんですが…いや聞き流してくださってかまわないっす。 (ちら裏) そりゃPerlも十分きもいけどさ。 Perl書くやつできれいなコード見たことない。 KENTを代表として。 >>69 うん。そうなんだよ。確かにそうなんだけどさ… スレの趣旨を重視して、そこはニュアンスだけにしときませんか… >>69 被除数(わられるかず)と除数(わるかず)だよな。 >>68 | }elseif(($_GET['sahen'] % $_GET['uhen'] !== 0) && ($_GET['sahen'] > $_GET['uhen'])){ 剰余の前に除数と被除数の0チェックをしたいところ。 >>73 こんなところで、ゆとり教育してどうする。 PHPとは関係なくても間違いは正してやらにゃ。 厨房相手ならなおのこと。 >>74 1を応援しますとか言いながら、自分の無能さを痛感したため 一時退却します。 誰か、引き続きよろしく。 >>75 すみません。漏れもゆとり教育を受けたので、ゆとり教育に 甘んじているのです。 >>76 帰るな。 ところで、>>74 を読んでこうしてみたがどうか? <?PHP if ( $_GET['uhen'] ) { $dividend = $_GET['sahen'] ; $divisor = $_GET['uhen'] ; } else { $dividend = 0 ; $divisor = 0 ; } ?> <HTML><BODY> <form method="get" action="<?php print $_SERVER['PHP_SELF']; ?>"> <input type="text" name="sahen" value ='<?PHP echo $dividend ?>'>÷<input type="text" name="uhen" value ='<?PHP echo $divisor ?>'> <input type="submit" value="送信"> </form> </BODY></HTML> <?php if ( (!strlen($dividend)) && (!strlen($divisor)) ){ echo '被除数(わられるかず)と除数(わるかず)を入力してください。'; } elseif ( !preg_match('/^[0-9]+$/',$dividend.$divisor) ){ echo '入力は半角数字で。'; } elseif ( ($dividend != 0) && ($divisor != 0) ) { $amari_answer = $dividend % $divisor; $answer = (int)($dividend / $divisor) ; echo "答えは、{$answer}" ; if( $amari_answer ) { echo " あまり {$amari_answer} です。"; } } else { echo "0の割り算キタコレ!!" ; } ?> >>78 ダメ。 最初の一回目がキタコレになっちゃうよ。 >>78 ただ今、戻りました。 簡潔で、わかりやすくなってますね。それとinputにテキストが入っ てるのが細かい工夫でいいかんじです。 蛇足ですが、2chは空白を削除しちゃうので、ソースの掲載には不向 きですね。対応する括弧がわからない… >>79 $dividend = 'なんか入れてね' ; $divisor = 'なんかいれてね' ; てのはどう? ちなみに最初のif分岐は $dividend = isset($_GET['sahen']) ? $_GET['sahen'] : 'なんか入れて' ; $divisor = isset($_GET['uhen']) ? $_GET['uhen'] : 'なんか入れて' ; でもいける。 >>79 そか じゃ、さきっちょのところをこれでごまかすのはどうかw $dividend = $divisor = '' ; if ( $_GET['uhen'] && $_GET['sahen'] ) { $dividend = $_GET['sahen'] ; $divisor = $_GET['uhen'] ; } >>80 お帰りなさい。俺はオナニーでもして寝ます。おやしみー 右辺、左辺の使い方は間違っているのはもう確信犯なんですが、 それに変わる正しい言葉がみつからなかったんで・・・。 だんだん精密なプログラムになってきましたね。 やはりプログラミングは、>>64 のような柱から、後で精密にしていくもんなんでしょうね。 今日はゆとり世代の私につきあってくれてありがとうございました。>>57 、>>58-64 割り算、まとめ。 <?PHP $dividend = $_GET['sahen'] ? $_GET['sahen'] : '数字を入力' ; $divisor = $_GET['uhen'] ? $_GET['uhen'] : '数字を入力' ; ?> <HTML><BODY> <form method="get" action="<?php print $_SERVER['PHP_SELF']; ?>"> <input type="text" name="sahen" style="text-align:right;" value ='<?PHP echo $dividend ?>'>÷<input type="text" name="uhen" style="text-align:right;" value ='<?PHP echo $divisor ?>'> <input type="submit" value="送信"> </form> </BODY></HTML> <?php if ( (!strlen($dividend)) && (!strlen($divisor)) ){ echo '被除数(わられるかず)と除数(わるかず)を入力してください。'; } elseif ( !preg_match('/^[0-9]+$/',$dividend.$divisor) ){ echo '入力は半角数字で。'; } elseif ( ($dividend != 0) && ($divisor != 0) ) { $amari_answer = $dividend % $divisor ; $answer = (int)($dividend / $divisor) ; echo "答えは、{$answer} " ; if( $amari_answer ) { echo "あまり {$amari_answer} " ; } echo "です。" ; } else { echo "0の割り算キタコレ!!" ; } ?> なんか興味深いスレだwww たとえ>>1 が釣りでも、池沼春厨でも、 おれはこのスレに常駐するとしよう。 糞春厨が新学期には掲示板を作れるようになるのをみさせてもらおう。 それは無理か >>86 答えを出力するところが冗長。 printf( "答えは、%d %s です。", $answer, $amari_answer ? "あまり {$amari_answer}":'' ) ; 一行ですむね。 >>86 それだと、小数点の計算ははねられちゃう。 > elseif ( !preg_match('/^[0-9]+$/',$dividend.$divisor) ){ ↓ elseif ( !is_numeric($dividend) || !is_numeric($divisor) ){ ってのはどうだ? >>90 剰余を出力するんだから、小数点の考慮は不要では? さっそく仕様の問題が出てきたかwww たがが割り算計算でも、チェックするとなるとムズいな。 >>1 よ、チェックを怠るな… ただ、>>1 の最初の割り算スクリプトについてだが、 ちゃんと(int)を使っているあたりがよい。 また、余り出力のアイディアも悪くないので、 鍛えればかなり優秀なプログラマーになる悪寒。 やばい、仕事場が>>1 によって失われそうで本当に悪寒が… じゃ、割り算まとめ(rev.1) <?PHP $dividend = $_GET['sahen'] ? $_GET['sahen'] : '数字を入力' ; $divisor = $_GET['uhen'] ? $_GET['uhen'] : '数字を入力' ; ?> <HTML><BODY> <form method="get" action="<?php print $_SERVER['PHP_SELF']; ?>"> <input type="text" name="sahen" style="text-align:right;" value ='<?PHP echo $dividend ?>'>÷<input type="text" name="uhen" style="text-align:right;" value ='<?PHP echo $divisor ?>'> <input type="submit" value="送信"> </form> </BODY></HTML> <?php if ( (!strlen($dividend)) && (!strlen($divisor)) ) { echo '被除数(わられるかず)と除数(わるかず)を入力してください。'; } elseif ( !preg_match('/^[0-9]+$/',$dividend.$divisor) ) { echo '入力は半角数字で。'; } elseif ( ($dividend != 0) && ($divisor != 0) ) { $amari_answer = $dividend % $divisor ; $answer = (int)($dividend / $divisor) ; printf( "答えは、%d %s です。", $answer, $amari_answer ? "あまり {$amari_answer}":'' ) ; } else { echo '0の割り算キタコレ!!' ; } ?> <!-- 入力のチェックはJavascriptでやりたいが。 --> >>94 まぁいいんだが、まとめは>>1 にやらせろよ。 じゃなきゃ、結局フーーンで終わっちゃうヨカン 割り算(改良型) ・少数可 ・不自然な最初の警告文非表示 <?PHP $submit_check = isset($_GET['dividend']) ? $_GET['dividend'] : 0 ; $dividend = isset($_GET['dividend']) ? $_GET['dividend'] : '数字を入力' ; $divisor = isset($_GET['divisor']) ? $_GET['divisor'] : '数字を入力' ; ?> <HTML><BODY><form method="get" action="<?php print $_SERVER['PHP_SELF']; ?>"> <input type="text" name="dividend" style="text-align:right;" value ='<?PHP echo $dividend ?>'>÷<input type="text" name="divisor" style="text-align:right;" value ='<?PHP echo $divisor ?>'> <input type="hidden" name="submit_check" value="1"><input type="submit" value="送信"> </form></BODY></HTML> <?php if ($submit_check) { if ( (!strlen($dividend)) && (!strlen($divisor)) ) { echo '被除数(わられるかず)と除数(わるかず)を入力してください。'; } elseif ( !preg_match('/^[0-9]+(?:\.[0-9]+)$/',$dividend.$divisor) ) { echo '入力は半角数字で。'; } elseif ( ($dividend != 0) && ($divisor != 0) ) { $amari_answer = $dividend % $divisor ; $answer = (int)($dividend / $divisor) ; printf( "答えは、%d %s です。", $answer, $amari_answer ? "あまり {$amari_answer}":'' ) ; } else { echo '0の割り算キタコレ!!' ; } } ?> 誤)$submit_check = isset($_GET['dividend']) ? $_GET['dividend'] : 0 ; 正)$submit_check = isset($_GET['submit_check']) ? $_GET['submit_check'] : 0 ; しまった。 $dividend = isset($_GET['dividend']) ? $_GET['dividend'] : '数字を入力' ; $divisor = isset($_GET['divisor']) ? $_GET['divisor'] : '数字を入力' ; により、下の式は常にtrueだ!! if ( (!strlen($dividend)) && (!strlen($divisor)) ) もう限界… <?php class Calc { private static $sc; static $dividend; static $divisor; private static $amari_answer; private static $answer; private static $error = array(); public function __construct() { self::$sc = isset($_GET['submit_check']) ? $_GET['submit_check'] : NULL ; self::$dividend = isset($_GET['dividend']) ? $_GET['dividend'] : NULL ; self::$divisor = isset($_GET['divisor']) ? $_GET['divisor'] : NULL ; } public function Validate() { if (! strlen(self::$dividend)) {self::$error[] = '被除数を入力してください。';} if (! strlen(self::$divisor)) {self::$error[] = '除数を入力してください。';} if ( (!preg_match('/^[0-9]+(?:\.[0-9]+)$/', self::$dividend.self::$divisor)) && (strlen(self::$dividend)) && (strlen(self::$divisor)) ) { self::$error[] = '入力は半角数字で。';} if ((! self::$error) && (self::$dividend != 0) && (self::$divisor != 0) ) { self::$amari_answer = self::$dividend % self::$divisor ; self::$answer = (int)(self::$dividend / self::$divisor) ;} } public function showResult() { if (self::$error && self::$sc) {print "</ul>\n"; foreach (self::$error as $key => $value) {print "<li>$value</li>\n";}print "</ul>\n"; } elseif ((! self::$error) && self::$sc) { printf( "答えは、%d %s です。", self::$answer, self::$amari_answer ? "あまり " . self::$amari_answer : '' ); } } } ?> 再び。 誤)preg_match('/^[0-9]+(?:\.[0-9]+)$/' 正)preg_match('/^[0-9]+(?:\.[0-9]+)?$/' 続き <?php $Calc = new Calc(); $Calc->Validate(); $Calc->showResult(); ?> <HTML><BODY> <form method="get" action="<?php print $_SERVER['PHP_SELF']; ?>"> <input type="text" name="dividend" style="text-align:right;" value ='<?PHP echo Calc::$dividend; ?>'>÷<input type="text" name="divisor" style="text-align:right;" value ='<?PHP echo Calc::$divisor ?>'> <input type="hidden" name="submit_check" value="1"> <input type="submit" value="送信"> </form> </BODY></HTML> クラス化されてるしw って環境はPHP5なのか・・・。 今後発展していっても、都合上4しか環境が無いので、静観しとく。 >>101 スミマセソ。独走状態に突入してしまいました。 今後は、原点に戻って、 1. 1氏の応援と援助 2. みんなでわいわいソースの検証 にしますので、参加よろしく。 追伸 1氏のPHPのバージョンは? 俺は結構おもしろく見ている。 >>57 の技量もミックスアップするんじゃないか、ってのも見もの。 >>102 ローカル環境は、apache2のPHP5で、 共用サーバーは、 メインがXREAのs43鯖でPHP4、 サブがXREAのs190鯖でPHP5です。 >>105 漏れと比べるとかなりいい環境だなぁ…Apache2 + PHP5ならできること の範囲は広がるね。 とゆーことで、アドバイスの際はPHP4以下との互換性も保ちつつ、時に PHP5特有のコードもありで。 >>104 ちなみに、(int)を使ったことがなかった漏れは、1に教えられることの ほうが多くなるかも。 じゃ、とりあえずPHP4版してみた <?php class Calc { var $sc ; var $dividend ; var $divisor ; var $amari_answer ; var $answer; var $error = array(); function Calc() { //コンストラクタ $this->sc = isset($_GET['submit_check']) ? $_GET['submit_check'] : NULL ; $this->dividend = isset($_GET['dividend']) ? $_GET['dividend'] : null ; $this->divisor = isset($_GET['divisor']) ? $_GET['divisor'] : null ; $this->amari_answer = $this->answer = 0 ; } function Validate() {//入力チェック if( $this->sc ) { if (! strlen($this->dividend)) { $this->error[] = '被除数を入力してください。' ; } if (! strlen($this->divisor)) { $this->error[] = '除数を入力してください。' ; } if ( !preg_match('/^[0-9]+(?:¥.[0-9]+)?$/', $this->dividend.$this->divisor) ) { $this->error[] = '入力は半角数字で。' ; } if ((! $this->$error) && ($this->dividend != 0) && ($this->divisor != 0) ) { $this->amari_answer = $this->dividend % $this->divisor ; $this->answer = (int)($this->dividend / $this->divisor) ; } } else { $this->error[] = '割り算をするよ! 上に数字を入れて[送信]を押してね!' ; } } function showResult() {//結果出力 if ( $this->error ) { print "</ul>¥n"; foreach ($this->error as $key => $value) { print "<li>$value</li>¥n" ; } print "</ul>¥n"; } elseif ((! $this->error) && $this->sc) { printf( "答えは、%d %s です。", $this->answer, $this->amari_answer ? "あまり " . $this->amari_answer : '' ) ; } } } ?> <!-- つづく --> <!-- つづき --> <?PHP $Calc = new Calc(); $Calc->Validate(); ?> <HTML><BODY> <form method="get" action="<?php echo $_SERVER['PHP_SELF']; ?>"> <input type="text" name="dividend" style="text-align:right;" value ='<?PHP echo $Calc->dividend; ?>'>÷<input type="text" name="divisor" style="text-align:right;" value ='<?PHP echo $Calc->divisor ?>'> <input type="hidden" name="submit_check" value="1"> <input type="submit" value="送信"> </form> <?PHP $Calc->showResult(); ?></BODY></HTML> >>107-108 サンクス。これはありがたい。 漏れは「CGIプログラミング」->「はじめてのPHP5」->青マンモス(PHP5) ときているので、正直なところ5以外はよくわからんのです。 >>109 Self::をthis->にした程度だけどね。 あ。せっかくscにhiddenで送っているのがもったいないので、 Validate()とerrorをちょっと変えて、最初の一回目だけ '割り算をするよ! 上に数字を入れて[送信]を押してね!' を出すようにしてみたヨケイナオセワ。 せっかくクラス化したんだから、フォームもクラスに入れた方が良くないかな? function getResult() { //結果の取得 $result = "" ; if ( $error ) { $result .= "</ul>¥n"; foreach ($this->error as $key => $value) { $result .= "<li>$value</li>¥n" ; } $result .= "</ul>¥n"; } elseif ((! $this->error) && $this->sc) { $result .= sprintf( "答えは、%d %s です。", $this->answer, $this->amari_answer ? "あまり " . $this->amari_answer : '' ) ; } return $result ; } function getForm() { //フォームの取得 return <<< EndOfForm <form method="get" action="{$_SERVER['PHP_SELF']}"> <input type="text" name="dividend" style="text-align:right;" value ='{$this->dividend}'>÷<input type="text" name="divisor" style="text-align:right;" value ='{$this->divisor}'> <input type="hidden" name="submit_check" value="1"> <input type="submit" value="送信"> </form> EndOfForm; } 本体側は、こんな感じで。 <HTML><BODY> <?PHP $Calc = new Calc() ; $Calc->Validate() ; echo $Calc->getForm() ; echo $Calc->getResult() ; ?> </BODY></HTML> >>111 変に盛り上げたから、>>1 は迷惑してるかも…>>1 氏、時間のある ときとか、質問があるときだけでも気軽に書き込んでくらさい。 >>112 ちがいます。漏れのせいで誤解されると>>1 がかわいそうなので きちんと明言しておきます。 >>113 なるほど。たしかに、フォームもプログラムに取り込んだほうが HTMLがすっきりして見やすくなりそうですね。こういう、HTMLと プログラムの分離の仕方には漏れも興味があります。 >>114 こんかいの割り算のように小さい物では、あえてやる必要もないと思ったんだけどね。 色々と流儀もあるみたいで、宗教論争が始まったらつまらなくなっちゃいますし。 出力されたhtmlがガチャガチャになるのを嫌って、あえて出たり入ったりで書く人もいるくらいですから。 デザインの修正がやりやすい場合があるから、この場合のformを別ファイル(.html)にして、 本体かクラスのどっちかでrequireする人もいるわな。 >>115 自分はHTMLがガチャガチャになっちゃうのが嫌いです。なんというか くだらないこだわりなんですけど、HTMLソースもひとつの作品だと思 っているところがあるんですよ。 >>116 自分はどっちかというとこのやり方かな。ファイル増やしてでもrequ- ireします。 ところで、実は、漏れの正体は http://pc8.2ch.net/test/read.cgi/php/1017456911/ の >>760 なのです。 実は受験勉強を理由に自分のスクリプトの開発を中断していたのですが、 2chをやめられず、参考書片手に書き込みをつづけていたのです。 自分で盛り上げておいて申し訳ないのですが、しばらく撤退します。「し ばらく」というのが一浪明けになるかも知れませんが…スレが生きてたら また復活します。 サヨウナラ。そして、アリガトウゴザイマシタ... >>118 あー、memoの人だったのかー。 受験、ガンガレよー。 >>118 お疲れ様でしたー。 いろいろ割り算プログラムを作ってたんですが、 割る数のほうに「0」を入れると、 「Warning: Division by zero in C:\Apache Group\Apache2\htdocs\test.php on line 18」 と表示されます。 意味がわからないのでyahoo翻訳してみたところ、 「警告:Cのゼロによる分割:第18行の上のApache GroupApache2htdocstest.php」 といわれました。 これは、記述が悪いんでしょうか? どうも、仕様臭がプンプンするんですが・・・ >>121 身の回りで考えて味噌。 5つのリンゴを「0人で分ける」ってありえないでしょ。 っていうか、今の数学ではそういうことは教えない物なのか… 書き漏れ 0で割る事は出来ない って言うのは、「数学上の仕様」 だと思っておきなさい >>121 みなさんも書いているけど、0で割り算しちゃダメだから。 たとえば、3 / 0考えてみよう。 これは、日本語にすると、「3 の中に 0は幾つありますか?」ってことだよね。 答えは無限個。"3から0を何回引き算できるか"って考えても良い。 素直なコンピュータちゃんにソレをさせると、割り算からかえってこなくなってしまう。 なので、あらかじめ 0で割り算させないように中の人がチェックしているってわけ。 >>57 さんや他の人が書込んだスクリプトには、ちゃんと 0のチェックが入っているよね? それとも見もしないでふーんって感じだったのかな? このスレのの>>74 にも書いてあるね。 いくら中学生でもそのくらいは・・・まさか小学生か? 割る数に0を入れられるとエラーが出るのを なんとかしたかったんだろ?>>1 よ と>>1 を擁護してみんとてするなり。 <?php function & XML_unserialize(&$xml){ $xml_parser = &new XML(); $data = &$xml_parser->parse($xml); $xml_parser->destruct(); return $data;} function & XML_serialize(&$data, $level = 0, $prior_key = NULL){ if($level == 0){ ob_start(); echo '<?xml version="1.0" ?>',"\n"; } while(list($key, $value) = each($data)) if(!strpos($key, ' attr')) #if it's not an attribute #we don't treat attributes by themselves, so for an empty element # that has attributes you still need to set the element to NULL if(is_array($value) and array_key_exists(0, $value)){ XML_serialize($value, $level, $key); }else{ $tag = $prior_key ? $prior_key : $key; echo str_repeat("\t", $level),'<',$tag; if(array_key_exists("$key attr", $data)){ #if there's an attribute for this element while(list($attr_name, $attr_value) = each($data["$key attr"])) echo ' ',$attr_name,'="',htmlspecialchars($attr_value),'"'; reset($data["$key attr"]); } if(is_null($value)) echo " />\n"; elseif(!is_array($value)) echo '>',htmlspecialchars($value),"</$tag>\n"; else echo ">\n",XML_serialize($value, $level+1),str_repeat("\t", $level),"</$tag>\n"; } reset($data); if($level == 0){ $str = &ob_get_contents(); ob_end_clean(); return $str; }} ?> 俺が中学生の頃は、 せいぜい誰かが作ったやつの改造が限界だった。 改造っていってもちょっとした事しか出来へんかったけど。 取りあえず>>1 は匿名メールが限界だな。 最初は、コメントとコピーライトを変える所からだなw 織れが PHP を覚えはじめたのが中二の時な件について。 >>135 1に質問ぜめにされる前に、勉強法を言ったほうがいいお。 織れが○○○○を覚えはじめたのが中二の時な件について。 HTML → CSS → サイト作った → 配布スクリプトでいろいろ設置 → サイトになじまない → そうだ自分で作ろう → PHP が簡単らしい → レッツ → 小部屋 → マンモス PDF 最初のちょっとだけ → 日記できた ここまでで中三の一学期くらいだったか。 ちなみに織れは新学期から工房。 ってか織れ自体オブジェクト指向ダメぽだから完全じゃないorz ワンとかニャーとか意味不杉。 MySQL もダメ。 勉強法は三行目。 PHP 本とかは買ってない。立ち読みはしたけど。 さんすうの割り算でつまづいている少年がいると聞いて飛んで来ました。 今の中学生はいいよなぁ 俺はN88-BASICしかできなかった。 >>140 今の中学生はいいよなぁ 俺はPHPしかできなかった。 なんて言う時代が来るんだから安心しなさい。 つか今はガキでも無修正見放題だからなー。 2ちゃんで宿題マンドクセーとかいいながらぬきまくりしたかったなー 俺は中2でphp覚えて掲示板とか作った で、今受験おわったとこだがほとんど文法忘れた・・・ >>1 じゃないけど、どこかにPHPの掲示板の作成の説明のサイトみたいなのない? 掲示板を作る流れを解説しているページはないですか。 >>144 「作る流れ」ってなんだ? 考える⇒試す⇒考える⇒直す⇒試す⇒考える⇒考える⇒考える⇒ご飯食べる⇒考える⇒オナる⇒考える⇒寝る⇒忘れる >>145 いやいやいや、違。日本語がわるうござんした。 投稿フォーム→フォームの取得→フォームの内容チェック→フォームのフォーマット・・・ みたいなやつ。 >>144 基本は>>145 がすべて書いてくれているわけだが、 1. フォームの表示->フォームデータの保存(保存形式とかサニタイズとかよく考える) 2. 保存データの表示 3. 1.2.を合体 とりあえずソレっぽくなる 4. いじってみて機能追加や見映え修正 場合によっては1.からやり直す ※それぞれの段階で他人のソースを眺めまくるのを忘れるな。一個じゃダメだ、色々見ろ。 >>146 ちょ、お前さん、そこまでわかっているならまず手を動かしてみなよ。 単純な質問ですいません。 フォームで選択式につくったもので解答したあと その解答がそのまま保持されるようにつくるにはどのようにすればいいのでしょうか? 例 選択肢 A B C D Cを選んで解答ボタン押したあとまた同じ画面が出てきて初めからCが選択されている状態。 宜しくお願いします。 なんでそこで1がおもむろに登場するのかと小一時間(ry ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる