初心者だけどPerlが大好き

コードが世界を変える!

追加と削除ボタンでデータベースを管理する  

追加と削除をボタンで操作します
操作した時に 新しく時間を上書きするようにしてあります

mente.cgi

#!D:/xampp/perl/bin/perl
use utf8;
use CGI;
use DBI;
$q = new CGI;
print $q->header(-type =>'text/html',-charset =>'utf-8'),
$q->start_html(-title=>"Database Form"),
$q->h1(' データを更新・削除します'),
$q->h2("データベースの内容");
$dbname = "trinity777";
$user = "root";
$passwd = "あなたのパスワード";
$tbname = "cgipm";
$host = "localhost";
# DBに接続
$dbh=DBI->connect("DBI:mysql:$dbname; host=$host", $user, $passwd)
or die $DBI::errstr;
$dbh->do("SET NAMES utf8");
# 該当する全データ出力するSQL実行
$sth = $dbh->prepare(" SELECT * FROM  $tbname WHERE name LIKE '%$myname%' order by id ");
if(!$sth->execute){print "SQL失敗\n";exit;}
print $q->start_table({-border=>1}),
$q->start_Tr,
$q->th(['id', 'mtime','name','email','subject', 'comments','uploaded_file']);
while (@rec = $sth->fetchrow_array())
{
print $q->start_Tr,
$q->td([$rec[0],$rec[1],$rec[2],$rec[3],$rec[4],$rec[5],$rec[6]]);
print $q->start_form(-action=>'update.cgi',-method=>post),
$q->hidden(-name =>'id', -value =>$rec[0]),
$q->td,
$q->submit(-name =>'Action', -value =>'更新'),
$q->end_td,
$q->end_form,
$q->start_form(-action=>'del.cgi',-method=>post),
$q->hidden(-name =>'id', -value =>$rec[0]),
$q->td,
$q->submit(-name =>'Action', -value =>'削除'),
$q->end_td,
$q->end_form;
}
# ステートメントハンドルクリア
$sth->finish;
# DB切断
$dbh->disconnect;
print $q->end_html;
update.cgi

#!D:/xampp/perl/bin/perl -w
use CGI;
use DBI;
use utf8;
$q=new CGI;
print $q->header(-type =>'text/html',-charset => 'utf-8'),
$q->start_html(-title=>"DATABASE"),
$q->h1('データの更新をします');
$dbname ="trinity777";
$user ="root";
$passwd ="あなたのパスワード";
$tbname ="cgipm";
$host ="localhost";
$id=$q->param('id');
# DBに接続
$dbh=DBI->connect("DBI:mysql:$dbname;host=$host", $user, $passwd)
or die $DBI::errstr;
if(!$dbh){print "接続失敗\n";  exit;}
$dbh->do("SET NAMES utf8");
# SQL実行
$sth = $dbh->prepare(" SELECT * FROM  $tbname WHERE id ='$id' ");
if(!$sth->execute){print "SQL失敗\n";exit;}
@rec = $sth->fetchrow_array();
if(!@rec){print "データが削除されています";exit;}
print $q->start_multipart_form,
"名前",
$q->textfield(-name=>'name',-value =>$rec[2]),
$q->br,
"Eメール",
$q->textfield(-name=>'email',-value =>$rec[3]),
$q->br,
"題名",
$q->textfield(-name=>'subject',-value =>$rec[4]),
$q->br,
"コメント",
$q->textarea(-name=>'comments',-rows=>3,-columns=>50,-value =>$rec[5]),
$q->br,
"ファイル名",
$q->filefield(-name=>'uploaded_file',
                -default=>'starting value',
                -size=>50,
                -maxlength=>80,-value =>$rec[6]),
$q->br,
$q->reset,
$q->hidden(-name =>'id', -value =>'$id'),
$q->submit(-name =>'Action', -value =>'更新'),
$q->end_multipart_form;
$sth->finish;
# DB切断
$dbh->disconnect;
$id=$q->param('id');
$localtime = localtime();
$myname=$q->param('name');
$myemail=$q->param('email');
$mysubject=$q->param('subject');
$mycomments=$q->param('comments');
$myuploaded_file=$q->param('uploaded_file');
# DBに接続
$dbh=DBI->connect("DBI:mysql:$dbname;host=$host", $user, $passwd)
or die $DBI::errstr;
if(!$dbh){print "接続失敗\n";  exit;}
$dbh->do("SET NAMES utf8"); 
# UPDATE文作成
$sql="UPDATE $tbname SET mtime='$localtime', name='$myname', email='$myemail', subject='$mysubject', comments='$mycomments', uploaded_file='$myuploaded_file'  WHERE id ='$id' ";
# SQL実行
$sth = $dbh->prepare($sql);
if(!$sth->execute){
    print "SQL失敗\n";
    exit;
}
# ステートメントハンドルクリア
$sth->finish;
# DB切断
$dbh->disconnect;
$q->br,
print $q->a({-href =>"mente.cgi"} , "データベース一覧へ");
print $q->end_html;
del.cgi

#!D:/xampp/perl/bin/perl -w
use CGI;
use DBI;
use utf8;
$q=new CGI;
print $q->header(-type =>'text/html',-charset => 'utf-8'),
$q->start_html(-title=>"DATABASE"),
$q->h1('データの削除をします');
$dbname ="trinity777";
$user ="root";
$passwd ="あなたのパスワード";
$tbname ="cgipm";
$host ="localhost";
$id=$q->param('id');
# DBに接続
$dbh=DBI->connect("DBI:mysql:$dbname;host=$host", $user, $passwd)
or die $DBI::errstr;
if(!$dbh){print "接続失敗\n";  exit;}
$dbh->do("SET NAMES utf8");
# SQL実行
$sth = $dbh->prepare(" DELETE  FROM  $tbname WHERE id ='$id' ");
if(!$sth->execute){print "SQL失敗\n";exit;}
# ステートメントハンドルクリア
$sth->finish;
# DB切断
$dbh->disconnect;
print $q->h2("削除しました"),
$q->br,
$q->a({-href =>"mente.cgi"} , "データベース一覧へ");
$q->end_html;