PHPプログラミング初心者入門講座 http://php5.seesaa.net/ PHPのインストール、mysql、関数、スクリプト、メール送信、勉強の仕方、上達のコツなどをズバリ解説! ja http://php5.seesaa.net/article/445721768.html PHP言語が動くレンタルサーバーについて。 PHP言語が動くレンタルサーバーについていくつか取り上げてみます。PHPで書いたプログラムを動かすには、普通はWebサーバーが必要です。*PHPはコマンドプロンプトから実行できるプログラムもあります。例えば、ローカルのパソコン内でPHPを動かすには、開発環境を整える必要があります。当PHP入門講座では、phpdevで開発環境を一括インストールして説明してきました。他にもXAMPP(ザンプ)などが有名なPHP開発環境です。ローカルで動かすだけなら、phpdevやXAMPPで十分.. PHPが動くサーバー php入門 2017-01-09T00:10:02+09:00 PHP言語が動くレンタルサーバーについていくつか取り上げてみます。

PHPで書いたプログラムを動かすには、普通はWebサーバーが必要です。

*PHPはコマンドプロンプトから実行できるプログラムもあります。

例えば、ローカルのパソコン内でPHPを動かすには、開発環境を整える必要があります。

当PHP入門講座では、phpdevで開発環境を一括インストールして説明してきました。

他にもXAMPP(ザンプ)などが有名なPHP開発環境です。

ローカルで動かすだけなら、phpdevやXAMPPで十分です。

でもせっかくPHPプログラミングを学び、何かWebアプリを作ったら、

「誰かに見てもらいたい」、「使ってもらいたい」というのが人情ですよねw

インターネットの世界に向けて発信するには、
独自にWebサーバーを立ち上げるか、
レンタルサーバーを借りて公開するということになります。

自分でサーバーを立ち上げるのは、プログラミング初心者にはハードルが高いので、
ほとんどの人が、レンタルサーバーを検討すると思います。

レンタルサーバーなら、作ったPHPプログラムをアップロードするだけで、簡単に実行できますから。

PHPが動くレンタルサーバーには、無料と有料があります。

しかし、条件を満たせる無料レンタルサーバーは数少ないのが現状です。
・プログラミング言語のPHPが動く
・データベースのMySQLが使える
・無料である
・できれば商用利用可能

あったとしても広告が入ることがほとんどです。

例えばこれ
・TOY PARK
http://www.toypark.in/

広告が入りますが、十分に条件を満たしています。

有料のレンタルサーバーだと、選択肢が一気に広がります。

でも安いものだと、絞られてきます。

・ロリポップ!
https://lolipop.jp/

データベースが使える「ライト」で月額250円

・さくらのレンタルサーバ
http://www.sakura.ne.jp/

「ライト」は使えるデータベースがSQLiteになりますが、
月額換算だと129円

「スタンダード」はMySQLが複数利用でき、月額515円

私的には、格安のレンタルサーバーの中では、
ロリポップ!が一番コストパフォーマンスが良いかなと思います。

プログラミング初心者におすすめです。

レンタルサーバーは高機能になるほど月額のコストが上昇するので、
やりたい事が何なのか?といった目的に合わせて選択すると良いでしょう。

]]>
http://php5.seesaa.net/article/432326730.html PHPプログラミングを学習する時のバージョンについて。 PHPはプログラミング言語ですが、バージョンは、いくつかの種類が公開されています。ちなみに2015年12月には、PHP7がリリースされました。最新版のPHPは、プログラムの修正、セキュリティー向上、性能改善などのメリットがあります。本格的に実践でPHPを利用するのでしたら、最新版をおすすめします。しかしプログラミング初心者が、PHPを当無料講座で学習する時は、4系のバージョンを使用してください。当講座では、PHPの学習環境を簡単に構築するため、「phpdev423.exe」と.. PHPのバージョンについて php入門 2016-01-09T11:57:18+09:00 PHPはプログラミング言語ですが、バージョンは、いくつかの種類が公開されています。

ちなみに2015年12月には、PHP7がリリースされました。

最新版のPHPは、プログラムの修正、セキュリティー向上、性能改善などのメリットがあります。

本格的に実践でPHPを利用するのでしたら、最新版をおすすめします。

しかしプログラミング初心者が、PHPを当無料講座で学習する時は、
4系のバージョンを使用してください。

当講座では、PHPの学習環境を簡単に構築するため、
「phpdev423.exe」というソフトウェアを使っています。
phpdev423.exeの入手はこちら

これにより、プログラミング言語のPHP、データベースのMySQL、WebサーバーのApacheが一括でインストールされ、すぐに使えるようになります。

プログラミング初心者にとっては、最も簡単な方法だと考え、採用しました。

ただし、phpdev423.exeによってインストールされるのは、PHP 4.2.3とMySQL 4.0.0です。

ということで、当講座に掲載しているPHPプログラムや画像は、
そのバージョンで作ってあります。

バージョンが同じなら、学習する時にプログラムも図もそのまま使えます。

すると学ぶ時の手順がまったく同じになります。

また、PHPはバージョンにより使える関数が異なることがあります。

新しく追加されたり、削除されたり。

もし使える関数が変わると、プログラムも変える必要があります。

だからプログラミング初心者は、PHPのバージョンを揃えていただきたいのです。

ps:
今後はより良い環境づくりを模索します。
例えばXAMPPなどを使うとか。

しかし、ここまでの講座内容はそのままにしておきます。
ご了承ください。

]]>
http://php5.seesaa.net/article/410595245.html プログラミングでPHP言語を習得したら出来るようになること。 PHP言語を習得すると、プログラミングでいろんなことが出来るようになります。PHP言語は、主にWebサーバー上で動作するプログラムを作るのに使われます。*実はPHPはRubyのように、コマンドラインからでも利用できます。自分自身でサーバーを構築する場合は自由自在なので、もちろんPHPが使えますが、主要なレンタルサーバーでは、ほとんどがPHPに対応しています。また多くのレンタルサーバーでは、データベースとしてMySQLが利用できます。PHP言語とMySQLを組み合わせれば、可能.. PHP言語で出来ること php入門 2014-12-13T22:04:44+09:00 PHP言語を習得すると、プログラミングでいろんなことが出来るようになります。

PHP言語は、主にWebサーバー上で動作するプログラムを作るのに使われます。

*実はPHPはRubyのように、コマンドラインからでも利用できます。

自分自身でサーバーを構築する場合は自由自在なので、

もちろんPHPが使えますが、

主要なレンタルサーバーでは、ほとんどがPHPに対応しています。

また多くのレンタルサーバーでは、データベースとしてMySQLが利用できます。

PHP言語とMySQLを組み合わせれば、可能性は無限に広がります。

PHPは、動的なWebページを作成したり、Webアプリケーションを作成するのに向いています。

動的なWebページというのは、何かの条件(例えば日付や時刻など)で、表示する内容が変化させられるものです。

Webアプリケーションとは、ウェブサーバーを利用したアプリケーションソフト全般のことで、いろいろあります。

例えばショッピングサイトやブログをはじめ、会社で使われる業務システムも作れます。

開発効率、コスト、セキュリティー面から、PHPが最適とは限りませんが、いろいろできるわけです。

小さなシステムを簡単に作れるという面では、PHPは特に向いています。

またPHP言語は、比較的、プログラミング初心者でも理解しやすいので、入門用としても適しています。

PHPを使うと、HTMLを動的に変化させられるのはもちろん、

JavaScriptのような他のプログラミング言語を、HTMLの中に書き出すこともできます。

JavaScriptは、Webアプリで画面操作を便利にするなど、補助的な機能をプラスしたい時に便利です。

Ajaxなどの中核の技術として、再注目されています。

PHPのようなサーバーサイドで動作するプログラミング言語と、

Webブラウザー上で動作するJavaScriptを組み合わせることで、

より使いやすいWebアプリケーションが構築できるわけです。

アイデア次第で、いくらでも可能性が広がりますよ。

プログラミング言語のPHP、javaScriptと、データベースのMySQLを組み合わせて、動的にHTMLを書き換えると、こんなことができます。

全国の特産品検索

どうですか?ちょっと面白くないですか?

このようなWebアプリケーションを作るには、別途WebAPIの知識が必要ですが、

「こんなことができるんだー」、「私も何か作ってみたくなった!」と、

プログラミングを学習するきっかけになれば幸いです。

]]>
http://php5.seesaa.net/article/65450573.html PHP 正規表現を使い検索機能を改善する方法。 今回はユーザーが検索用のテキストボックスに入力した「予想外の空白」を取り除き、SQL文を作成するためのキーワードを取り出す機能を search.php に組み込みます。前回 test.php で機能はテスト済みですから、変更は1行だけです。 PHP は他のプログラミング言語と同様に正規表現が使えるので、複雑な処理も簡単に書くことができます。同様な処理をプログラムで書くと結構長いソースコードになりますが、正規表現ならたった1行です。【1】前回コピーした sample109 フォ.. Step12・検索機能を改善する php入門 2007-11-09T11:34:41+09:00
前回 test.php で機能はテスト済みですから、変更は1行だけです。 PHP は他のプログラミング言語と同様に正規表現が使えるので、複雑な処理も簡単に書くことができます。

同様な処理をプログラムで書くと結構長いソースコードになりますが、正規表現ならたった1行です。


【1】前回コピーした sample109 フォルダをそのまま使います。

php-268.gif


【2】今回は search.php の1行を変更するだけです。

php-266.gif

・他のファイルは sample108 と同じものなので、ソースコードは省略します。

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample109
ファイル名 search.php

<?php
  //ファイルを読み込み
  require_once("SampleDB050.php");

  //データを取得する
  $searchSelect = $_POST['searchSelect'];
  $keyword = $_POST['keyword'];
  $keyword = ereg_replace("[  ]+", " ", $keyword);
  $keyword = trim($keyword);
  

  //検索キーワード未入力時
  if(empty($keyword)){
    print "<html>";
    print "<head><title>未入力</title></head>";
    print "<body>";
    print "検索キーワードが入力されていません。";
    print "<p><a href=\"select.php\" target=\"_self\">全件表示へ</a><p>";
    print "</body>";
    print "</html>";
    exit;
  }

  //抽出条件を組み立てる
  $array = explode(" ", $keyword);
  $cnt = count($array);
  $where = "WHERE ";

  for($i=0; $i < $cnt; $i++){
    $where.= "PREF_NAME LIKE '%".$array[$i]."%'";
    if($i < $cnt-1){
      $where .=" ".$searchSelect." ";
    }
  }

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture ".$where;
  $sql .= " ORDER BY PREF_CD";
  $result = executeQuery($sql);
  print $sql;
  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>検索結果</title>
    <script type="text/javascript" src="select.js"></script>
  </head>
  <body>
    <h3>検索結果</h3>

    <form name="form2" action="search.php" method="post">
      <input type="text" name="keyword" size="25" value="<?= $keyword ?>">
      <input type="submit" name="search" value="検索"><br />
      <input type="radio" checked name="searchSelect" value="AND">AND 
      <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR
    </form>

    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form name="form1" action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd" id="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="insert" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
    <p><a href="select.php" target="_self">全件表示へ</a><p>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample109/select.php と入力し、実行します。


【5】全件表示(select.php)の画面が表示されました。

php-261.gif


【6】まずは普通に操作します。キーワードをスペースで区切り「山 岡」と入力し、「OR」を選択して「検索」ボタンをクリックします。

php-262.gif


【7】検索結果(search.php)の画面が表示されました。「山」または「 岡」を含む都道府県の一覧が表示されています。

php-263.gif

SQL文を見ると抽出条件が OR でつながっています。ORはどちらか一つのキーワードが含まれていれば表示されます。


【8】次はわざと間違った操作をします。キーワードをスペースで区切り「  山      岡   」と入力し、「OR」を選択して「検索」ボタンをクリックします。

php-264.gif

*スペースは半角と全角を混ぜて、複数続けて入力してください。


【9】検索結果(search.php)の画面が表示されました。「山」または「 岡」を含む都道府県の一覧が正常に表示されています。

php-265.gif

*テキストボックスのキーワードも正しく修正されています。


【10】複数の空白を含めて「AND」で検索したときも、正常に表示されることを確認してください。

php-267.gif


【11】検索するキーワードや空白など、条件をいろいろ変えて動作を確認してください。


【解説】

■select.php

(1)今回の変更は1行だけです。

$keyword = str_replace(" ", " ", $keyword);

$keyword = ereg_replace("[  ]+", " ", $keyword);

正規表現を使い「半角か全角の空白が1回以上繰り返す場合」は「半角空白1つ」に置換しています。

これでユーザーによる予想外の空白入力にも対応できるようになりました。


【ワンポイント】

正規表現の部分を工夫することで、「/」「/」や「-」「−」などでもキーワードを区切ることができるようになります。

$keyword = ereg_replace("[  /\/−\-]+", " ", $keyword);

特殊な意味を持つ文字は「\」でエスケープします。「\」はWindowsではエンマークのことです。最初か最後に置かないと動かない文字もありますので注意してください。

正規表現は強力ですので、メールアドレスや電話番号に適した値かチェックすることもできます。正規表現を覚えると文字列を扱うプログラムの応用範囲がグッと広がりますので、ぜひ挑戦してみてください。


]]>
http://php5.seesaa.net/article/65310934.html PHP 検索キーワードを正規表現で置換する方法。 前回までに作成したPHPプログラムの課題は、ユーザーが検索用のテキストボックスにキーワードを入力するときに、以下の条件で不具合が起こることです。・空白を2つ以上続けて入力した・キーワードの先頭および末尾に空白を入力したプログラムの中で検索ボックスに入力されたキーワードを、半角スペースで区切って取り出しているので、空白が複数続くと空白自体がキーワードとなります。そうするとSQL文で「PREF_NAME LIKE '%%'」となるため、「OR」条件のときに全てのレコードが抽出され.. Step11・正規表現で置換する php入門 2007-11-08T17:45:16+09:00 PHPプログラムの課題は、ユーザーが検索用のテキストボックスにキーワードを入力するときに、以下の条件で不具合が起こることです。

・空白を2つ以上続けて入力した
・キーワードの先頭および末尾に空白を入力した

プログラムの中で検索ボックスに入力されたキーワードを、半角スペースで区切って取り出しているので、空白が複数続くと空白自体がキーワードとなります。そうするとSQL文で「PREF_NAME LIKE '%%'」となるため、「OR」条件のときに全てのレコードが抽出されてしまいます。

php-260.gif

「山」と「岡」の間、「岡」の後ろに複数の空白があるので全件表示されていますね。

これを防ぐには正規表現を使い、1つ目の空白だけ残し2つ以上の空白を除くようにプログラムすると解決できます。

正規表現は強力ですが奥が深く、正規表現だけで1冊の本になるほどです。そのため検索機能を実現するのに必要なことに限定して解説します。

またいきなり都道府県マスターのプログラムに組み込むと難しく感じますので、今回は文字列を分割するための、最も基本的な部分だけを抜き出してプログラムを書きました。

$keywordという変数に文字列を代入していますが、これを検索ボックスに入力されたキーワードだと考えてください。


【1】sample108 フォルダをコピーして sample109 フォルダを作成します。

php-252.gif


【2】今回は以下のようなファイルの構成になります。

php-253.gif

・test.phpを新規に作成します。
・search.phpは次回に変更しますので、今回はそのままでかまいません。
・他のファイルは前回の sample108 と同じものなので、ソースコードは省略します。

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample109
ファイル名 test.php

<html>
  <head>
    <title>テスト</title>
  </head>
  <body>

    <?php
      $keyword = "  あいうえお    かきくけこ さしすせそ   ";
      print "加工前:".$keyword."<br />\n";
      $keyword = ereg_replace("[  ]+", " ", $keyword);
      print "置換後:".$keyword."<br />\n";
      $keyword = trim($keyword);
      print "trim有 :".$keyword."<br />\n";

      print "<br />\n";

      $array = explode(" ", $keyword);
      print "要素数:".count($array)."<br />\n";
      print_r($array);

    ?>

  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample109/test.php と入力し、実行します。


【5】test.php の画面が表示されました。

php-254.gif


【6】分かりやすいように、マウスで以下の部分を選択し反転させます。

php-255.gif

・加工前は文字列中に半角と全角の空白が複数入っていて、文字列の先頭および末尾にも空白が入っています。

・置換後は「複数の半角と全角の空白」を「1つの半角空白に置換」した結果です。しかしよく見ると文字列の先頭および末尾にまだ空白が残っています。

・trim有は文字列の先頭および末尾にある空白が除かれた結果です。置換後と比べると少しだけ左寄りになっていますね。

・要素数は半角空白で区切って配列に代入された文字列の数です。

・最後に配列の中身を出力しています。0からはじまるキーと要素を表す形式で表示しています。


もし trim() で文字列の前後の空白を除かなかったら、以下のような結果になります。

php-256.gif

この動作を確認するには、trimのある行を // でコメントにしてください。
//$keyword = trim($keyword);

trimが無いと最初と最後の空白まで区切ってしまうため、配列に空白が入ります。これをそのままにしておくと「PREF_NAME LIKE '%%'」となる原因になります。


【7】$keyword に代入する文字列に空白を混ぜて、思ったように文字列が区切られるか、動作をテストしてください。


【解説】

半角と全角の空白の違いが確認しにくいので、TeraPadの画面もご覧ください。

(1)$keyword にわざと半角や全角の空白を複数入れています。
$keyword = "  あいうえお    かきくけこ さしすせそ   ";

php-257.gif

*この代入する文字列が、検索用のテキストボックスに入力されたキーワードだとイメージしてください。文字列をいろいろ変えることでテストできます。


(2)半角か全角の空白が1回以上繰り返す場合は、「半角空白1つ」に置換しています。
$keyword = ereg_replace("[  ]+", " ", $keyword);

php-258.gif

ereg_replace()関数は正規表現による置換を行ないます。
ereg_replace(正規表現, 置換文字列, 対象文字列);

[  ] 半角か全角の空白 *[ ]カッコ内の文字のいずれかに該当
+ 1回以上繰り返す
" " 半角空白1つ

この書き方だと、もともと半角空白1つの場合でも置換されるので無駄になりますが、表現が簡単なのでそうしました。


(3)文字列の先頭および末尾にある空白を取り除いています。
$keyword = trim($keyword);

ただしtrim()は半角の空白が対象で、全角空白は削除の対象外なので気をつけなければなりません。そのためあらかじめ ereg_replace()関数で全角を半角に置換しています。


(4)文字列を半角空白で区切り、配列に代入しています。
$array = explode(" ", $keyword);

explode()関数は、文字列を指定した文字により分割し、結果を配列で返します。


(5)配列の要素数を数え、画面に表示しています。
print "要素数:".count($array)."<br />\n";

count()関数は変数に含まれる要素数を数えます。


(6)配列の中身を解りやすく出力しています。
print_r($array);

print_r()を使うと、キーと要素を表す形式で配列の値が表示されます。


【ワンポイント】

他にも split()関数を使う方法もあります。この関数は正規表現により文字列を分割し、配列に格納します。


*各関数についての詳細はPHPサイトでマニュアルをご覧ください。
http://www.php.net/


あとは今回のプログラムを search.php に組み込むだけです。といっても1行の変更で済みます。それでは次回をお楽しみに。


]]>
http://php5.seesaa.net/article/64932127.html PHP レコードを複合語検索する方法。 前回までのPHPプログラムは、単一キーワードによる検索にしか対応していませんでしたが、今回は以下の点を改良してみましょう。・複数のキーワードで検索できるようにする・AND OR 条件を切り替えて検索できるようにするキーワードはスペースで区切ることにします。スペースは全角でも半角でもかまいません。AND OR の選択にはラジオボタンを使います。実は複合語検索できるようにするには、いろんな条件を想定しなければならないため複雑ですが、今回は最も基本的な機能に絞って説明します。基本を.. Step10・複合語検索する php入門 2007-11-06T18:20:14+09:00 PHPプログラムは、単一キーワードによる検索にしか対応していませんでしたが、今回は以下の点を改良してみましょう。

・複数のキーワードで検索できるようにする
・AND OR 条件を切り替えて検索できるようにする

キーワードはスペースで区切ることにします。スペースは全角でも半角でもかまいません。AND OR の選択にはラジオボタンを使います。

実は複合語検索できるようにするには、いろんな条件を想定しなければならないため複雑ですが、今回は最も基本的な機能に絞って説明します。基本をつかめばあとは少しずつ改良できます。


【1】sample107 フォルダをコピーして sample108 フォルダを作成します。

php-241.gif


【2】今回は以下のようなファイルの構成になります。

php-242.gif

・select.php、search.phpは変更があります。
・他のファイルは前回の sample107 と同じものなので、ソースコードは省略します。

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample108
ファイル名 select.php

<?php
  //ファイルを読み込み
  require_once("SampleDB050.php");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture ORDER BY PREF_CD";
  $result = executeQuery($sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
    <script type="text/javascript" src="select.js"></script>
  </head>
  <body>
    <h3>全件表示</h3>

    <form name="form2" action="search.php" method="post">
      <input type="text" name="keyword" size="25">
      <input type="submit" name="search" value="検索"><br />
      <input type="radio" checked name="searchSelect" value="AND">AND 
      <input type="radio" name="searchSelect" value="OR">OR
    </form>

    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form name="form1" action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd" id="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="insert" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
  </body>
</html>


保存先 C:\phpdev\www\test\sample108
ファイル名 search.php

<?php
  //ファイルを読み込み
  require_once("SampleDB050.php");

  //データを取得する
  $searchSelect = $_POST['searchSelect'];
  $keyword = $_POST['keyword'];
  $keyword = str_replace(" ", " ", $keyword);
  $keyword = trim($keyword);
  

  //検索キーワード未入力時
  if(empty($keyword)){
    print "<html>";
    print "<head><title>未入力</title></head>";
    print "<body>";
    print "検索キーワードが入力されていません。";
    print "<p><a href=\"select.php\" target=\"_self\">全件表示へ</a><p>";
    print "</body>";
    print "</html>";
    exit;
  }

  //抽出条件を組み立てる
  $array = explode(" ", $keyword);
  $cnt = count($array);
  $where = "WHERE ";

  for($i=0; $i < $cnt; $i++){
    $where.= "PREF_NAME LIKE '%".$array[$i]."%'";
    if($i < $cnt-1){
      $where .=" ".$searchSelect." ";
    }
  }

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture ".$where;
  $sql .= " ORDER BY PREF_CD";
  $result = executeQuery($sql);
  print $sql;
  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>検索結果</title>
    <script type="text/javascript" src="select.js"></script>
  </head>
  <body>
    <h3>検索結果</h3>

    <form name="form2" action="search.php" method="post">
      <input type="text" name="keyword" size="25" value="<?= $keyword ?>">
      <input type="submit" name="search" value="検索"><br />
      <input type="radio" checked name="searchSelect" value="AND">AND 
      <input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR
    </form>

    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form name="form1" action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd" id="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="insert" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
    <p><a href="select.php" target="_self">全件表示へ</a><p>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample108/select.php と入力し、実行します。


【5】全件表示(select.php)の画面が表示されました。検索用のテキストボックスの下に、ANDとORのラジオボタンが表示されています。

php-243.gif


【6】テキストボックスに「山」と入力し、「AND」を選択して「検索」ボタンをクリックします。

php-244.gif


【7】検索結果(search.php)の画面が表示されました。「山」を含む都道府県の一覧が表示されています。

php-245.gif

・確認のためプログラムで組み立てたSQL文を表示しています。
・検索キーワードが1つなので、普通のあいまい検索になっています。
・テキストボックスには select.php で入力したキーワードが表示されています。


【8】次はキーワードをスペースで区切り「山 岡」と入力し、「AND」を選択して「検索」ボタンをクリックします。

php-246.gif

*スペースは半角でも全角でもかまいません。ただしスペースを2つ以上続けないでください。


【9】検索結果(search.php)の画面が表示されました。「山」かつ「 岡」を含む都道府県の一覧が表示されています。

php-247.gif

SQL文を見ると抽出条件が AND でつながっています。AND は両方のキーワードが含まれていなければならないので、岡山県しかありません。


【10】次はキーワードをスペースで区切り「山 岡」と入力し、「OR」を選択して「検索」ボタンをクリックします。

php-248.gif


【11】検索結果(search.php)の画面が表示されました。「山」または「岡」を含む都道府県の一覧が表示されています。

php-249.gif

SQL文を見ると抽出条件が OR でつながっています。ORはどちらか一つのキーワードが含まれていればよいので、表示件数は多くなります。


【12】次はキーワードをスペースで区切り「児 島 鹿」と入力し、「OR」を選択して「検索」ボタンをクリックします。

php-251.gif


【13】検索結果(search.php)の画面が表示されました。「児」または「島」または「鹿」を含む都道府県の一覧が表示されています。

php-250.gif

SQL文の OR が2つになり、3語以上のキーワードにも対応していることが確認できました。

都道府県名は多くても4文字なので、AND検索で多くのキーワードを使うことは無いと思いますが、OR検索では役立ちます。


【解説】

■select.php

(1)検索用のテキストボックスのサイズを少し大きくし、ANDとORのラジオボタンを追加しました。デフォルトでは AND が選択(checked)されるようにしています。

<form name="form2" action="search.php" method="post">
  <input type="text" name="keyword" size="25">
  <input type="submit" name="search" value="検索"><br />
  <input type="radio" checked name="searchSelect" value="AND">AND 
  <input type="radio" name="searchSelect" value="OR">OR
</form>


■search.php

(1)ラジオボタンのデータを取得する部分です。AND か OR の文字列が代入されます。

$searchSelect = $_POST['searchSelect'];


(2)キーワードのデータを取得する部分です。

$keyword = $_POST['keyword'];
$keyword = str_replace(" ", " ", $keyword);
$keyword = trim($keyword);

キーワードに全角のスペースが含まれている場合は、str_replace()関数で半角スペースに置換して、trim()関数で文字列の前後の空白を除いています。

これはキーワードの前後にスペースが入っていた場合の対策です。またキーワードを半角スペースで区切る準備も兼ねています。

例えば文字列が「 A BC DEF 」の場合、trim()関数で除けるのは「Aの前」と「Fの後」の空白だけです。文字列内の空白は除けません。


(3)キーワードが未入力の場合はメッセージを表示して、「exit;」で現在のスクリプトを終了しています。exitより下に書かれているものは表示されません。htmlやbodyのタグも表示されないので、最低限のHTMLタグは print で出力しています。

if(empty($keyword)){
  print "<html>";
  print "<head><title>未入力</title></head>";
  print "<body>";
  print "検索キーワードが入力されていません。";
  print "<p><a href=\"select.php\" target=\"_self\">全件表示へ</a><p>";
  print "</body>";
  print "</html>";
  exit;
}


(4)複数の検索キーワードにも対応できるように、抽出条件を組み立てる部分を変更しました。

検索キーワードを「半角スペース」で区切り、配列に格納する
$array = explode(" ", $keyword);

キーワード数(配列の要素数)を数える
$cnt = count($array);

変数に抽出条件の文字列を代入する
$where = "WHERE ";

for文でキーワード数の回数だけ繰り返しています。if文で最後のキーワードになるまでは AND か OR でつなぎます。

for($i=0; $i < $cnt; $i++){
  $where.= "PREF_NAME LIKE '%".$array[$i]."%'";
  if($i < $cnt-1){
    $where .=" ".$searchSelect." ";
  }
}


(5)前の画面でテキストボックスに入力した値を、デフォルトで表示しています。

<input type="text" name="keyword" size="25" value="<?= $keyword ?>">


(6)前の画面でORラジオボタンが選択されていた場合は、選択(checked)します。

<input type="radio" <?= ($searchSelect == "OR")? "checked" : "" ?> name="searchSelect" value="OR">OR

デフォルトでは AND が選択(checked)されるようになっているので、ORの場合だけ切り替えればよいわけです。


【ワンポイント】

検索ボックスに入力されたキーワードを、半角スペースで区切って取り出しているので、文字列内に半角スペースが2つ以上続くと空白がキーワードとなります。そうするとSQL文で「PREF_NAME LIKE '%%'」となるため、全てのレコードが抽出されてしまいます。

これを防ぐには正規表現を使い、1つ目のスペースだけ残し、2つ以上のスペースを除くようにプログラムすると解決できます。


]]>
http://php5.seesaa.net/article/63908055.html PHP レコードを検索する方法。 データベースを使うメリットに、大量のデータから目的のものを簡単に検索できることがあります。レコード数が数千、数万になるテーブルを扱う時には検索機能が欠かせません。都道府県はそれほど多くないので、わざわざ検索するまでもありませんが、PHPで検索するプログラムの基本はデータが増えても一緒です。そこで今回は都道府県名から「あいまい検索」を行なうプログラムをPHPで作成します。通常検索エンジンでは、スペースで区切って複合語検索できます。しかしプログラムが複雑になるので、とりあえず一番.. Step9・レコードを検索する php入門 2007-11-01T15:57:07+09:00
都道府県はそれほど多くないので、わざわざ検索するまでもありませんが、PHPで検索するプログラムの基本はデータが増えても一緒です。

そこで今回は都道府県名から「あいまい検索」を行なうプログラムをPHPで作成します。通常検索エンジンでは、スペースで区切って複合語検索できます。しかしプログラムが複雑になるので、とりあえず一番簡単な「1単語」による検索が出来るようにします。

○長
○長崎
×長 崎
×山 海

今回は select.php と search.php のプログラムを行き来します。この2つは画面がほとんど同じなので、ブラウザのアドレスを見て、今どのプログラムが処理しているのか考えながら進めてください。


【1】sample106 フォルダをコピーして sample107 フォルダを作成します。

php-231.gif


【2】今回は以下のようなファイルの構成になります。

php-230.gif

・select.php は少しだけ変更があります。
・search.php は新規に作成します。
・SampleDB050.php、update.php、delete.php、insert.php、update2.php、delete2.php、insert2.php、select.js は前回の sample106 と同じものなのでソースコードは省略します。

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample107
ファイル名 select.php

<?php
  //ファイルを読み込み
  require_once("SampleDB050.php");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture ORDER BY PREF_CD";
  $result = executeQuery($sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
    <script type="text/javascript" src="select.js"></script>
  </head>
  <body>
    <h3>全件表示</h3>

    <form name="form2" action="search.php" method="post">
      <input type="text" name="keyword" size="20">
      <input type="submit" name="search" value="検索">
    </form>

    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form name="form1" action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd" id="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="insert" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
  </body>
</html>


保存先 C:\phpdev\www\test\sample107
ファイル名 search.php

<?php
  //ファイルを読み込み
  require_once("SampleDB050.php");

  //データを取得する
  $keyword = $_POST['keyword'];

  //抽出条件を組み立てる
  if(!empty($keyword)){
    $where = "WHERE ";
    $where.= "PREF_NAME LIKE '%".$keyword."%'";
  }else{
    print "<html>";
    print "<head><title>未入力</title></head>";
    print "<body>";
    print "検索キーワードが入力されていません。";
    print "<p><a href=\"select.php\" target=\"_self\">全件表示へ</a><p>";
    print "</body>";
    print "</html>";
    exit;
  }

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture ".$where;
  $sql .= " ORDER BY PREF_CD";
  $result = executeQuery($sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>検索結果</title>
    <script type="text/javascript" src="select.js"></script>
  </head>
  <body>
    <h3>検索結果</h3>

    <form name="form2" action="search.php" method="post">
      <input type="text" name="keyword" size="20">
      <input type="submit" name="search" value="検索">
    </form>

    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form name="form1" action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd" id="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="insert" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
    <p><a href="select.php" target="_self">全件表示へ</a><p>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample107/select.php と入力し、実行します。


【5】全件表示(select.php)の画面が表示されました。検索用のテキストボックスとボタンが表示されています。

php-232.gif


【6】テキストボックスに「山」と入力し「検索」ボタンをクリックします。

php-233.gif

*二つ以上の単語には対応していません。


【7】検索結果(search.php)の画面が表示されました。「山」を含む都道府県の一覧が表示されています。

php-234.gif

*select.php → search.php の流れ


【8】次は「島」と入力し「検索」ボタンをクリックします。

php-235.gif


【9】検索結果(search.php)の画面が表示されました。「島」を含む都道府県の一覧が表示されています。

php-236.gif

*search.php → search.php の流れ
自分自身のプログラムを呼び出している点に注目してください。


【10】「全件表示へ」リンクをクリックします。

php-237.gif


【11】全件表示(select.php)の画面が表示されたら、テキストボックスは空のまま「検索」ボタンをクリックします。

php-238.gif


【12】検索キーワードが未入力だったので、メッセージが表示されました。「全件表示へ」リンクをクリックします。

php-239.gif


【13】あとはいろんなキーワードで検索してみたり、検索結果からも追加、更新、削除ができることを確認してください。


【解説】

select.php と search.php のソースコードはほとんど同じです。SQL文を組み立てている部分が違うだけです。

select.php の検索ボタンをクリックすると、search.php が呼び出されますが、search.php の検索ボタンをクリックすると、search.php 自身が呼び出されている点がポイントです。


■共通部分

(1)検索用のテキストボックスとボタンを配置するフォームを作りました。

<form name="form2" action="search.php" method="post">
  <input type="text" name="keyword" size="20">
  <input type="submit" name="search" value="検索">
</form>


(2)追加ボタンの名前を「insert」に変更しました。この変更によるプログラムへの影響はありませんが、名前をちゃんと付けておいたほうが後々改良しやすいためです。

<form name="form1" action="insert.php" method="post">
  省略
    <input type="submit" name="insert" value="追加">
  省略
</form>


■search.php

(1)検索キーワードを取得している部分です。

$keyword = $_POST['keyword'];


(2)抽出条件を組み立てている部分です。

if(!empty($keyword)){
  $where = "WHERE ";
  $where.= "PREF_NAME LIKE '%".$keyword."%'";
}else{
  print "<html>";
  print "<head><title>未入力</title></head>";
  print "<body>";
  print "検索キーワードが入力されていません。";
  print "<p><a href=\"select.php\" target=\"_self\">全件表示へ</a><p>";
  print "</body>";
  print "</html>";
  exit;
}

検索キーワードが入力されていたら(空でなかったら)、抽出条件をあいまい検索で作成して変数に代入しています。

*この部分を改良すると、複合語で検索できるようになります。

未入力の場合はメッセージを表示して、「exit;」で現在のスクリプトを終了しています。exitより下に書かれているものは表示されません。htmlやbodyのタグも表示されないので、最低限のHTMLタグは print で出力しています。


(3)クエリを送信している部分です。抽出条件を付け加えただけです。

$sql = "SELECT * FROM T01Prefecture ".$where;
$sql .= " ORDER BY PREF_CD";
$result = executeQuery($sql);


(4)「全件表示へ」リンクを表示している部分です。

<p><a href="select.php" target="_self">全件表示へ</a><p>


select.php と search.php は共通する部分を関数にまとめたり、1つのphpファイルに統合することもできます。しかし検索の大きな流れをつかむことが一番の目的なので、プログラムがシンプルになるように分けました。


【ワンポイント】

「崎、埼」などの漢字で検索すると、思ったような結果にならない場合があります。

php-240.gif


]]>
http://php5.seesaa.net/article/63473304.html PHP 適正な値が入力されているかチェックする方法。 前回までのPHPプログラムでは、テキストボックスが未入力かどうかはチェックしていたのですが、適正な値かまではチェックしていませんでした。データベース上でPREF_CDはINT(整数型)で定義されているので、文字などを入力してSQL文を実行するとエラーになります。そこで今回はPREF_CDのテキストボックスに入力されたデータが、適切な値かチェックする方法を考えてみましょう。最初からテキストボックスに半角数字以外入力できないようにしておけば、SQL文実行時のエラーを防ぐことができ.. Step8・入力チェックする php入門 2007-10-30T16:52:29+09:00 PHPプログラムでは、テキストボックスが未入力かどうかはチェックしていたのですが、適正な値かまではチェックしていませんでした。

データベース上でPREF_CDはINT(整数型)で定義されているので、文字などを入力してSQL文を実行するとエラーになります。

そこで今回はPREF_CDのテキストボックスに入力されたデータが、適切な値かチェックする方法を考えてみましょう。

最初からテキストボックスに半角数字以外入力できないようにしておけば、SQL文実行時のエラーを防ぐことができます。

*PREF_NAMEは文字列なので、適正な値か判断することが難しいため省きます。


【1】sample105 フォルダをコピーして sample106 フォルダを作成します。

php-220.gif


【2】今回は以下のようなファイルの構成になります。

php-221.gif

・select.php は少しだけ変更があります。
・select.js は新規に作成します。
・SampleDB050.php、update.php、delete.php、insert.php、update2.php、delete2.php、insert2.php は前回の sample105 と同じものなのでソースコードは省略します。

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample106
ファイル名 select.php

<?php
  //ファイルを読み込み
  require_once("SampleDB050.php");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture ORDER BY PREF_CD";
  $result = executeQuery($sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
    <script type="text/javascript" src="select.js"></script>
  </head>
  <body>
    <h3>全件表示</h3>
    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form name="form1" action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd" id="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
  </body>
</html>


保存先 C:\phpdev\www\test\sample106
ファイル名 select.js

var cd;

onload = init;

function init() {
  //初期設定をする関数
  cd = document.getElementById("cd");

  document.form1.onsubmit = function (){return ( dataCheck(cd.value, "PREF_CD") );}

}


function dataCheck(str, name){
  //データをチェックする関数
  if (str.length == 0 || str.match(/[^0-9]/)) {
    alert(name + " は半角数字を入力してください。");
    return false;
  }
  return true;
}



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample106/select.php と入力し、実行します。


【5】全件表示(select.php)の画面が表示されました。

php-222.gif


【6】追加フォームのPREF_CD欄に、わざと「あ」と入力し「追加」ボタンをクリックします。

php-223.gif

適正な値を入力しなかった場合の動作確認です。半角数字でなければ何でもかまいません。
・「123」 全角数字
・「1い2」 文字が混じっている
・「abc」 アルファベット


【7】PREF_CD欄が適切な値ではないため、メッセージが表示されました。「OK」をクリックします。

php-224.gif

*これはクライアント側のJavaScriptによる入力チェックです。


【8】次はPREF_CD欄に半角数字で「99」と入力し、「追加」ボタンをクリックします。

php-225.gif


【9】PREF_CDは大丈夫ですが、PREF_NAMEが未入力なので、メッセージが表示されました。「再入力」リンクをクリックします。

php-226.gif

*これはサーバー側のPHPによる入力チェックです。


【10】次は「99 ハワイ」と適切な値を入力し、「追加」ボタンをクリックします。

php-227.gif


【11】JavaScriptとPHPによる入力チェックを通りました。

php-228.gif


【解説】

■select.php

(1)HTMLのhead部分にJavaScriptを読み込むタグを加えました。

<script type="text/javascript" src="select.js"></script>

(2)フォームに「form1」という名前を付けました。

<form name="form1" action="insert.php" method="post">

(3)テキストボックスに「cd」というidを付けました。

<input type="text" name="cd" id="cd">


■select.js

(1)select.js は PREF_CD について、半角数字以外が入力されないようにチェックしています。PREF_NAME のチェックは行なっていません。

(2)JavaScriptによる入力チェックの仕組みについては、以下のステップで解説していますのでご覧ください。

「Step9・入力された値をPHPでチェックする」
「Step10・入力された値をJavaScriptでチェックする」


今回はPHPのプログラム部分の変更はありません。JavaScriptを使うとサーバー側のPHPに処理が移る前に、クライアント側でチェックすることができます。

未入力の項目などがある場合は、サーバー側に処理が移っても結局エラーになるため、クライアント側でできることはクライアント側で行なったほうが、サーバーの負荷や通信量が減らせます。

ただし全てのブラウザでJavaScriptが同じように動くわけではありません。そのためサーバー側でチェックする場合のメリットもあります。サーバー側で処理すれば、クライアントのブラウザの種類は関係ないからです。


今回のサンプルプログラムはJavaScriptとPHPの両方で処理しています。

insert.phpではPREF_CDとPREF_NAMEの両方をチェックしています。もちろんそのままでかまいません。

if(empty($prefCd) || empty($prefName)){
  省略
}else{
  省略
}

でもPREF_CDはJavaScriptでチェック済みなので、未入力ということはありません。PHPではPREF_NAMEだけチェックすればよいともいえます。

if(empty($prefName)){
  省略
}else{
  省略
}

PREF_NAMEの未入力チェックもJavaScriptで行なえば、PHP側の処理は不要になります。JavaScriptを使うことで、PHPのプログラムが少なくて済むようになるわけです。

JavaScriptとPHPのどちらで行なうかは一長一短があり難しいところなので、ケースバイケースでプログラムしてください。


]]>
http://php5.seesaa.net/article/63400362.html PHP 追加、更新、削除を行なうプログラム。 今回はPHPからデータベースに対して、実際に追加、更新、削除を行なう部分のプログラムを作成します。確認画面のページから送られてきたデータを受け取り、SQL文を組み立てて実行するだけなので、それほど難しくありません。これまでに学んできた知識で十分理解できると思います。データベースの追加、更新、削除ができるようになれば、いろいろ応用ができるので、このあたりからプログラミングが楽しくなってくる頃です。物作りをしている充実感のようなものが味わえます。【1】sample104 フォルダ.. Step7・追加、更新、削除を行なう php入門 2007-10-30T10:38:34+09:00 PHPからデータベースに対して、実際に追加、更新、削除を行なう部分のプログラムを作成します。

確認画面のページから送られてきたデータを受け取り、SQL文を組み立てて実行するだけなので、それほど難しくありません。これまでに学んできた知識で十分理解できると思います。

データベースの追加、更新、削除ができるようになれば、いろいろ応用ができるので、このあたりからプログラミングが楽しくなってくる頃です。物作りをしている充実感のようなものが味わえます。


【1】sample104 フォルダをコピーして sample105 フォルダを作成します。

php-206.gif


【2】今回は以下のようなファイルの構成になります。

php-207.gif

・SampleDB050.php、select.php、update.php、delete.php、insert.php は前回の sample104 と同じものなのでソースコードは省略します。

・update2.php、delete2.php、insert2.php は新規に作成します。

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample105
ファイル名 update2.php

<?php
  //ファイルを読み込む
  require_once("SampleDB050.php");

  //データを取得する
  $prefCd = $_POST['cd'];
  $prefName = $_POST['name'];

  // クエリを送信する
  $sql = "UPDATE T01Prefecture SET PREF_NAME = '".$prefName."' WHERE PREF_CD = ".$prefCd;
  $result = executeQuery($sql);
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>更新</title>
  </head>
  <body>
    <h3>更新</h3>
    <?= $sql ?><br />
    <p><?= $prefName ?> に更新しました。</p>
    <a href="select.php" target="_self">全件表示へ</a>
  </body>
</html>


保存先 C:\phpdev\www\test\sample105
ファイル名 delete2.php

<?php
  //ファイルを読み込む
  require_once("SampleDB050.php");

  //データを取得する
  $prefCd = $_POST['cd'];

  // クエリを送信する
  $sql = "DELETE FROM T01Prefecture WHERE PREF_CD = ".$prefCd;
  $result = executeQuery($sql);
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>削除</title>
  </head>
  <body>
    <h3>削除</h3>
    <?= $sql ?><br />
    <p>PREF_CD: <?= $prefCd ?> を削除しました。</p>
    <a href="select.php" target="_self">全件表示へ</a>
  </body>
</html>


保存先 C:\phpdev\www\test\sample105
ファイル名 insert2.php

<?php
  //ファイルを読み込む
  require_once("SampleDB050.php");

  //データを取得する
  $prefCd = $_POST['cd'];
  $prefName = $_POST['name'];

  // クエリを送信する
  $sql = "INSERT INTO T01Prefecture VALUES(".$prefCd.", '".$prefName."')";
  $result = executeQuery($sql);
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>追加</title>
  </head>
  <body>
    <h3>追加</h3>
    <?= $sql ?>
    <p><?= $prefCd.",".$prefName ?> を追加しました。</p>
    <a href="select.php" target="_self">全件表示へ</a>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample105/select.php と入力し、実行します。


【5】全件表示(select.php)の画面が表示されました。

php-208.gif


【6】一番最後にあるフォームに「99 ハワイ」と入力し、「追加」ボタンをクリックします。

php-192.gif

*数字は必ず半角で入力してください。


【7】追加確認の画面が表示されたら、「追加」ボタンをクリックします。

php-209.gif


【8】レコードが追加されました。「全件表示へ」リンクをクリックします。

php-210.gif

*動作確認のため、SQL文を表示しています。


【9】レコードが追加されていることが確認できます。

php-211.gif


【10】「99 ハワイ」の「更新」リンクをクリックします。

php-212.gif


【11】更新確認の画面が表示されたら、「グアム」に変更してから「更新」ボタンをクリックします。

php-213.gif


【12】レコードが更新されました。「全件表示へ」リンクをクリックします。

php-214.gif


【13】レコードが更新されていることが確認できます。

php-215.gif


【14】「99 グアム」の「削除」リンクをクリックします。

php-216.gif


【15】削除確認の画面が表示されたら、「削除」ボタンをクリックします。

php-217.gif


【16】レコードが削除されました。「全件表示へ」リンクをクリックします。

php-218.gif


【17】レコードが削除されていることが確認できます。

php-219.gif


【18】データをいろいろ入力して、追加、更新、削除を試してください。

データは「Step1・MySQLの準備」の 13〜17 の手順でいつでも復元できるので、安心して操作してください。


【解説】

今回の insert2.php、update2.php、delete2.php はSQL文以外はほとんど同じなのでまとめて説明します。

(1)データベースを使うので、ファイルを読み込んでいます。

require_once("SampleDB050.php");


(2)データを取得する部分です。前のページからはPOSTメソッドで送られています。

$prefCd = $_POST['cd'];
$prefName = $_POST['name'];


(3)SQL文を組み立てている部分です。

$sql = "INSERT INTO T01Prefecture VALUES(".$prefCd.", '".$prefName."')";

$sql = "UPDATE T01Prefecture SET PREF_NAME = '".$prefName."' WHERE PREF_CD = ".$prefCd;

$sql = "DELETE FROM T01Prefecture WHERE PREF_CD = ".$prefCd;

*変数の部分は「" "」の外に出して「.」で連結していますが、これは他のプログラミング言語と同じ書き方にしたいためです。PHPの場合は文字列の中で変数の値を出力する書き方もできます。

SQL文の組み立て方についてはJavaScript初心者入門講座が参考になります。


(4)クエリを送信する部分です。

$result = executeQuery($sql);

今回は戻り値を利用していません。ちなみに追加、更新、削除のSQL文の場合、 $result には成功した場合は TRUE(1) が、失敗した場合は FALSE(0) が代入されています。


(5)確認のため組み立てたSQL文を表示しています。無くてもかまいません。

<?= $sql ?>


(6)「全件表示へ」リンクを表示している部分です。「_self」と指定しているので、同一ウィンドウでページが切り替わります。

<a href="select.php" target="_self">全件表示へ</a>


これでPHPからデータベースを操作する、最も基本的なプログラムができました。フィールド数が増えても基本は同じです。あとは入力されたデータが適正かどうかチェックするような仕組みが必要です。


]]>
http://php5.seesaa.net/article/63299282.html PHP 確認画面を表示する方法。 今回は select.php から渡されたデータをもとに、確認するための画面をPHPで作成します。「更新」はデータを変更する画面が必須です。できれば前のデータをデフォルトで表示し、変更できるようにしたほうが良いでしょう。「追加」と「削除」はいきなりSQL文を実行することもできますが、念のため確認画面を表示することにしました。また検索(表示)、追加、更新、削除ともにデータベースに接続することになりますので、共通する部分を SampleDB050.php ファイルに関数としてまと.. Step6・確認画面を表示する php入門 2007-10-29T20:40:22+09:00 PHPで作成します。

「更新」はデータを変更する画面が必須です。できれば前のデータをデフォルトで表示し、変更できるようにしたほうが良いでしょう。

「追加」と「削除」はいきなりSQL文を実行することもできますが、念のため確認画面を表示することにしました。

また検索(表示)、追加、更新、削除ともにデータベースに接続することになりますので、共通する部分を SampleDB050.php ファイルに関数としてまとめました。


【1】sample103 フォルダをコピーして sample104 フォルダを作成します。

php-197.gif


【2】今回は以下のようなファイルの構成になります。SampleDB050.phpは新規に作成します。

php-198.gif

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample104
ファイル名 SampleDB050.php

<?php
  function executeQuery($sql){
    $url = "localhost";
    $user = "root";
    $pass = "";
    $db = "SampleDB050";

    // MySQLへ接続する
    $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");

    // データベースを選択する
    $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");

    // クエリを送信する
    $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

    // MySQLへの接続を閉じる
    mysql_close($link) or die("MySQL切断に失敗しました。");

    //戻り値
    return($result);
  }
?>


保存先 C:\phpdev\www\test\sample104
ファイル名 select.php

<?php
  //ファイルを読み込み
  require_once("SampleDB050.php");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture ORDER BY PREF_CD";
  $result = executeQuery($sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
  </head>
  <body>
    <h3>全件表示</h3>
    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
  </body>
</html>


保存先 C:\phpdev\www\test\sample104
ファイル名 update.php

<?php
  //ファイルを読み込む
  require_once("SampleDB050.php");

  //データを取得する
  $prefCd = $_GET['cd'];

  // クエリを送信する
  $sql = "SELECT PREF_NAME FROM T01Prefecture WHERE PREF_CD = ".$prefCd;
  $result = executeQuery($sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    $row = mysql_fetch_array($result);
    $prefName = $row["PREF_NAME"];
    $tempHtml = "<input type=\"submit\" name=\"submit\" value=\" 更新 \">";
    $msg = "データを変更後、更新ボタンをクリックしてください。\n";
  }else{
    $tempHtml = "<a href=\"#\" onClick=\"history.back(); return false;\">前の画面へ戻る</a>\n";
    $msg = "データがありません。\n";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>更新確認</title>
  </head>
  <body>
    <h3>更新確認</h3>
    <?= $msg ?>
    <form action="update2.php" method="post">
      <table width = "200" border = "1">
        <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
        <tr>
          <td><?= $prefCd ?></td>
          <td><input type="text" name="name" value="<?= $prefName ?>"></td>
        </tr>
      </table>
      <br />
      <input type="hidden" name="cd" value="<?= $prefCd ?>">
      <?= $tempHtml ?>
    </form>
  </body>
</html>


保存先 C:\phpdev\www\test\sample104
ファイル名 delete.php

<?php
  //ファイルを読み込む
  require_once("SampleDB050.php");

  //データを取得する
  $prefCd = $_GET['cd'];

  // クエリを送信する
  $sql = "SELECT PREF_NAME FROM T01Prefecture WHERE PREF_CD = ".$prefCd;
  $result = executeQuery($sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    $row = mysql_fetch_array($result);
    $prefName = $row["PREF_NAME"];
    $tempHtml = "<input type=\"submit\" name=\"submit\" value=\" 削除 \">";
    $msg = "このデータでよければ、削除ボタンをクリックしてください。\n";
  }else{
    $tempHtml = "<a href=\"#\" onClick=\"history.back(); return false;\">前の画面へ戻る</a>\n";
    $msg = "データがありません。\n";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>削除確認</title>
  </head>
  <body>
    <h3>削除確認</h3>
    <?= $msg ?>
    <form action="delete2.php" method="post">
      <table width = "200" border = "1">
        <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
        <tr><td><?= $prefCd ?></td><td><?= $prefName ?></td></tr>
      </table>
      <br />
      <input type="hidden" name="cd" value="<?= $prefCd ?>">
      <?= $tempHtml ?>
    </form>
  </body>
</html>


保存先 C:\phpdev\www\test\sample104
ファイル名 insert.php

<?php
  //データを取得する
  $prefCd = $_POST['cd'];
  $prefName = $_POST['name'];

  //表示するデータを作成
  if(empty($prefCd) || empty($prefName)){
    $tempHtml = "<a href=\"#\" onClick=\"history.back(); return false;\">再入力</a>\n";
    $msg = "未入力の項目があります。\n";
  }else{
    $tempHtml = "<input type=\"submit\" name=\"submit\" value=\" 追加 \">";
    $msg = "このデータでよければ、追加ボタンをクリックしてください。\n";
  }
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>追加確認</title>
  </head>
  <body>
    <h3>追加確認</h3>
    <?= $msg ?>
    <form action="insert2.php" method="post">
      <table width = "200" border = "1">
        <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
        <tr><td><?= $prefCd ?></td><td><?= $prefName ?></td></tr>
      </table>
      <br />
      <input type="hidden" name="cd" value="<?= $prefCd ?>">
      <input type="hidden" name="name" value="<?= $prefName ?>">
      <?= $tempHtml ?>
    </form>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample104/select.php と入力し、実行します。


【5】select.php の画面が表示されました。

php-199.gif


【6】「1 北海道」の「更新」リンクをクリックします。

php-186.gif


【7】「update.php?cd=1」が表示され、更新確認の画面が表示されました。ボタンはクリックしないでください。

php-200.gif

*パラメータで値が渡されています。

該当するデータが無い場合の画面
php-201.gif


【8】次は「1 北海道」の「削除」リンクをクリックします。

php-187.gif


【9】「delete.php?cd=1」が表示され、削除確認の画面が表示されました。

php-202.gif

*パラメータで値が渡されています。

該当するデータが無い場合の画面
php-203.gif


【10】次は一番最後のフォームに「99 ハワイ」と入力し、「追加」ボタンをクリックします。

php-192.gif


【11】「insert.php」が表示され、追加確認の画面が表示されました。

php-204.gif

*フォームのPOSTメソッドで値を渡しているため、パラメータはありません。

未入力項目がある場合の画面
php-205.gif


【解説】

更新、削除は前の画面から渡されたPREF_CDからSQL文を組み立てて実行し、PREF_NAMEを取得しています。

「PREF_NAMEもパラメータで渡せばよいのでは?」と思うかもしれません。もちろんそうすることもできますが、例えばフィールド数が10くらいになると面倒です。

そこで主キーとなるフィールドの番号だけ渡しておいて、データベースから再度取得できるようにしたほうが応用が広がります。

追加に関してはデータベースにデータが無いため、データを取得できません。そのためフォームのPOSTメソッドを使い、PREF_CDとPREF_NAMEの両方を渡す必要があります。


■SampleDB050.php

(1)関数 executeQuery() は仮引数としてSQL文を受け取り実行して、結果リストを戻り値として返しています。

function executeQuery($sql){
  省略
  //戻り値
  return($result);
}

*この関数は検索、追加、更新、削除共通で使えます。


■select.php

(1)他のファイルを読み込んでいます。読み込んだコードはそのまま使えます。

require_once("SampleDB050.php");


(2)クエリを送信する部分です。ユーザー定義の関数を使うように変更しました。戻り値を $result で受け取って利用します。

$result = executeQuery($sql);

*この部分は検索、追加、更新、削除ともに同じです。


■update.php

(1)SQL文を組み立てている部分です。

$sql = "SELECT PREF_NAME FROM T01Prefecture WHERE PREF_CD = ".$prefCd;

*このSQL文は主キーを抽出条件にしているため、結果は1件だけになります。


(2)結果リストから1行取得している部分です。結果は1件だけなので while を使う必要はありません。

$row = mysql_fetch_array($result);


(3)該当するデータがある場合は「更新」ボタンを、無い場合は「前の画面へ戻る」リンクを作成しています。

$tempHtml = "<input type=\"submit\" name=\"submit\" value=\" 更新 \">";

$tempHtml = "<a href=\"#\" onClick=\"history.back(); return false;\">前の画面へ戻る</a>\n";


(4)データを表示している部分です。PREF_CDは変更できないようにしています。PREF_NAMEは更新前のデータをデフォルトで表示し、簡単に変更できます。

<td><?= $prefCd ?></td>
<td><input type="text" name="name" value="<?= $prefName ?>"></td>


(5)次のページへ渡すデータを隠しフィールドに設定しています。このデータはフォームのPOSTメソッドで渡されます。

<input type="hidden" name="cd" value="<?= $prefCd ?>">

*PREF_NAMEはテキストボックスで入力した値を渡します。


(6)「更新」ボタンか「前の画面へ戻る」リンクを表示している部分です。

<?= $tempHtml ?>


■delete.php

(1)該当するデータがある場合は「削除」ボタンを、無い場合は「前の画面へ戻る」リンクを作成しています。

$tempHtml = "<input type=\"submit\" name=\"submit\" value=\" 削除 \">";

$tempHtml = "<a href=\"#\" onClick=\"history.back(); return false;\">前の画面へ戻る</a>\n";


(2)データを表示している部分です。データは変更できないようにしています。

<tr><td><?= $prefCd ?></td><td><?= $prefName ?></td></tr>


(3)次のページへ渡すデータを隠しフィールドに設定しています。このデータはフォームのPOSTメソッドで渡されます。

<input type="hidden" name="cd" value="<?= $prefCd ?>">

*削除はPREF_CDだけ渡せばOKです。


(4)「削除」ボタンか「前の画面へ戻る」リンクを表示している部分です。

<?= $tempHtml ?>


■insert.php

(1)未入力の項目が1つでもある場合($prefCdが空または$prefNameが空)は「前の画面へ戻る」リンクを、すべて入力されている場合は「追加」ボタンを作成しています。

if(empty($prefCd) || empty($prefName)){
  $tempHtml = "<a href=\"#\" onClick=\"history.back(); return false;\">再入力</a>\n";
  $msg = "未入力の項目があります。\n";
}else{
  $tempHtml = "<input type=\"submit\" name=\"submit\" value=\" 追加 \">";
  $msg = "このデータでよければ、追加ボタンをクリックしてください。\n";
}


(2)データを表示している部分です。データは変更できないようにしています。
<tr><td><?= $prefCd ?></td><td><?= $prefName ?></td></tr>


(3)次のページへ渡すデータを隠しフィールドに設定しています。このデータはフォームのPOSTメソッドで渡されます。

<input type="hidden" name="cd" value="<?= $prefCd ?>">
<input type="hidden" name="name" value="<?= $prefName ?>">

*追加の場合は隠しフィールドに2つ設定しています。


(4)「追加」ボタンか「前の画面へ戻る」リンクを表示している部分です。

<?= $tempHtml ?>


【ワンポイント】

更新、削除のリンクはデータベースのデータを元に作成しているため、select.phpで表示されたデータは必ず存在します。したがってデータが無い場合の画面は表示されることがありません。

無い場合の動作を確認するには、ブラウザのアドレスに以下のように入力し、直接ページにアクセスしてください。

http://localhost/test/sample104/update.php?cd=100
http://localhost/test/sample104/delete.php?cd=100

*同じデータベースを複数の人で利用する場合は、タイミングによりデータが無くなる場合があります。またURLのパラメータを不正に操作された時の対策にもなります。


]]>
http://php5.seesaa.net/article/63163887.html PHP データを次のページで受け取る方法。 前回 select.php でデータを渡す準備はできたので、今回はデータを受け取るページを作ります。データを受け取ることができれば、あとはSQL文を組み立てて実行するだけなので簡単です。そこで今回は受け取る方法に専念することにします。PHPに限らずWebアプリケーションで追加、更新、削除を行なう場合は、ページ間でデータの受け渡しが必要です。(JavaScriptなどを使う場合は別)しかし各Webページは基本的に独立しているので、ページ間でデータを受け渡しすることができません。.. Step5・データを受け取る方法 php入門 2007-10-29T10:41:37+09:00
PHPに限らずWebアプリケーションで追加、更新、削除を行なう場合は、ページ間でデータの受け渡しが必要です。(JavaScriptなどを使う場合は別)

しかし各Webページは基本的に独立しているので、ページ間でデータを受け渡しすることができません。そのためいくつか方法が用意されています。

データを受け渡す主な方法
1.パラメータを使う
2.フォームを使う
3.隠しフィールドを使う
4.クッキーを使う
5.セッションを使う

1、2、3の方法についてはこれまでのステップで何度か使っていますので、今回もこれらの方法で行ないます。4、5については必要になった時に解説します。


【1】sample102 フォルダをコピーして sample103 フォルダを作成します。

php-183.gif


【2】今回は以下のようなファイルの構成になります。select.phpの変更はありません。他のファイルは新規に作成します。

php-184.gif

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample103
ファイル名 select.php

<?php
  $url = "localhost";
  $user = "root";
  $pass = "";
  $db = "SampleDB050";

  // MySQLへ接続する
  $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");

  // データベースを選択する
  $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture";
  $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

  // MySQLへの接続を閉じる
  mysql_close($link) or die("MySQL切断に失敗しました。");
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
  </head>
  <body>
    <h3>全件表示</h3>
    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
  </body>
</html>


保存先 C:\phpdev\www\test\sample103
ファイル名 update.php

<?php
  $prefCd = $_GET['cd'];
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>更新</title>
  </head>
  <body>
    PREF_CD:<?= $prefCd ?><br />
  </body>
</html>


保存先 C:\phpdev\www\test\sample103
ファイル名 delete.php

<?php
  $prefCd = $_GET['cd'];
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>削除</title>
  </head>
  <body>
    PREF_CD:<?= $prefCd ?><br />
  </body>
</html>


保存先 C:\phpdev\www\test\sample103
ファイル名 insert.php

<?php
  $prefCd = $_POST['cd'];
  $prefName = $_POST['name'];
  $submit = $_POST['submit'];
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>追加</title>
  </head>
  <body>
    PREF_CD:<?= $prefCd ?><br />
    PREF_NAME:<?= $prefName ?><br />
    submit:<?= $submit ?><br />
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample103/select.php と入力し、実行します。


【5】select.php の画面が表示されました。

php-185.gif


【6】「1 北海道」の「更新」リンクをクリックします。

php-186.gif


【7】「update.php?cd=1」が表示され、画面には「PREF_CD:1」と表示されています。

php-188.gif

*パラメータで値が渡されています。


【8】ブラウザの「戻る」ボタンをクリックします。

php-189.gif


【9】次は「1 北海道」の「削除」リンクをクリックします。

php-187.gif


【10】「delete.php?cd=1」が表示され、画面には「PREF_CD:1」と表示されています。

php-190.gif

*パラメータで値が渡されています。


【11】ブラウザの「戻る」ボタンをクリックします。

php-191.gif


【12】次は一番最後のフォームに「99 ハワイ」と入力し、「追加」ボタンをクリックします。

php-192.gif


【13】「insert.php」が表示され、画面には以下のように表示されています。

PREF_CD:99
PREF_NAME:ハワイ
submit:追加

php-193.gif

*フォームのPOSTメソッドで値を渡しているため、パラメータはありません。


【14】ブラウザの「戻る」ボタンをクリックします。

php-194.gif


【15】次は「リセット」ボタンをクリックします。

php-195.gif


【16】テキストボックスがクリアされました。

php-196.gif


【解説】

(1)今回は select.php の変更ありません。


(2)update.php と delete.php はリンクのパラメータで値を渡しているので、「GETメソッド」になります。そのため値を受け取るときは $_GET[' '] を使います。

$prefCd = $_GET['cd'];

*PREF_CDさえわかれば他の情報はデータベースから再度取得できます。


(3)insert.php はフォームの「POSTメソッド」で値を渡しているので、受け取るときは $_POST[' '] を使います。

$prefCd = $_POST['cd'];
$prefName = $_POST['name'];
$submit = $_POST['submit'];

*新規のデータなので、PREF_CDとPREF_NAMEの両方が必要です。

submitの値(valueで設定)も渡されている点に注目してください。この値は「ボタンが押されたかどうか」の判断に利用できます。

例えば $submit に値が代入されたということは、アドレスにURLを入力して直接ページにアクセスしたのではなく、フォームのボタンをクリックしてPOSTメソッドでアクセスしたのだと判断できます。

・パラメータで変数の値を不正に変更されることを防ぐ
・自分自身のファイルを呼び出す時の条件判断に使う


【ワンポイント】

「GETメソッド」はパラメータとして値を渡すため、大きなデータを渡すのには向きません。URLが長くなるし文字数に制限があります。また値が見えてしまうためパスワードのような重要なデータの受け渡しは危険です。日本語のデータを使うときにはエンコード、デコードが必要です。

「POSTメソッド」は大きなデータの受け渡しもできます。値も見えないためGETメソッドに比べると安全です。日本語もそのまま使えます。


]]>
http://php5.seesaa.net/article/63003877.html PHP 追加、更新、削除の画面構成について考える。 前回までにPHPでデータを表示するところまでは出来たので、今回は追加、更新、削除をどうやって行なうか考えてみましょう。後々に追加、更新、削除を実行する「.php」ファイルをそれぞれ作成するとして、問題はどうやって対象となるレコードの情報を各プログラムに伝えるかです。そこで更新、削除用にはパラメータを含むリンクを用意し、URLで情報を伝えます。また追加用にはフォームを用意し、POSTメソッドで情報を伝えることにします。難しそうですが、プログラムを実行してみるとイメージできるので.. Step4・追加、更新、削除について php入門 2007-10-28T17:42:09+09:00 PHPでデータを表示するところまでは出来たので、今回は追加、更新、削除をどうやって行なうか考えてみましょう。

後々に追加、更新、削除を実行する「.php」ファイルをそれぞれ作成するとして、問題はどうやって対象となるレコードの情報を各プログラムに伝えるかです。

そこで更新、削除用にはパラメータを含むリンクを用意し、URLで情報を伝えます。また追加用にはフォームを用意し、POSTメソッドで情報を伝えることにします。

難しそうですが、プログラムを実行してみるとイメージできるので大丈夫です。

今回は全体的な画面構成を作ることに専念したいので、実際に追加、更新、削除を実行するプログラムは省いています。


【1】sample101 フォルダをコピーして sample102 フォルダを作成します。

php-176.gif


【2】select.php を変更します。

php-177.gif

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample102
ファイル名 select.php

<?php
  $url = "localhost";
  $user = "root";
  $pass = "";
  $db = "SampleDB050";

  // MySQLへ接続する
  $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");

  // データベースを選択する
  $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture";
  $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";
      $tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

  // MySQLへの接続を閉じる
  mysql_close($link) or die("MySQL切断に失敗しました。");
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
  </head>
  <body>
    <h3>全件表示</h3>
    <?= $msg ?>
    <table width = "300" border = "1">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td><td colspan="2">EDIT</td></tr>
      <?= $tempHtml ?>
      <form action="insert.php" method="post">
        <tr>
          <td><input type="text" name="cd"></td>
          <td><input type="text" name="name"></td>
          <td colspan="2">
            <input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
          </td>
        </tr>
      </form>
    </table>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample102/select.php と入力し、実行します。


【5】select.php の画面で、以下のように表示されたら成功です。

php-179.gif

・各レコードごとに「更新」、「削除」リンクがある
・最後のレコードの下に、「追加」フォームがある


【6】「更新」リンクにマウスのカーソルを合わせる(クリックはしない)と、ブラウザのステータスバーに、パラメータ(?cd=1)を含んだリンク先が表示されます。

php-180.gif

クリックするとまだリンク先のページが存在しないため、エラーが表示されます。アドレスにはパラメータが含まれていることがわかります。

php-182.gif


【7】同様に「削除」リンクでもリンク先が表示されることを確認してください。

php-181.gif


【解説】

(1)列見出しの「EDIT」を表示している部分です。colspanで2つのセルを結合しています。

<td colspan="2">EDIT</td>


(2)「更新」リンクを作成している部分です。パラメータの値として、データベースから取得したPREF_CDを指定しているところがポイントです。

$tempHtml .= "<td><a href=\"update.php?cd=".$row["PREF_CD"]."\" target=\"_self\">更新</a></td>";

*「\」はWindowsではエンマークのことで、「"」をエスケープしています。


(3)同様に「削除」リンクを作成している部分です。

$tempHtml .= "<td><a href=\"delete.php?cd=".$row["PREF_CD"]."\" target=\"_self\">削除</a></td>";


(4)テーブルの幅と罫線は適当なサイズに調整します。

<table width = "300" border = "1">


(5)「追加」フォームを作成している部分です。

<form action="insert.php" method="post">
  <tr>
    <td><input type="text" name="cd"></td>
    <td><input type="text" name="name"></td>
    <td colspan="2">
      <input type="submit" name="submit" value="追加"><input type="reset" value="リセット">
    </td>
  </tr>
</form>

table の中に form があり、さらにその中に tr、td があるので分かり難いですが、最後のレコードの下に、上手く追加フォームを表示したいのでこのような書き方になりました。

逆にtr、td の中に form を書くと少しレイアウトが崩れます。

form の action が「insert.php」に、method が「post」となっている点も注目してください。これは追加ボタンを押したときに呼び出すプログラムと、フォーム上のデータの渡し方です。


]]>
http://php5.seesaa.net/article/62565378.html PHPでMySQLのデータを表示する方法。 今回はデータベースにあるデータをPHPで表示します。前回データベースに接続する部分の関数は説明しましたので、新しく登場する関数は1つだけです。mysql_fetch_array()この関数は結果セットから、データを配列として1件ずつ取り出してくれます。これにPHPの制御構文であるwhileを組み合わせて使うことで、データが簡単に取り出せます。【1】sample100 フォルダをコピーして sample101 フォルダを作成します。【2】select.php を変更します。*「.. Step3・データを表示する php入門 2007-10-26T18:21:42+09:00 PHPで表示します。前回データベースに接続する部分の関数は説明しましたので、新しく登場する関数は1つだけです。

mysql_fetch_array()

この関数は結果セットから、データを配列として1件ずつ取り出してくれます。これにPHPの制御構文であるwhileを組み合わせて使うことで、データが簡単に取り出せます。


【1】sample100 フォルダをコピーして sample101 フォルダを作成します。

php-171.gif


【2】select.php を変更します。

php-172.gif

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample101
ファイル名 select.php

<?php
  $url = "localhost";
  $user = "root";
  $pass = "";
  $db = "SampleDB050";

  // MySQLへ接続する
  $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");

  // データベースを選択する
  $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture";
  $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //表示するデータを作成
  if($rows){
    while($row = mysql_fetch_array($result)) {
      $tempHtml .= "<tr>";
      $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
      $tempHtml .= "</tr>\n";
    }
    $msg = $rows."件のデータがあります。";
  }else{
    $msg = "データがありません。";
  }

  //結果保持用メモリを開放する
  mysql_free_result($result);

  // MySQLへの接続を閉じる
  mysql_close($link) or die("MySQL切断に失敗しました。");
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
  </head>
  <body>
    <h3>全件表示</h3>
    <?= $msg ?>
    <table width = "200" border = "0">
      <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
      <?= $tempHtml ?>
    </table>
  </body>
</html>



【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample101/select.php と入力し、実行します。


【5】select.php の画面で、データが表示されたら成功です。

php-173.gif

データが無い場合
php-174.gif

*データが無い状態を確認するには、SQLを以下のようにしてください。
$sql = "SELECT * FROM T01Prefecture WHERE PREF_CD > 100";


【解説】

(1)表示するデータを作成している部分です。

if($rows){
  while($row = mysql_fetch_array($result)) {
    $tempHtml .= "<tr>";
    $tempHtml .= "<td>".$row["PREF_CD"]."</td><td>".$row["PREF_NAME"]."</td>";
    $tempHtml .= "</tr>\n";
  }
  $msg = $rows."件のデータがあります。";
}else{
  $msg = "データがありません。";
}

$rows には結果セットの行数か FALSE(0) が代入されています。そこでif文を使い、行数がある場合はテーブルに表示するHTMLタグを作成し、無い場合(else)はメッセージのみ代入しています。

レコードがある間は1件ずつ取り出し、while内の処理を繰り返します。また「.=」は右辺の文字列を左辺に連結する代入演算子です。$tempHtmlにはレコード数分のタグが連結されていきます。

$row にはレコードごとに配列が入ります。カラム(列またはフィールド)にアクセスするには、連想添字か数値添字を使います。
$row["PREF_CD"]
$row[0]

作成されたHTMLタグ
php-175.gif


(2)HTMLのbody部分です。

<h3>全件表示</h3>
<?= $msg ?>
<table width = "200" border = "0">
  <tr bgcolor="##ccffcc"><td>PREF_CD</td><td>PREF_NAME</td></tr>
  <?= $tempHtml ?>
</table>

$msgに代入されている文字列を出力し、テーブルタグ内に$tempHtmlに代入されているHTMLタグを出力しています。

width = "200" でテーブルの幅を調整します。
border = "0" でテーブルの罫線を調整します。


]]>
http://php5.seesaa.net/article/62432244.html PHPからMySQLデータベースに接続する方法。 PHPにはMySQLを利用するための関数が、あらかじめ用意されています。実はデータベースの基本的な操作は7つの関数だけで行なえます。今回はその内の6つについて解説します。もちろん便利なMySQL関数はたくさんありますが、最初に覚えるのはこれだけで十分です。しかも関数は使うパターンが決まっているので、一度基本的なプログラムを作ればあとは流用することができます。またMySQLのデフォルトでは、パスワードが無い「root」ユーザーが設定されているので、これを接続に使うことにします。.. Step2・データベースに接続する php入門 2007-10-25T23:42:43+09:00 PHPにはMySQLを利用するための関数が、あらかじめ用意されています。実はデータベースの基本的な操作は7つの関数だけで行なえます。

今回はその内の6つについて解説します。もちろん便利なMySQL関数はたくさんありますが、最初に覚えるのはこれだけで十分です。

しかも関数は使うパターンが決まっているので、一度基本的なプログラムを作ればあとは流用することができます。

またMySQLのデフォルトでは、パスワードが無い「root」ユーザーが設定されているので、これを接続に使うことにします。

mysqlデータベースのuserテーブル
php-154.gif


【1】sample100 フォルダを作成します。

php-166.gif


【2】新たに select.php を作成します。

php-169.gif

*「\」はWindowsではエンマークのことです。

保存先 C:\phpdev\www\test\sample100
ファイル名 select.php

<?php
  $url = "localhost";
  $user = "root";
  $pass = "";
  $db = "SampleDB050";

  // MySQLへ接続する
  $link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");

  // データベースを選択する
  $sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");

  // クエリを送信する
  $sql = "SELECT * FROM T01Prefecture";
  $result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);

  //結果セットの行数を取得する
  $rows = mysql_num_rows($result);

  //結果保持用メモリを開放する
  mysql_free_result($result);

  // MySQLへの接続を閉じる
  mysql_close($link) or die("MySQL切断に失敗しました。");
?>

<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=SHIFT-JIS">
    <title>全件表示</title>
  </head>
  <body>
    接続ID:<?= $link ?><br />
    選択の成否:<?= $sdb ?><br />
    結果ID:<?= $result ?><br />
    行数:<?= $rows ?><br />
  </body>
</html>



*上記のプログラムはページの都合上、インデント(字下げ)が半角スペース2つになっていますが、実際には半角スペース4つにするのが好ましいです。インデントはプログラムの動作には影響しません。


【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

準備ができたら作成したPHPプログラムを実行してみましょう。


【4】ブラウザのアドレスに http://localhost/test/sample100/select.php と入力し、実行します。


【5】select.php の画面が表示されたら接続成功です。

php-170.gif

*表示されている戻り値に注目してください。


【解説】
PHPのプログラムとHTMLをできるだけ分離して、シンプルにしました。HTMLでは変数の値を出力しているだけです。

関数には「戻り値」(返り値)のあるものがあり、その戻り値が次の関数の「引数」に使われることがあります。そこで今回はどんな戻り値なのか分かりやすいように表示しています。


(1)変数に各種設定を代入している部分です。
$url = "localhost";
$user = "root";
$pass = "";
$db = "SampleDB050";
この部分を書き換えるだけで、他のデータベースにも接続できます。


(2)MySQLへ接続する部分です。
$link = mysql_connect($url,$user,$pass) or die("MySQLへの接続に失敗しました。");
成功した場合は接続IDが、失敗した場合は FALSE(0) が返ります。


(3)データベースを選択する部分です。
$sdb = mysql_select_db($db,$link) or die("データベースの選択に失敗しました。");
成功した場合は TRUE(1) が、失敗した場合は FALSE(0) が返ります。この戻り値は他の関数で使わないので、「$sdb =」は無くてもかまいません。


(4)クエリを送信する部分です。
$sql = "SELECT * FROM T01Prefecture";
$result = mysql_query($sql, $link) or die("クエリの送信に失敗しました。<br />SQL:".$sql);
SELECT文では成功した場合は resource が、エラー時には FALSE(0) が返ります。
UPDATE文, DELETE文では成功した場合は TRUE(1)が、エラー時には FALSE(0) が返ります。


(5)結果セットの行数を取得する部分です。
$rows = mysql_num_rows($result);
成功した場合は結果セットの行数が、失敗した場合は FALSE(0) が返ります。


(6)結果保持用メモリを開放する部分です。
mysql_free_result($result);


(7)MySQLへの接続を閉じる部分です。
mysql_close($link) or die("MySQL切断に失敗しました。");


(8)HTMLに変数の値を出力している部分です。printの代わりに「<?= 変数名 ?><」で簡単に出力できます。

接続ID:<?= $link ?><br />
選択の成否:<?= $sdb ?><br />
結果ID:<?= $result ?><br />
行数:<?= $rows ?><br />


*各関数についての詳細はPHPサイトでマニュアルをご覧ください。
http://www.php.net/

当講座の「Step3・関数の調べ方」に調べ方を書いています。


]]>
http://php5.seesaa.net/article/61269550.html PHP MySQLの準備をする。 PHPからMySQLを利用するには、まずMySQLの中に学習で使うデータベースを作成し、その中にテーブルの作成とデータを追加する必要があります。ありがたいことに「phpdev」にはMySQLを視覚的に操作できる「phpMyAdmin」というソフトが含まれているので、簡単にデータベースを準備できます。phpMyAdminを使うとデータの追加をGUI画面で行なえます。しかし追加するデータが多い時は、SQL文のほうが便利です。そこでテーブル作成とデータの追加用に、複数のSQL文をま.. Step1・MySQLの準備 php入門 2007-10-18T16:08:34+09:00 PHPからMySQLを利用するには、まずMySQLの中に学習で使うデータベースを作成し、その中にテーブルの作成とデータを追加する必要があります。

ありがたいことに「phpdev」にはMySQLを視覚的に操作できる「phpMyAdmin」というソフトが含まれているので、簡単にデータベースを準備できます。

phpMyAdminを使うとデータの追加をGUI画面で行なえます。しかし追加するデータが多い時は、SQL文のほうが便利です。

そこでテーブル作成とデータの追加用に、複数のSQL文をまとめたファイルを用意しました。phpMyAdminからこのファイルを参照することで、複数のSQL文を一気に実行することができます。


【1】T01Prefecture.zipをダウンロードします。


【2】ダウンロードしたファイルを解凍して、「T01Prefecture.sql」をわかりやすい場所に置いてください。どこでもかまいません。

php-132.gif

*このファイルの中身は、テーブル作成とデータを追加するSQL文です。テキストエディタで開くことができます。


【3】C:\phpdev にある 2K-NT-XP-phpdev_start.bat をダブルクリックして、phpdev を起動します。

php-02.gif

*この時点でMySQLが開始されます。


【4】ブラウザで http://localhost/ を開きます。

php-107.gif


【5】「start_here.htm」をクリックします。

php-108.gif


【6】「phpMyAdmin」をクリックします。

php-109.gif


【7】phpMyAdmin が表示されました。この画面からデータベースのMySQLを視覚的に操作できます。

php-110.gif


【8】Language で「Japanese(ja-sjis)」を選択します。

php-111.gif


【9】新しいデータベースを作成します。「SampleDB050」と入力し、「作成」ボタンをクリックします。

php-133.gif


【10】メッセージが表示され SampleDB050 データベースが作成されました。

php-134.gif


【11】「構造」をクリックします。

php-135.gif


【12】まだテーブルはありません。

php-136.gif


【13】「SQL」をクリックします。

php-137.gif


【14】「参照」ボタンをクリックします。

php-138.gif

この画面のテキストエリアにSQL文を入力して実行することもできますが、データが多いので別ファイルにまとめたSQL文を実行します。


【15】あらかじめダウンロードしておいた「T01Prefecture.sql」を選択し、「開く」ボタンをクリックします。

php-120.gif


【16】「実行」ボタンをクリックします。

php-139.gif


【17】メッセージが表示され、テーブルが作成されました。

php-140.gif


【18】「t01prefecture」をクリックします。

php-141.gif


【19】テーブルの構造とテーブル作成のSQL文を比較すると、どのように反映されたのかよくわかります。

php-142.gif


【20】「表示」をクリックします。

php-143.gif


【21】テーブルのレコード一覧が表示されました。

php-126.gif


【22】「追加」ではテーブルにレコードを追加できます。

php-144.gif


【23】「選択」では条件を指定してレコードを抽出することができます。

php-145.gif


【24】「SQL」ではSQL文を書いて実行することができます。

php-146.gif


【25】画面左のメニューからデータベース名の「SampleDB050」をクリックします。

php-147.gif


【26】データベースにあるテーブルの一覧が表示されます。

php-149.gif

*この例ではまだテーブルは1つだけです。


以上でPHPからMySQLを利用する準備が整いました。


【解説】

(1)Language で「Japanese(ja-sjis)」を選択したのは、データベース、PHP、取り込むファイルの文字コードを揃えるためです。これらが異なると文字化けの原因になります。


(2)「T01Prefecture.sql」のSQL文について

・もしテーブルが既に存在する場合は削除します。
DROP TABLE IF EXISTS T01Prefecture;

・テーブルを作成します。
CREATE TABLE T01Prefecture (
PREF_CD INT PRIMARY KEY,
PREF_NAME VARCHAR(10)
);

・テーブルにデータを追加します。
INSERT INTO T01Prefecture VALUES (1, '北海道');
以下省略


(3)MySQLについてもっと詳しく知りたい場合は、MySQL初心者入門講座をご覧ください。

MySQL初心者入門講座の手順に沿ってMySQLをインストールすると、同じパソコンにMySQLが2つインストールされることになります。(phpdev内にもMySQLがあります)

・C:\phpdev\mysql
・C:\mysql

MySQLのインストール場所が異なるので問題ありませんが、2つとも同じポート番号を利用するため同時には使えません。

*MySQLを切り替えて使うには、パソコンの再起動が必要ですので注意してください。


]]>