PHPのプログラムを実行すると
No recipient addresses found in header
が表示された。
多くのエラーをクリアし、やっと完了画面にたどり着いたと思ったら
画面の一番上に表示されていた。
Webで検索してみたら、
メールアドレスがない、という意味だった。
深い問題でなくてよかった。
メールアドレスを登録してから実行したら、
表示されなくなった。
2019年03月29日
2019年03月27日
javascriptでカーソルの形を変える
CSSではなく、Javascriptでボタンの形を変える方法。
HTML
<input type="submit" name="btn1" value="送信" id="btn1" />
上のボタンのcursor属性を指定する。
Javascript
document.getElementById("btn1").style.cursor = "pointer";
pointerの前後を " で囲んだらうまく動作した。
HTML
<input type="submit" name="btn1" value="送信" id="btn1" />
上のボタンのcursor属性を指定する。
Javascript
document.getElementById("btn1").style.cursor = "pointer";
pointerの前後を " で囲んだらうまく動作した。
2019年03月24日
日付が0000-00-0000
Mysqlのデータベースを使用していて
Dateタイプのフィールドの値が 0000-00-0000 になっているのに気付いた。
現象が発生しているのは必須入力ではない日付欄。
Webで検索してみると
null がこのような形式で表示されるらしい。
モード(sql mode)を切り替えると0000-00-00となるのを防げるようで、
そのためのコマンドがいくつか記載してあった。
早速、そのコマンドを実行した。
SET GLOBAL sql_mode = 'modes';
↓
#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
rootユーザではないので、仕方ない。しかし、こちらも駄目。
SET SESSION sql_mode = 'modes';
↓
#1231 - Variable 'sql_mode' can't be set to the value of 'modes'
次のコマンドは実行できた。
SET SESSION sql_mode = 'STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_DATE';
実行結果を確認すると、
SHOW VARIABLES LIKE "%sql_mode%";
sql_modeの値は空のままだった。設定は行われていない。
etc/my.cnfファイルにsql_modeの設定を書き込んでも良いらしいが
レンタルサーバなので権限がない。
万策尽きてしまったが、ここで閃いた。
開発中のシステムは長くても3か月しか使わない。
2019年以外の日付は入力されない。
月と日を別々の整数項目にすれば、0000-00-00 は発生しない。
月と日をプルダウンメニューで選択するようにすれば
入力の手間が増えることもない。
本質的な解決ではないが、回避策としてはこれで十分。
Dateタイプのフィールドの値が 0000-00-0000 になっているのに気付いた。
現象が発生しているのは必須入力ではない日付欄。
Webで検索してみると
null がこのような形式で表示されるらしい。
モード(sql mode)を切り替えると0000-00-00となるのを防げるようで、
そのためのコマンドがいくつか記載してあった。
早速、そのコマンドを実行した。
試行錯誤
SET GLOBAL sql_mode = 'modes';
↓
#1227 - Access denied; you need (at least one of) the SUPER privilege(s) for this operation
rootユーザではないので、仕方ない。しかし、こちらも駄目。
SET SESSION sql_mode = 'modes';
↓
#1231 - Variable 'sql_mode' can't be set to the value of 'modes'
次のコマンドは実行できた。
SET SESSION sql_mode = 'STRICT_ALL_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ZERO_DATE,NO_ZERO_DATE';
実行結果を確認すると、
SHOW VARIABLES LIKE "%sql_mode%";
sql_modeの値は空のままだった。設定は行われていない。
etc/my.cnfファイルにsql_modeの設定を書き込んでも良いらしいが
レンタルサーバなので権限がない。
最後の一手
万策尽きてしまったが、ここで閃いた。
開発中のシステムは長くても3か月しか使わない。
2019年以外の日付は入力されない。
月と日を別々の整数項目にすれば、0000-00-00 は発生しない。
月と日をプルダウンメニューで選択するようにすれば
入力の手間が増えることもない。
本質的な解決ではないが、回避策としてはこれで十分。
2019年03月21日
pear:quickform setDefaultsの挙動
setDefaultsの動きが定かでないことは以前にも書いた。
(定かでないのは私の頭かもしれないが...)
また、setDefaultsが動作せず、テキストボックスに初期値を設定できない。
$qform->accept($renderer);
$this->renderer->assign('form', $renderer->toArray());
$qform->setDefaults(array('honbu'=> ’東京’));
honbuフィールドに初期状態で東京と表示できない。
何と、コマンドの順番に問題があった。
setDefaults の行を $qform->acceptの行の上に移動したら解決した。
初期値を表示できた。
参考)
pear:quickform setDefaultsの謎
(定かでないのは私の頭かもしれないが...)
また、setDefaultsが動作せず、テキストボックスに初期値を設定できない。
$qform->accept($renderer);
$this->renderer->assign('form', $renderer->toArray());
$qform->setDefaults(array('honbu'=> ’東京’));
honbuフィールドに初期状態で東京と表示できない。
何と、コマンドの順番に問題があった。
setDefaults の行を $qform->acceptの行の上に移動したら解決した。
初期値を表示できた。
参考)
pear:quickform setDefaultsの謎
2019年03月18日
全角スペースを見落とす。
PHPでClassに関数を追加して
実行すると画面は真っ白になった。
追加した関数を削除して、
実行すると正常に動作した。
追加した関数を何度見返しても、間違いはなさそう。
20分ぐらい悩んだが分からない。
7,8行しかないのに。
途方に暮れかけたところで、
ソースコードの字下げ部分をチェックしてみた。
関数の最後の2行の先頭に全角スペースがあった。
こんなことで時間を取られるとは悲しいし、悔しい。
実行すると画面は真っ白になった。
追加した関数を削除して、
実行すると正常に動作した。
追加した関数を何度見返しても、間違いはなさそう。
20分ぐらい悩んだが分からない。
7,8行しかないのに。
途方に暮れかけたところで、
ソースコードの字下げ部分をチェックしてみた。
関数の最後の2行の先頭に全角スペースがあった。
こんなことで時間を取られるとは悲しいし、悔しい。