今日は、arrayとforeachの勉強をしたので、
復習がてら書いていこうと思います
この記事、最初は勉強したことを箇条書きにしようかと思っていたのですが、
僕が勉強に使ってるこの記事の最後に都合よく課題がありました
「マルチセレクトリストで選んだものを配列として取得し、foreachで記述しよう」
ここで急にインスパイアが僕を襲いました。これはsubwayっぽい。
「マルチセレクトリストで選んだものを配列として取得し、foreachで記述しよう」
ここで急にインスパイアが僕を襲いました。これはsubwayっぽい。
みなさん、サンドイッチ屋のsubwayをご存知でしょうか
シンガポールのsubwayは、セットにするとポテトではなくカントリーマームみたいな甘~いクッキーがついてきて、僕のお気に入りなのです
で、そのsubwayの特徴の1つがはさむ野菜を自由に選べること
ということで、はさむ野菜をマルチセレクトリストで指定すると、
店員が野菜を確認した後ソースを進めてくるコードを書くことにしました
苦心の末にできたのがこれ
途中でひっかかって修正した部分は、
・<select name="vegetable[]"の[]を付け忘れる⇒データ取得されず
・if(count($_POST['vegetable']) >= 5 )をif(count($_POST['vegetable']); >= 5 )に
・オススメソースのif構文で延々とエラー⇒手打ちで書きなおしたらなぜか通る
最後のやつはいろいろ変えて試して相当時間食いました。半時間ほど
あと$_SERVER['PHP_SELF']はXSS脆弱性があるらしい
対策等を見つけましたが、今は深入りすべきではないと判断
▼今日学んだこと
・$aaa=array(a,b,c) 変数に配列を代入
・$aaa=( a => b, c => d) 連想配列の書き方の1つ
・foreach($aaa as $aa){} 配列を全部繰り返し
・配列をいじる関数の存在 countとかexplodeとか
・print_rで見ながらデバッグ
ということで、はさむ野菜をマルチセレクトリストで指定すると、
店員が野菜を確認した後ソースを進めてくるコードを書くことにしました
<html> <body> <?php if(!isset($_POST['submit'])){ ?> 店員:野菜はどうされますか?<br /> <form action="<?php echo $_SERVER['SCRIPT_NAME'] ?>"" method="POST"> <select name="vegetable[]" multiple size="5"> <option value="レタス">レタス <option value="トマト">トマト <option value="きゅうり">きゅうり <option value="オニオン">オニオン <option value="オリーブ">オリーブ <option value="チリ">チリ <option value="ピクルス">ピクルス </select><br /> <input type="submit" name="submit" value="オーダー"> </form> <?php } else{ if(is_array($_POST['vegetable'])){ foreach($_POST['vegetable'] as $vege){ echo($vege .'と');} ?> でよろしいですね?<br /> オススメのソースは <?php if(count($_POST['vegetable']) >= 5 ){ $recommend="BBQソース";} elseif(count($_POST['vegetable']) >= 3 ){ $recommend="スイートオニオンソース";} else{$recommend="ハニーマスタード";} echo($recommend); ?>になります <?php } else { echo('野菜お嫌いなんですね'); } } ?> </body> </html>
苦心の末にできたのがこれ
途中でひっかかって修正した部分は、
・<select name="vegetable[]"の[]を付け忘れる⇒データ取得されず
・if(count($_POST['vegetable']) >= 5 )をif(count($_POST['vegetable']); >= 5 )に
・オススメソースのif構文で延々とエラー⇒手打ちで書きなおしたらなぜか通る
最後のやつはいろいろ変えて試して相当時間食いました。半時間ほど
あと$_SERVER['PHP_SELF']はXSS脆弱性があるらしい
対策等を見つけましたが、今は深入りすべきではないと判断
▼今日学んだこと
・$aaa=array(a,b,c) 変数に配列を代入
・$aaa=( a => b, c => d) 連想配列の書き方の1つ
・foreach($aaa as $aa){} 配列を全部繰り返し
・配列をいじる関数の存在 countとかexplodeとか
・print_rで見ながらデバッグ
No comments:
Post a Comment