顧客情報の登録・更新

顧客情報の新規登録とデータ更新の処理を作成してみましょう。

まずは上記のような入力画面を作っていきましょう。

customer-input.php

<?php session_start(); ?>
<?php require ‘header.php’; ?>
ログイン時にセッションデータへ格納する顧客情報を利用するので冒頭で session_start関数を呼び出します。
<?php
$name = $address = $login = $password=’ ‘;
顧客名、住所、ログイン名、パスワードを保存する変数を用意して、空の文字列を代入しておきます。複数の変数に同じ値を代入する場合には、短く書けて便利です。

if (isset($_SESSION[‘customer’])){
   

セッションデータに顧客情報が登録されているかどうか調べます。変数が定義されているかどうかをisset関数を使い調べます。
$name = $_SESSION[‘customer’][‘name’];
   
顧客情報が登録されていたら、セッションデータから顧客情報を読みだして、各変数に登録します。左記は顧客名の例です。
$address = $_SESSION[‘customer’][‘address’];
$login = $_SESSION[‘customer’][‘login’];
$password = $_SESSION[‘customer’][‘password’];
}
各情報が登録されていたら各情報を読み出し、各変数に登録します。
echo ‘<form action=”customer-output.php” method=”post”>’;

echo ‘<p>お名前</p>’;
echo ‘<input type=”text” name=”name” value=”‘,$name,'”>’;

echo ‘<p>住所</p>’;
echo ‘<input type=”text” name=”address” value=”‘,$address,'”>’;

echo ‘<p>ログイン名</p>’;
echo ‘<input type=”text” name=”login” value=”‘,$login,'”>’;

echo ‘<p>パスワード</p>’;
echo ‘<input type=”password” name=”password” value=”‘,$password,'”>’;

echo ‘<p><input type=”submit” value=”確定”></p>’;
‘</form>’;

次に入力した顧客情報を、登録または更新する処理を行うプログラムを書きましょう

customer-output.php

<?php session_start(); ?>
<?php require ‘header.php’; ?>
<?php
$pdo=new PDO(‘mysql:host=localhost;dbname=shop;
charset=utf8′,’staff’,’password’);
最初に、セッション開始とデータベースへの接続を行います。

if(isset($_SESSION[‘customer’])){
    $id=$_SESSION[‘customer’][‘id’];
    $sql=$pdo->prepare(‘select * from customer where id!=? and login=?’);
   
 
指定されたログイン名が、すでに使われているかどうかを調べます。
この処理は、ログインしている場合と、ログインしていない場合で処理が違ってきます。
ログインしている場合には、同じログイン名を使っているユーザーを、赤文字のようなスクリプトで検索します。
!=は等しくないことを示す演算子です。
$sql->execute([$id, $_REQUEST[‘login’]]);
}else {
 $sql=$pdo->prepare(‘select * from customer where login=?’);
$sql->execute([$_REQUEST[‘login’]]);
}
else文でログインしていない場合には、同じログイン名を使っているユーザーを調べます。

if(empty($sql->fetchALL())){
    if(isset($_SESSION[‘customer’])){
   
検索結果が空ならば、ログイン名が重複している他のユーザーはいないということになります。
検索結果が空かどうかを調べるためここではempty関数を使っています。
引数に指定した変数や配列が空の時、empty関数はTRUEを返します。
    $sql=$pdo->prepare(‘update customer set name=?, address=?, login=?, password=? where id=?’);
     
?の部分に、顧客名、住所、ログイン名、パスワード、顧客番号を指定して実行します。
  $sql->execute([
            $_REQUEST[‘name’],$_REQUEST[‘address’],
            $_REQUEST[‘login’],$_REQUEST[‘password’],$id
        ]);
     
executeメソッドの引数には「?」部分に設定する値を、配列にして渡します。
  $_SESSION[‘customer’]=[
            ‘id’=>$id, ‘name’=>$_REQUEST[‘name’],
            ‘address’=>$_REQUEST[‘address’], ‘login’=>$_REQUEST[‘login’],
            ‘password’=>$_REQUEST[‘password’]
        ];
        echo ‘情報を更新しました’;
   
データベースの更新を終えたら、セッションデータも最新情報に更新します。
各情報の列名をキーにして、配列を作成し、$_SESSION[‘customer’]に代入します。
}else {
        $sql=$pdo->prepare(‘insert into customer values(null,?,?,?,?)’);
       
ログインしていない場合には、このようなinsert文を使って、データベースに顧客情報を登録します。
$sql->execute([
            $_REQUEST[‘name’], $_REQUEST[‘address’],
            $_REQUEST[‘login’], $_REQUEST[‘password’]
        ]);
        echo ‘情報を登録しました’;
    }
    }else{
        echo ‘ログイン名がすでに登録されています。変更してください’;
    }
?>
<?php require ‘footer.php’; ?>
execute文を使って?の部分に顧客名、住所、ログイン名、パスワードを指定して実行させます。

新規登録をしてみよう

確定を押すと次の画面が表示されます。

PHPMyadminから確認してみます。

shopデータベースのcustomoerテーブルに新規登録されたことが確認できました。

情報の更新

パスワードをaiueoから12345へと変更、更新してみます。

変更できていることが確認できました。

PHPについて

この本から引用、参考にして学び、完成させることができました。しかし、ここではプログラミング初心者の私が詳しく解説することは、おこがましく、難しく出来ません(ToT)
その点、この本では丁寧な解説が載っていますので、解説とともにコードを書き、完成させればより深く学ぶことができます(^.^)、実際、初心者の私でもわかりやすかったです。身に付け消えないスキルが3,000円弱ならコスパよく、買っておいてよかったと満足してます。


短期間でのレベルアップにはプロから学ぶのもありです。

キャリアアップに必要なスキルを取得しよう。

オンラインで受講ができるスクールですので、全国どこからでも。