なずブログ

インフラSE、Java開発、リモートワークエンジニアな人のメモ帳

PHPのここをもっとちゃんと教えてよ!~その1~

f:id:nazuna_0124:20170326223448p:plain

ここのブログの存在意義は!

数ヶ月前の自分に教えたいこと!

どこまでも自分本位です。

などと言いつつも、理解の遅い私が理解できたこと

大抵の人がわかるので更新して行く意味はきっとあるかもしれないという説が捨てきれません。



さてさて、授業は作るだけで終わってしまうので、復習がてらのおはなしです。


改めてPHPの利点その1はデータベースを元に動的にhtml出力できることです。


その処理部分とHTMLの記述方法についてです。


最終的な出力はWebになる都合もあって、処理とデザインは別々に担当が多いです

(自分で作るにしても、違う日とかが多い)


というわけで、単純なデータを元にしたセレクトボックスの作成です。

結論としては3つ目の方法がおすすめだよ!とゆーおはなし。

<?php
    $names[] =['name'=>'Sato',"age" => "21"];
    $names[] =['name'=>'Suzuki',"age" => "31"];
    $names[] =['name'=>'Takahasi',"age" => "41"];
    $names[] =['name'=>'Ito',"age" => "51"];
    
?>


<html>
    <body>
        <select>
            <option>aaa</option>
            <option>bbb</option>
            <option>ccc</option>
        </select>
    </body>
</html>

まずポイント。html部分にはデータとは関係なく並べておきましょう。


んで、ここからです。おおむね3つの方法です。

たぶん、最初に習う方法

<?php
    $names[] =['name'=>'Sato',"age" => "21"];
    $names[] =['name'=>'Suzuki',"age" => "31"];
    $names[] =['name'=>'Takahasi',"age" => "41"];
    $names[] =['name'=>'Ito',"age" => "51"];
?>
<html>
    <body>
        <select>
          <?php
            foreach($names as $key => $val ){
                echo '<option>' .$val['name'] . '</option>';
                }
           ?>
        </select>
    </body>
</html>



なんとなくやりたくなる方法。html部分が極端に少ないのが魅力。

これやると、html出力用の自作関数作ろうかと考えます。

一度部品を全部、変数に入れてしまってあとで出力する方法です。

<?php
    $names[] =['name'=>'Sato',"age" => "21"];
    $names[] =['name'=>'Suzuki',"age" => "31"];
    $names[] =['name'=>'Takahasi',"age" => "41"];
    $names[] =['name'=>'Ito',"age" => "51"];
    
    
    $selectBox = '';    
    $selectBox .= '<select>'; 
     foreach($names as $key => $val ){
                $selectBox .= '<option>' .$val['name'] . '</option>';
             }
    $selectBox .=  '</select>'
?>


<html>
    <body>
        <?php echo $selectBox ?>
    </body>
</html>


本命がこちら。<?php ?>の記述が多く、一見すると避けたくなるのは罠です。

<?php
    $names[] =['name'=>'Sato',"age" => "21"];
    $names[] =['name'=>'Suzuki',"age" => "31"];
    $names[] =['name'=>'Takahasi',"age" => "41"];
    $names[] =['name'=>'Ito',"age" => "51"];
    
?>
<html>
    <body>
        <select>
        <?php foreach($names as $key => $val ): ?>
            <option><?= $val['name'] ?></option>
        <?php endforeach; ?>
        </select>
    </body>
</html>


特に何もなければ3つ目の書き方に慣れましょう


短い記載だとあんまし変わらないんですが、ご承知の通りhtmlはclassやら、divやら

ループするデータ箇所以外にもいっぱい記述があります。


他の方法を取ってると、いざ本番のhtmlに処理を渡そうとしたときに困ります←困りました。


尚、かなり早い段階でこの話題は聞いたはずなんですが、こういう教え方はしてくれなかったのが

アイキャッチ画像の怒りマークにあらわれています


これ見た人はどーでもいいところで躓かないでね!