2008年5月アーカイブ

submit しない?

リストをダブルクリックすると選択項目を編集できるようにしたかった。
<select name='sel1' id='sel1' size='10' style="width:100px;" ondblclick="selectClick();">
などとしてみたのだけど、何度クリックしても submit が起こらなかった。
人のブログをみてようやく分った。
原因はフォームのなかに submit という名前を持つ input 要素が含まれていたこと。

ちなみに submit するための関数はこんな感じ。$script はテンプレートに埋め込まれている。

$script = <<<S_END
function selectClick() {

var form = document.forms['mainform'];
var btn_edit = document.getElementById('btn_edit');
var control = document.createElement('input');
control.setAttribute('type', 'hidden');
control.setAttribute('name', 'action');
control.setAttribute('value', btn_edit.value);
form.appendChild(control);
form.submit();
}
S_END;

デバッグできなかった訳

xoops用のモジュールを作ろうとして Eclipse を使っていたけれどデバッガは使っていなかった。
というか使えなかった。
なんで使えんのか今日ようやくわかって、これで今まで Eclipse を
単なるエディタとして使っていなかった状態からだいぶ進歩したことになる?

次のスクリプトが入ったファイルを実行。


[phpinfo.php]
<?php
phpinfo();
?>

php.ini のパスが予期していたもの( /opt/php/php.ini )と違ってただけのことでした。
だからなんぼデバッガの設定をしてもサーバーには伝わらなかったのね。

リレーションの定義

OpenOffice で MySQL に接続してテーブル間にリレーションを張っても「目に見えない」。

リレーションの定義を SQL 文で書きたいけど、書き方を知らない。
しかたないので手間をかけて調べる。


  1. MySQL Administrator でバックアップファイルをとる。
    SQL文のファイルができる。
  2. MySQL Workbench でインポートだリバースエンジニアリングだして SQL 文を読み込む。
  3. 読み込んだデータベースを図にしていじる。
    1:nのリレーションを作って、勝手にできた外部キーを編集したり削除したり。(追記)
  4. 編集結果をエクスポートして SQL 文をつくる。

で、その結果をじっくり眺めながらお勉強をする。

--
-- Definition of table `g_category`
--

DROP TABLE IF EXISTS `g_category`;
CREATE TABLE IF NOT EXISTS `bee`.`g_category` (
`CODE` VARCHAR(4) NOT NULL ,
`CATEGORY` VARCHAR(50) NULL DEFAULT NULL ,
`GRP_CODE` VARCHAR(4) DEFAULT NULL ,
`NOTES` LONGTEXT NULL DEFAULT NULL ,
`COST` DECIMAL(12,2) NULL DEFAULT NULL ,
`PRICE` DECIMAL(12,2) NULL DEFAULT NULL ,
`CARRIAGE` DECIMAL(12,2) NULL DEFAULT NULL ,
`PHOTO` LONGBLOB NULL DEFAULT NULL ,
PRIMARY KEY (`CODE`) ,
CONSTRAINT `fk_g_category_g_group`
FOREIGN KEY (`GRP_CODE` )
REFERENCES `bee`.`g_group` (`CODE` )
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8;

CREATE INDEX fk_g_category_g_group ON `bee`.`g_category` (`GRP_CODE` ASC) ;


--
-- Definition of table `g_group`
--

DROP TABLE IF EXISTS `g_group`;
CREATE TABLE `g_group` (
`CODE` varchar(4) NOT NULL,
`GROUP` varchar(50) NOT NULL,
`NOTES` text,
PRIMARY KEY (`CODE`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

連絡先

nakanohito