シェルスクリプトマガジン

特集2 PHP超入門(Vol.60掲載)

著者:柏岡秀男

 「PHP」(PHP: Hypertext Preprocessor)は、Webアプリケーションの開発によく使われているプログラミング言語です。本特集では、WindowsやmacOSにPHPプログラムの実行環境やWebサーバー、DBMSサーバーをインストールできる「MAMP」というソフトウエアを使って、PHPプログラミングを手軽に体験する方法を紹介します。これを機会にぜひPHPプログラミングを始めてみてください。

シェルスクリプトマガジン Vol.60は以下のリンク先でご購入できます。

図1 現在時刻を表示するWeb ページをPHPで作成した例

<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
  <title> 現在時刻</title>
</head>
現在時刻は
<?php
  echo date("H:i:s")
?>
です

図10 helloworld.php

<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
 <title>Hello world</title>
</head>
<?php echo "Hello, World!"; ?>

図11 表示したWeb ページのソースコード

<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
  <title>Hello world</title>
</head>
Hello, World!

図12 sample1.php

<?php
  $a = 1;
  $b = 2;
  echo $a + $b;
?>

図13 以下のサンプルコードの冒頭に付加するコード

<!DOCTYPE html>
<head>
  <meta charset="UTF-8">
  <title><?php echo __FILE__; ?></title>
</head>

図14 sample2.php

<?php
  $a = " シェルスクリプト";
  $b = " マガジン";
  echo $a . $b;
?>

図15 sample3.php

<pre>
<?php
  $a = array(1,2,3,4,5);
  $b = array("a" => 1,"b" => "abc","c" => "123");
  $c[0] = 123;
  $c[1] = $b;
  var_dump($a);
  var_dump($b);
  var_dump($c);
  echo $a[1];
  echo "\n";
  echo $b["c"];
  echo "\n";
?>
</pre>

図17 if 文の基本構文

<?php
  $a = 1;
  if($a > 10) {
    echo "a は10 より大きい";
  }
?>
<?php
  $a = 1;
  if($a > 10) {
    echo "a は10 より大きい";
  } else {
    echo "a は10 以下";
  }
?>

図18 input.php

<form method="post" action="input.php">
  <input type=text name="a">
  <input type=submit>
</form>
<?php
  var_dump($_POST);
?>

図19 sample_input.php

<form method="post" action="sample_input.php">
  <input type=text name="a">
  <input type=submit>
</form>
<?php
  if($_POST["a"] > 10 ) echo "10 より大きい";
?>

図20 sample_input2.php

<form method="post" action="sample_input2.php">
  <input type=text name="a" >
  <input type=submit>
</form>
<?php
  if (isset($_POST["a"])) {
    if($_POST["a"] > 10 ) {
      echo "10 より大きい";
    } else {
      echo "10 以下";
    }
  } else {
    echo " 数字を入力してください";
  }
?>

図25 connect.php

<?php
  try {
    $dbh = new PDO(
      "mysql:host=localhost;dbname=sampledatabase;charset=utf8",
      "phpuser","testpassword"
    );
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  } catch (Exception $e) {
    die(" データベース接続失敗 ".$e->getMessage());
  }
  echo " 接続できました";
?>

図26 input.html

<!DOCTYPE html>
<head>
  <title>TODO データの入力画面</title>
</head>
<form method="post" action="add.php">
  <input type=text name="todo">
  <input type=submit>
</form>
TODO データを入力してください

図27 add.php

<?php
  var_dump($_POST);
  try {
    $dbh = new PDO(
      "mysql:host=localhost;dbname=sampledatabase;charset=utf8",
      "phpuser","testpassword"
    );
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO sample (todo) VALUES (:todo_value)";
    $stmt = $dbh->prepare($sql);
    $todo = urldecode($_POST["todo"]);
    $stmt->bindValue(":todo_value", $todo, PDO::PARAM_STR);
    $stmt->execute();
    echo " データを登録しました";
  } catch (Exception $e) {
    die(" データベース接続失敗 ".$e->getMessage());
  }
?>

図28 list.php

<?php
  try {
    $dbh = new PDO(
      "mysql:host=localhost;dbname=sampledatabase;charset=utf8",
      "phpuser","testpassword"
    );
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "SELECT * FROM sample WHERE status IS NULL";
    $res = $dbh->query($sql);
    foreach($res as $row) {
      echo htmlspecialchars($row["todo"], ENT_QUOTES);
      echo "<br />";
    }
  } catch (Exception $e) {
    die(" データベース接続失敗 ".$e->getMessage());
  }
?>

図30 list2.php

<?php
  try {
    $dbh = new PDO(
    "mysql:host=localhost;dbname=sampledatabase;charset=utf8",
    "phpuser","testpassword"
    );
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $sql = "SELECT * FROM sample WHERE status IS NULL";
    $res = $dbh->query($sql);
    foreach($res as $row) {
      $id = htmlspecialchars($row["id"], ENT_QUOTES);
      echo htmlspecialchars($row["todo"], ENT_QUOTES);
    echo "<a href='update.php?id=" . $id . "'> 完了</a><br />";
    }
  } catch (Exception $e) {
    die(" データベース接続失敗 ".$e->getMessage());
  }
?>

図31 update.php

<?php
  try {
    $dbh = new PDO(
      "mysql:host=localhost;dbname=sampledatabase;charset=utf8",
      "phpuser","testpassword"
    );
    $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "UPDATE sample SET status = 1 WHERE id = :id_value";

    $stmt = $dbh->prepare($sql);
    $id = (int) $_GET["id"];
    $stmt->bindValue(":id_value", $id, PDO::PARAM_INT);
    $stmt->execute();
    echo " データを更新しました";
  } catch (Exception $e) {
    die(" データベース接続失敗 ".$e->getMessage());
  }
?>