日付入力時の重複入力警告を作成。重複している場合は、入力されているデータをテーブルで表示するようにした。

つまり、最終画面と同じテーブルを表示するため、最終画面表示のソースを関数化して再利用。上書きする場合は、既に入力されているデータを削除するようにした。

また、特に全フレーム表示時にテーブルの幅が大きくなりすぎていたので、チェックボックスとピンイメージのmarginを微調整し、なるべくテーブルが小さくなるようにした。

10個のピンそれぞれにアクセスキーを設定したが、テンキーでは動かない。(キーボード内の数字では動く。)調べても出てこないので、あまり重要じゃないからきっぱり諦めよう。

あと、、、
ログアウト画面で、
“cannot modify header information headers already sent by~”
のエラーが出たので調べてみると、、、出てきた、出てきた。

PHPでechoなどの出力をした後に、header関数をコールするとPHPエラーが出ます。
http://q.hatena.ne.jp/1302630911

すでに文字が出力されている状態でheader関数を呼び出すとエラーになるようにPHPが作られてるからです。

なぜエラーになるように作られてるかというとhttp通信の仕様で、htmlの本文の前にないと駄目だからです。

エラーにしないと、ヘッダーに書き込んでるつもりがそうでないと気づけないからです。

PHP Manual
http://php.net/manual/ja/function.setcookie.php

setcookie() は、その他のヘッダ情報と共に送信するクッキーを定義します。

ほかのヘッダ情報と同様に、クッキーは、スクリプトによる他のあらゆる出力よりも前に送信される必要があります(これはHTTPプロトコルの制約です)。

<html> や <head> タグはもちろん空白も含め、あらゆる出力よりも前にこの関数をコールするようにしなければなりません。

ふむふむ、どうやら、

setcookie('bowlingScore', '', time()-42000, '/');

の前に、

print "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";

をしていたのが原因みたい。そういえば、session_start();の場合もその前にコードを記述したらダメだったっけ。

session_startはエラーになりません。エラーなった場合はほかの原因です。

むむっ?どういうこと?

PHPで"session_start()"のエラーが出たときの対応
http://warumono.at.webry.info/201104/article_5.html

まずは「session_start()」のエラーが出る場合の原因を調査すると、以下の2点がわかった。
 (1) ファイルの先頭に改行がある
 (2) UTF-8のBOMがある

次に開発サーバと本サーバのPHPの設定ファイル「php.ini」を見比べる。
 開発サーバ : output_buffering = Off
 本サーバ  : output_buffering = 4096

どうやら「output_buffering」はセッションの出力にも影響しているようで、これを有効にしないとエラーになるようだ。今回はバッファ量を指定する「4096」を入力したが、「On」でもよい。

んむー、ちょっと違う。これは9/16(Fri)に5時間ハマったときの原因やね。XAMPPのデフォルトがOffだった。

PHP Manual
http://jp2.php.net/manual/ja/function.session-start.php

クッキーに基づくセッションを使用している場合、ブラウザに何か出力を行う前に session_start()をコールする必要があります。

なるほどね。納得。

気持ちよく、寝よう。