TOP XML & CGI 目次

XMLでデータベース
フォームデータの統合
フォームから送られてきたデータをつないで$data変数に入れます。もちろん式を一行にすることもできますが、とても見づらいので間違いやすいです。
その後にprint文を入れて$dataの中身を見てみます。(これは後ではずします=赤字)
test08a.cgi

#!/usr/bin/perl

print "Content-type: text/html\n\n";

#フォームから送られてきた内容をデコードする
&decode_f;

if($FORM{'action'} eq "edit"){

  #フォームデータを統合する
  $data = "タイトル\=\"" . $FORM{'title'} . "\" ";
  $data = $data . "サブタイトル\=\"" . $FORM{'subtitle'} . "\" ";
  $data = $data . "文献\=\"" . $FORM{'bunken'} . "\" ";
  $data = $data . "人物\=\"" . $FORM{'jinbutsu'} . "\" ";
  $data = $data . "年月日\=\"" . $FORM{'nengappi'} . "\" ";
  $data = $data . "連続\=\"" . $FORM{'renzoku'} . "\" ";
  $data = $data . "画像\=\"" . $FORM{'gazou'} . "\" ";
  $data = $data . "横サイズ\=\"" . $FORM{'yoko'} . "\" ";
  $data = $data . "縦サイズ\=\"" . $FORM{'tate'} . "\" ";
  $data = $data . "リンク名\=\"" . $FORM{'linkmei'} . "\" ";
  $data = $data . "リンク\=\"" . $FORM{'link'} . "\" ";
  $data = $data . "コメント\=\"" . $FORM{'comment'} . "\" ";
  $data = $data . $FORM{'text'};


print $data;
exit;

(以下省略)
dtb.xmlを開き、編集ボタンから上記プログラムを実行すると下の画面で終了します。
テキストデータは中に改行が含まれている場合が多いのでデータの区切りと間違いますので、エスケープコードに変換します。
これに要素名をつけます(青字)。なお、要素名は汎用性を持たせるためにプログラムの始めに変数で定義するようにしました(赤字)。黒字ボールド部分はデータを確認するための臨時行です。
test08a.cgi
#!/usr/bin/perl

print "Content-type: text/html\n\n";

#要素名の定義
$element_root = "新聞雑誌記事";
$element = "記事";


#フォームから送られてきた内容をデコードする
&decode_f;

if($FORM{'action'} eq "edit"){

#フォームデータを統合する
$data = "タイトル\=\"" . $FORM{'title'} . "\" ";
$data = $data . "サブタイトル\=\"" . $FORM{'subtitle'} . "\" ";
$data = $data . "文献\=\"" . $FORM{'bunken'} . "\" ";
$data = $data . "人物\=\"" . $FORM{'jinbutsu'} . "\" ";
$data = $data . "年月日\=\"" . $FORM{'nengappi'} . "\" ";
$data = $data . "連続\=\"" . $FORM{'renzoku'} . "\" ";
$data = $data . "画像\=\"" . $FORM{'gazou'} . "\" ";
$data = $data . "横サイズ\=\"" . $FORM{'yoko'} . "\" ";
$data = $data . "縦サイズ\=\"" . $FORM{'tate'} . "\" ";
$data = $data . "リンク名\=\"" . $FORM{'linkmei'} . "\" ";
$data = $data . "リンク\=\"" . $FORM{'link'} . "\" ";
$data = $data . "コメント\=\"" . $FORM{'comment'} . "\"";

$FORM{'text'} =~ s/\n/&lt\;br\/&gt\;/g; #テキストの改行を無効にする
$data = "\<".$element." ".$data."\>".$FORM{'text'}."\<\/".$element."\>";

$data =~ s/</&lt\;/g; #htmlタグを禁止する
$data =~ s/>/&gt\;/g; #htmlタグを禁止する
print $data;
exit;
(以下省略)
$data = $data . "コメント\=\"" . $FORM{'comment'} . "\"";の、最後の"\""に注意!上の式"\" "と違います。""の間に半角スペースがありません。これを間違うと後でデータがぐちゃぐちゃになります。
上の図は改行コードのエスケープコード化を行う前のものです。