39701


PHPを初めて間もないものなのですが、setcookieの記載を  
head以前で記述しなければならないことに関わり、疑問がわいてきてしまいました。

開発を進めているWebページは、送信ボタン押下でデータベースへのデータ登録が済むと  
固有の伝票番号みたいなものを採取し、この番号を画面に表す仕様を考えています。

①データベースへの登録、及び採取した伝票番号を表示用にクッキーに保存するコーディングは  
head内もしくはその前に記述予定です。

②当該画面は、データベースから動的に生成されるラジオボタンの羅列（INPUT TYPE=RADIO）、及び  
リストボックス（SELECT要素）が構成される仕様です。

# ====質問====

①も②も同じデータベースなので、できたら１度の接続の機会で達成したいのですが  
①のPHPをhead以前、②のPHPをbody内で記述する必要があるとなると、手段は  
一括でHTMを吐くような設計になってくるのでしょうか？  
（書きながら、ひょっとしてと思いましたが．．．配列のCOOKIEを格納して、body側で呼び出す？？）

毎回妙な質問をして本当に申し訳ありませんが、ご教示・ご見解を頂けましたら幸いです、何卒よろしくお願い申しあげます。


CC BY-SA 3.0
2017-11-19T12:01:43.120
39694
2017-11-19T21:32:01.270
2020-06-17T08:14:45.997
-1
25696
question
php
setcookieの記述も、body内の画面要素の生成もPHPで達成する場合の設計方法とは？


DBの接続ついては、１処理で接続を閉じなければ、最初にnewで接続した変数のインスタンスを使い回しで良いのではないかと思います。

setcookieについて、ブラウザに何らかの出力を行う前に実行する必要があります。詳しくはhttp://php.net/manual/ja/features.cookies.phpを見て下さい。

以下に、ブラウザに何らかの出力を行う前に
setcookie()実行する例を２パターン書きます。（もう一つ出力制御関数を使う方法も有りますがここでは書きません。）

例１

[code]

    <?php
    $a1 = 'hello title';
    $b1 = 'hello!!';
    $c1 = 'ブロック要素';
    $d=0;
    for($i=1;$i<11;$i++){
        $d1 += $i;
    }
    
    $tmp = <<<eot
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>{$a1}</title>
    </head>
    <body>
    <h1>{$b1}</h1>
    <div>{$c1}</div>
    処理結果：{$d1}
    </body>
    </html>
    eot;
    
    setcookie('testcookie',$d1);
    
    echo $tmp;
    
[/code]

例２

[code]

    <?php
    $a1 = 'hello title';
    $b1 = 'hello!!';
    $c1 = 'ブロック要素';
    $d=0;
    for($i=1;$i<11;$i++){
        $d1 += $i;
    }
    
    setcookie('testcookie',$d1);
    
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title><?=$a1?></title>
    </head>
    <body>
    <h1><?=$b1?></h1>
    <div><?=$c1?></div>
    処理結果：<?=$d1?>
    </body>
    </html>
    
[/code]


CC BY-SA 3.0
2017-11-19T21:32:01.270
39701
2017-11-19T21:32:01.270
22793
39694
answer