Google Maps をレスポンシブサイトに埋め込むには

Google Maps をレスポンシブに変更する簡単なコードです。(^_^)

HTML

<div class="ggmap">googlemapsのiframeコード</div>

CSS

.ggmap {
position: relative;
padding-bottom: 56.25%;
padding-top: 30px;
height: 0;
overflow: hidden;
}
.ggmap iframe,
.ggmap object,
.ggmap embed {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}

中学生がウェブデザイナー&ウェブプログラマーに挑戦中

wordリボンスクールで勉強中の中学生の紹介です。

1番目の写真はワードの勉強中です。レベルはマイクロソフトオフィススペシャリスト合格レベルまで勉強します。

(今大学生が就職のために勉強しているレベルです)

この後エクセルの勉強が続きます。

 

 

 

 

photosop

2番目の写真はワード・エクセルの終了後アドビ・フォトショップの勉強中です。

自分でフライヤーやウェブデザインができるレベルまでべんきょうします。

フォトショップが終わると、イラストレーターの勉強に入ります。

フォトショップとイラストレーターが終わると、いよいよプログラムのスタートです。

 

 

 
web
プログラムは、HTML CSSからスタートで、自力で簡単なサイトを作れるまで勉強します。

写真はHTML CSSの最終段階です。

この後Javascript jQueryの勉強が待っています。

中学生にプログラミングを教えるとは

 

RBパソコンスクールでは現在数名の中学生がパソコンの勉強にきています。
勉強の内容は基本的にワードExcelの習得といったところです。
そんな中学生たちに急にプログラミングに興味を持てと言ってもなかなか難しいところです。
ここでは1人の少女について述べてみます。
彼女は絵を書くことが好きです。
そして彼女は小学校6年生で児童英検3級に合格しています。
そんな彼女が「あいうえお」から始まりブラインドタッチそしてワードまで進んだのは数ヵ月後でした。
ところがある程度進んでいくうちに彼女の興味心が薄れていったのです。
このままでは挫折しそうなので彼女にPhotoshopの勉強しないかと進めてみました。(BOBが作ったビデオ講座です)
そこから彼女の快進撃が始まりました。Photoshop終了後イラストレーターも終了してしまいました。
ではプログラミングはどのようにすればやる気が出るかと考えてみました。
まず最初に英語が好きなことからcodecademyのサイトで英語で勉強できるよと言ってみました。
これには彼女が目を輝かせました。
でも、さすがにいきなりcodecademyは敷居が高すぎて無理なので、dotinstallのサイトを紹介しました。
まずはHTMLそしてCSSそしてHTML5でサイトの作成。さらにCSS3。ここまでくると描画もできちゃいます。
今冗談で将来はアメリカへ行ってWebデザイナーにでもなればひとりでできるよなんて言って笑っています。(続く)

僕の勉強法 プログラミング

この二三日メディア NHKテレビ で学校で「反転授業」が取り上げられています。「反転授業」といっても何の事はない、今やインターネットの世界では当たり前の存在のビデオ講義の事です。やっと学校の授業の最尖端校で取り組み始めたようです。

プログラミングの世界では

の3つが僕が経験しているサイトです。

まず ドットインストールのビデオ授業で理解して、

次に CODEPREP で復習をします。

さらにcodecademy を挑戦します。

挑戦というのは、最後のサイトは英語のサイトなので、英語力の挑戦でもありますが、

何と言っても自分で自由にコードをうつ必要が有るので、これが良いのです。

プログラミングの世界は、たとえ一文字間違ってもダメです。たとえそれが空白であってもダメです。

if (condition) { console.log (“あいうえお !”) ; } else { }

のような構文で!の前にスペースを忘れたらもうおしまい!

といってもcodecademyでの練習問題の中での解答の話なのですが、これが間違いの原因である事を発見するのに何時間かかった事やら。

そうなんです、プログラミングは自分で書く事が大切なんです。これが大変!

でもやるしかないんです。

 

 

 

}

ユーザー中心の設計:ホームページ

あけましておめでとうございます。
正月の休みに(ユーザー中心ウェブサイト戦略)を読み終えました。

普段他社のホームページを作成しているにもかかわらず、忙しさにかまけて自社のホームページを見直すのを怠っていました汗!
検索エンジンで上位表示され、さてhpの訪問数が増えました。でも成果が見えません。
そんな時考えなければならないのがユーザ中心ウェブサイト戦略でした。
よくあることですが、ホームページを初めて作る際、たくさんの流行の機能をもりこみすぎて自己満足に陥ってしまう場合がありますね。
でも誰が見るねん、訪問者にどうして欲しいねん、という視点が全く欠けている場合がよくありますね。

 

  • 訪問者はどういう人か?
  • 訪問者は何を期待しているか?
  • 訪問者に何をしてもらいたいか?
  • そのためにはどんな機能が、どんな文字が必要か?

これらの質問の回答には、仮想シナリオが必要となります。
自分がユーザーになったつもりで検証したり、ユーザビリティーテストを行ったりすることです。
キーワードは、改善、改善、改善です。
では本年もよろしくお願いいたします。

PC遠隔操作事件の横浜市ホームページに弱点

今朝の毎日新聞の記事に、PC遠隔操作事件の横浜市ホームページに弱点があることが報じられていました。
というのはCSRF(クロスサイトリクエストフォージェリー)と言われるものです。
これは掲示板などに投稿する際に、他のサイトから投稿できないようにするための脆弱性対策なのですが、この初歩的な対策がホームページの掲示板に施されていなかった模様です。
基本的にはセッション関数とランダム関数を使って対策を施します。
初歩的な対策を施していなかった公的なホームページにもびっくりしますね。
また2chの掲示板を見て誘導されたURLをクリックすると自動的に投稿欄に書き込みが行われてしまうというのは、Javaスクリプトなどのonclickイベント等を使えば簡単にできそうです。
警察の捜査員がのwebプログラミングの初歩的な点に気がつかなかったとすれば問題ですよね。
今の世の中webプログラミングの知識も少しは知っておかないとやっていけないということでしょうか?
実は8月29日に僕は他のブログでCSRFじゃないかと言う記事を載せていました。(^-^)/
http://forrestgump.blog49.fc2.com/blog-entry-2.html

CakePHPの基礎 (ドットインストール)

CakePHP

*概要
– PHPで作られたWebアプリケーションフレームワーク

*公式サイト
– cakephp.org
Documentation
API ここの命令の詳しいリファレンス
Book 概念説明 チュートリアル

*必要となる知識
PHP/MySQL/HTML/CSS/JS/Linux

*レッスンで使う環境
http://127.0.0.1/

* MVC
– Model – データ
– View - 見た目
– Controller - かけはし

* CoC – Convention over Configration (設定より規約)

公式サイトよりCakePHPをダウンロード後、解凍しファルダをリネイム(cake)しhtdocsに配置。

===================================================

* appフォルダ

tempフォルダに書き込み権限を与える。

vim who.php

<?php echo `whoami`; ?>

sudo chown -R apache cake/app/temp/

=====================================================

データベース設定

 * MySQL

create database bob_cakephp_blog;
grant all on bob_cakephp_blog.* to dbuser@localhost identified by ‘*******’;

Configフォルダ

database.php.defaultを複製しdatebase.phpにリネイム

設定内容を変更
host
user
password

記事
– 一覧を表示
– 個別記事を表示
– 追加
– 編集
– 削除

========

Model(Model/Post.php)
— mysql table

Controller(Controller/PostsController.php)
* scaffold
– index – /cake/posts/
– view
– add
– edit
– delete

View(View/Posts/)
– index.ctp
– view.ctp
– add.ctp
– edit.ctp

create table posts (
id int not null auto_increment primary key,
title varchar(50),
body text,
created datetime default null,
modified datetime default null
);

insert into posts (title, body, created, modified) values
(‘title1’, ‘body1’, now(), now()),
(‘title2’, ‘body2’, now(), now()),
(‘title3’, ‘body3’, now(), now());

//07 Scaffoldを使ってみよう

ModelフォルダにPost.phpを作成

<?php
class Post extends AppModel {
}

ControllerにPostsController.phpを作成
<?php
class PostsController extends AppController {
   public $scaffold;

}

 

//08記事の一覧を表示してみよう
PostsController.php

<?php

class PostsController extends AppController {
public $helpers = array(‘Html’, ‘Form’);

public function index() {
$this->set(‘posts’, $this->Post->find(‘all’));
}

}

view/posts/index.ctpを作成

<h2>記事一覧</h2>

<ul>
<?php foreach ($posts as $post) : ?>
<li>
<?php
debug($post);
?>
</li>
<?php endforeach; ?>
<ul>

?

 

<h2>記事一覧</h2>

<ul>
<?php foreach ($posts as $post) : ?>
<li>
<?php
//debug($post);
echo h($post[‘Post’][‘title’]);
?>
</li>
<?php endforeach; ?>
<ul>

 

/Config/core.php

Configure::write(‘debug’, 2); (debug情報)0=何も表示しない 1=エラー表示のみ 2=表示

//10 http://127.0.0.1/cake/ 記事一覧をで表示する

C:\xampp\htdocs\cake\app\Config\routs.php

Router::connect(‘/’, array(‘controller’ => ‘pages’, ‘action’ => ‘display’,’home’));  //を

Router::connect(‘/’, array(‘controller’ => ‘posts’, ‘action’ => ‘index’));  //へ書き換え

*ヘッダーフッターの編集(タイトルの編集)

C:\xampp\htdocs\cake\app\View\Layouts\default.ctp

<?php echo $cakeDescription ?>: //削除

PostsController.phpの編集

$this->set(‘title_for_layout’,’記事一覧’);  //追加
// 11 find()を使いこなそう(PostsController.php)

public function index() {
$params = array(
‘order’ => ‘modified desc’,
‘limit’ => 2
);
$this->set(‘posts’, $this->Post->find(‘all’, $params));
$this->set(‘title_for_layout’,’記事一覧’);
}

// 12個別記事の詳細を表示してみよう

(PostsController.php)
public function view($id = null) {
$this->Post->id = $id;
$this->set(‘post’,4this->Post->read());
}

C:\xampp\htdocs\cake\app\View\Posts\view.ctp ファイルを作成

<h2><?php echo h($post[‘Post’][‘title’]); ?></h2>

<p><?php echo h($post[‘Post’][‘body’]); ?></p>

// リンクを張ってみよう

index.php 記事一覧

echo $this->Html->link($post[‘Post’][‘title’],’/posts/view/’.$post[‘Post’][‘id’]);

戻るリンク

default.ctp

<h1><?php echo $this->Html->link(‘Home’, ‘/’); ?></h1>

// 14 記事を追加してみよう(add)

(PostsController.php)

public function add() {
if ($this->request->is(‘post’)) {
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash(‘Success!’);
$this->redirect(array(‘action’=>’index’));
} else {
$this->Session->setFlash(‘failed!’);
}
}
}

(add.ctp)の作成

<h2>Add post</h2>

<?php
echo $this->Form->create(‘Post’);
echo $this->Form->input(‘title’);
echo $this->Form->input(‘body’, array(‘rows’=>3));
echo $this->Form->end(‘Save Post’);

 

// エラーチェックをしてみよう
(Model/post.php)

<?php

class Post extends AppModel {
public $validate = array(
‘title’ => array(
‘rule’ => ‘notEmpty’,
‘message’ => ‘空じゃ駄目だし’
),
‘body’ => array(
‘rule’ => ‘notEmpty’
)
);
}

// jQueryを導入してみよう

(default.ctp)

<script src=”http://code.jquery.com/jquery-1.8.0.min.js”></script>
</head>
<script>
$(function() {
setTimeout(function() {
$(‘#flashMessage’).fadeOut(“slow”);
},800);
});
</script>
</body>

 

// 記事の編集をしてみよう

PostsController.php

public function edit($id = null) {
$this->Post->id = $id;
if ($this->request->is(‘get’)) {
$this->request->data = $this->Post->read();
} else {
if ($this->Post->save($this->request->data)) {
$this->Session->setFlash(‘success!’);
$this->redirect(array(‘action’=>’index’));
} else {
$this->Session->setFlash(‘failed!’);
}
}
}
edit.ctp

<h2>Edit Post</h2>

<?php
echo $this->Form->create(‘Post’, array(‘action’=>’edit’));
echo $this->Form->input(‘title’);
echo $this->Form->input(‘body’, array(‘rows’=>3));
echo $this->Form->end(‘save!’);

index.ctp

<?php echo $this->Html->link(‘編集’,array(‘action’=>’edit’,$post[‘Post’][‘id’])); ?>

//20 記事を削除してみよう

public function delete($id) {
if ($this->request->is(‘get’)) {
throw new MethodNotAllowedException();
}
if ($this->Post->delete($id)){
$this->Session->setFlash(‘deleted!’);
$this->redirect(array(‘action’=>’index’));
}
}

deleteではviewが無い

記事一覧 indwex.cpt 隠しform
<?php
echo $this->Form->postLink(‘削除’, array(‘action’=>’delete’, $post[‘Post’][‘id’]),
array(‘confirm’=>’sure?’));
?>

 

//削除処理をajax化してみよう //PostsCnotroller.php

public function delete($id) {
if ($this->request->is(‘get’)) {
throw new MethodNotAllowedException();
}
if ($this->reqest->is(‘ajax’)) {
if ($this->Post->delete($id)){
$this->autoRender = false;
$this->autoLayout = false;
$response = array(‘id’ => $id);
$this->header(‘Content-Type: application/json’);
echo json_encode($response);
exit();
}
}
$this->redirect(array(‘action’=>’index’));
}

記事一覧 //index.ctp

<?php
echo $this->Html->Link(‘削除’, ‘#’, array(‘class’=>’delete’, ‘data-ost-id’=>$post[‘Post’][‘id’]));
?>

<script>
$(function() {
$(‘a.delete’).click(function(e) {
if (confirm(‘sure?’)) {
$.post(‘/cake/posts/delete/’+$(this).data(‘post-id’), {}, function(res) {
$(‘#post_’+res.id).fadeOut();
}, “json”);
}
return false;
});
});

</script>

<li id=”post_<? echo h($post[‘Post’][‘id’]); ?>”>

==================================================

コメント
- 一覧を表示
- 追加
- 削除

Model
– mysql table
– association

Controller
index
add
delete

View

//MySql table の作成

//commentsテーブルを用意しよう
create table comments (
id int not null auto_increment primary key,
commenter varchar(255),
body text,
post_id int not null,
created datetime default null,
modified datetime default null
);

insert into comments (commenter, body, post_id, created, modified) values
(‘c1’, ‘c1’, ‘3’, now(), now()),
(‘c2’, ‘c2’, ‘3’, now(), now()),
(‘c3’, ‘c3’, ‘3’, now(), now());

//アソシエーションを設定しよう

Model

Comment.php

<?php
class Comment extends AppModel {
public $belongsTo = ‘Post’;
}

post.php へ追加
public $hasMany = “Comment”;

View

view.cpt

<h2>Comments</h2>

<ul>
<?php foreach ($post[‘Comment’] as $comment): ?>
<li><?php echo h($comment[‘body’]) ?> by <?php echo h($comment[‘commenter’]) ?></li>
<?php endforeach; ?>
</ul>

//コメントの追加

CommentsController.php

<?php

class CommentsController extends AppController {
public $helpers = array(‘Html’, ‘Form’);

public function add() {
if ($this->request->is(‘post’)) {
if ($this->Comment->save($this->request->data)) {
$this->Session->setFlash(‘Success!投稿されました!’);
$this->redirect(array(‘controller’=>’posts’,’action’=>’view’,$this->data[‘Comment’][‘post_id’]));
} else {
$this->Session->setFlash(‘failed!失敗です!’);
}
}
}

view.ctp

<h2><?php echo h($post[‘Post’][‘title’]); ?></h2>

<p><?php echo h($post[‘Post’][‘body’]); ?></p>

<h2>Comments</h2>

<ul>
<?php foreach ($post[‘Comment’] as $comment): ?>
<li><?php echo h($comment[‘body’]) ?> by <?php echo h($comment[‘commenter’]) ?></li>
<?php endforeach; ?>
</ul>

<h2>Add Comments</h2>

<?php
echo $this->Form->create(‘Comment’,array(‘action’=>’add’));
echo $this->Form->input(‘commenter’);
echo $this->Form->input(‘body’,array(‘rows’=>3));
echo $this->Form->input(‘Comment.post_id’,array(‘type’=>’hidden’, ‘value’=>$post[‘Post’][‘id’]));
echo $this->Form->end(‘post Comment’);

 

//コメントの削除
controller.php
public function delete($id) {
if ($this->request->is(‘get’)) {
throw new MethodNotAllowedException();
}
if ($this->request->is(‘ajax’)) {
if ($this->Comment->delete($id)){
$this->autoRender = false;
$this->autoLayout = false;
$response = array(‘id’ => $id);
$this->header(‘Content-Type: application/json’);
echo json_encode($response);
exit();
}
}
$this->redirect(array(‘controller’=>’posts’,’action’=>’index’));
}

view.ctp

<li id=”comment_<?php echo h($comment[‘id’]); ?>”>
<?php echo h($comment[‘body’]) ?> by <?php echo h($comment[‘commenter’]) ?>
<?php
echo $this->Html->Link(‘削除’, ‘#’, array(‘class’=>’delete’, ‘data-comment-id’=>$comment[‘id’]));
?>
</li>
<script>

$(function() {
$(‘a.delete’).click(function(e) {
if (confirm(‘sure?’)) {
$.post(‘/cake/comments/delete/’+$(this).data(‘comment-id’), {}, function(res) {
$(‘#comment_’+res.id).fadeOut();
}, “json”);
}
return false;
});
});
</script>

お問合せ管理システムを作ろう(ドットインストール)

HTML / CSS

PHP

MySQL

jQuery Javascript

—————————–

ローカル開発環境 PHP 5.2

ブラウザ(Chrome)

テキストエディタ

ーーーーーーーーーーーーーー

ユーザー管理(簡略化しています)

セキュリティ(簡略化しています)

//データベースを設計 作成する

create database contacts;
grant all privileges on contacts.* to dbuser@localhost identified by ‘*******’ ;

use contacts;

create table entries (
id int not null auto_increment primary key,
name varchar(255),
email varchar(255),
memo text
) default charset=utf8;

//お問合せフォームを作る index.php

<?php

error_reporting(E_ALL & ~E_NOTICE);

if($_SERVER[‘REQUEST_METHOD’]==”POST”){

$name = $_POST[‘name’];
$email = $_POST[‘email’];
$memo = $_POST[‘memo’];

$error = array();

//エラー処理

if (!filter_var($email,FILTER_VALIDATE_EMAIL)) {
$error[‘email’] = ‘メールアドレスが正しくありません’;
}

if ($email == ”) {
$error[‘email’] = ‘メールアドレスが入力されていません’;
}
if ($memo == ”) {
$error[‘memo’] = ‘内容が入っていません’;
}

//エラーがなかった場合

if (empty($error)) {
//DBにデータを入れる
mysql_connect(“localhost”, “dbuser@localhost”, “********”) or die(“can’t connect to DB: “.mysql_error());
mysql_select_db(“contacts”) or die(“can’t select to DB: “.mysql_error());

$q = sprintf(“insert into entries (name, email, memo, created, modified) values (‘%s’, ‘%s’, ‘%s’, now(), now())”,
mysql_real_escape_string($name), mysql_real_escape_string($email),mysql_real_escape_string($memo));
mysql_query($q) or die(“can’t run query: “.mysql_error());

//ありがとうページに飛ぶ
header(“Location: http://127.0.0.1/contacts/thanks.html”);
}

}
?>
<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”UTF-8″>
<title>お問合せフォーム</title>
</head>
<body>
<h1>お問合せフォーム</h1>
<p>こちらからどうぞ!</p>
<form method=”post” action=””>
<p>お名前</p>
<input type=”text” name=”name” value=”<?php echo htmlspecialchars($name); ?>”>
<p>メールアドレス</p>
<input type=”text” name=”email” value=”<?php echo htmlspecialchars($email); ?>”>
<?php if ($error[‘email’]) echo $error[‘email’]; ?>
<p>内容</p>
<textarea name=”memo” cols=”40″ rows=”5″><?php echo htmlspecialchars($memo); ?></textarea>
<?php if ($error[‘memo’]) echo $error[‘memo’]; ?>

<p><input type=”submit” value=”送信”></p>
</form>
</body>
</html>

//サンクスページの作成 thanks.html

<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”UTF-8″>
<title>お問合せありがとうございました</title>
</head>
<body>
<h1>お問合ありがとうございました</h1>
<p>感謝感激!</p>
</body>
</html>

//管理画面の作成 /admin/index.php

<?php

error_reporting(E_ALL & ~E_NOTICE);

//DB接続
mysql_connect(“localhost”, “dbuser@localhost”, “********”) or die(“can’t connect to DB: “.mysql_error());
mysql_select_db(“contacts”) or die(“can’t select to DB: “.mysql_error());

//データを取得

$rs = mysql_query(“select * from entries”);

$entries = array();

while ($row = mysql_fetch_assoc($rs)){
$entries[] = $row;
}
?>
<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”UTF-8″>
<title>データ一覧</title>
<script src=”http://code.jquery.com/jquery-1.6.4.min.js”></script>
</head>
<style>
.deleteEntry {
cursor: pointer;
color: blue;
}
</style>
<body>
<h1>データ一覧</h1>
<ul>
<?php foreach ($entries as $entry) : ?>
<li id=”entry_<?php echo $entry[‘id’]; ?>”><a href=”edit.php?id=<?php echo $entry[‘id’]; ?>”><?php echo htmlspecialchars($entry[‘name’]); ?></a>
<span class=”deleteEntry” data-id=”<?php echo $entry[‘id’]; ?>”>X</span></li>
<?php endforeach; ?>
</ul>
</body>
<script>
$(function() {
$(‘.deleteEntry’).click(function() {
var data = $(this).data();
//data.id
if (confirm(“本当に削除しますか?”)){
//ajax
$.post(“delete.php”, {
//オプション
id: data.id
}, function() {
//successした後の処理
$(‘#entry_’+data.id).fadeOut(800);
});
}
});
});

</script>
</html>

//データ編集画面 admin/edit.php

<?php

error_reporting(E_ALL & ~E_NOTICE);

$id = $_GET[‘id’];

mysql_connect(“localhost”, “dbuser@localhost”, “********”) or die(“can’t connect to DB: “.mysql_error());
mysql_select_db(“contacts”) or die(“can’t select to DB: “.mysql_error());
if($_SERVER[‘REQUEST_METHOD’]==”POST”){

$name = $_POST[‘name’];
$email = $_POST[‘email’];
$memo = $_POST[‘memo’];

$error = array();

//エラー処理

if (!filter_var($email,FILTER_VALIDATE_EMAIL)) {
$error[‘email’] = ‘メールアドレスが正しくありません’;
}

if ($email == ”) {
$error[‘email’] = ‘メールアドレスが入力されていません’;
}
if ($memo == ”) {
$error[‘memo’] = ‘内容が入っていません’;
}

//エラーがなかった場合

if (empty($error)) {
//update
$q = sprintf(“update entries set name=’%s’, email=’%s’, memo=’%s’, modified=now() where id=%d”,
mysql_real_escape_string($name), mysql_real_escape_string($email), mysql_real_escape_string($name), mysql_real_escape_string($id));
$rs = mysql_query($q);

//データ一覧ページに飛ぶ
header(“Location: http://127.0.0.1/contacts/admin/”);
}
} else {
//そのまま表示された時

$q = “select * from entries where id = “.mysql_real_escape_string($id);
$rs = mysql_query($q);
$row = mysql_fetch_assoc($rs);

$name = $row[‘name’];
$email = $row[‘email’];
$memo = $row[‘memo’];
}
?>
<!DOCTYPE html>
<html lang=”ja”>
<head>
<meta charset=”UTF-8″>
<title>データの編集</title>
</head>
<body>
<h1>データの編集</h1>
<p>こちらからどうぞ!</p>
<form method=”post” action=””>
<p>お名前</p>
<input type=”text” name=”name” value=”<?php echo htmlspecialchars($name); ?>”>
<p>メールアドレス</p>
<input type=”text” name=”email” value=”<?php echo htmlspecialchars($email); ?>”>
<?php if ($error[‘email’]) echo $error[‘email’]; ?>
<p>内容</p>
<textarea name=”memo” cols=”40″ rows=”5″><?php echo htmlspecialchars($memo); ?></textarea>
<?php if ($error[‘memo’]) echo $error[‘memo’]; ?>

<p><input type=”submit” value=”更新”></p>
</form>
</body>
</html>

//削除画面 admin/delete.php

<?php

$id = $_POST[‘id’];
//DB接続
mysql_connect(“localhost”, “dbuser@localhost”, “****”) or die(“can’t connect to DB: “.mysql_error());
mysql_select_db(“contacts”) or die(“can’t select to DB: “.mysql_error());

//データを削除
$rs = mysql_query(“delete from entries where id = “.mysql_real_escape_string($id));

?dot_install