0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MySQLデータテーブルにPHPで作成したフォームのデータを書き込む

Posted at

##参考
https://qiita.com/ho-gaku/items/914e80a955b510538377
https://qiita.com/harufuji/items/d033d3480a0c791973ae

##手順
前回同様に、
1.データベースに接続
2.接続エラー処理
3.テーブルデータ取得
4.表示処理
5.データベース接続終了

新たに、
1.フォーム作成
2.フォームに入力されたデータを受け取ってDBに接続し書き込む。

##前回のコードサンプル

<?php

$link = mysqli_connect('localhost', 'root', ''   ,'eccube001');
//           ↑host  ↑USER  ↑PW(空白)    ↑DB名前
// 接続状況をチェックします
if (mysqli_connect_errno()) {
    die("データベースに接続できません:" . mysqli_connect_error() . "\n");
}else {
    echo "データベースの接続に成功しました。\n";
}

print "<br>";

// ステータスの一覧を表示する
$query = "SELECT * FROM mtb_order_status;";
//     ↑まずはサンプルで固定のSQLを入れる(サンプル・動作確認としてこのまま)
// クエリを実行します。
if ($result = mysqli_query($link, $query)) {
    echo "SELECT に成功しました。\n";

print "<br>";

    foreach ($result as $row) {
        var_dump($row);
       
    }
}else{
    echo "SQL実行に失敗しました。\n";
}

// 接続を閉じます
mysqli_close($link);

?>

##今回
銀行口座の入出金の機能を最終的に作成するために、今回は銀行口座開設フォームを作成する。

##銀行口座に必要な機能
・口座開設フォーム
・入出金を記録、確認できる

##DBに書き込む
前回と同様に、DBに接続します。そして、フォームに入力されたデータをPOSTで受け取ってDBに接続しinsertで書き込む。

$link = mysqli_connect('localhost', 'root', ''   ,'AIBANK');
if (isset($_POST['send']) === true) {
    $number= htmlspecialchars(trim($_POST["number"]));
    $type = htmlspecialchars(trim($_POST["type"]));
    $name_full= htmlspecialchars(trim($_POST["name_full"]));
    $name_kana = htmlspecialchars(trim($_POST["name_kana"]));
    print($name_full);

    $query = "INSERT INTO account_170(number, type, name_full, name_kana, create_date,flg_active) VALUES ('$number','1','$name_full', '$name_kana',CURRENT_TIMESTAMP,'1');";
}

##ステータスを表示する
テーブルデータを取得、表示しinsertされたデータをここに表示する。

$query = "SELECT * FROM account_170;";

if ($result = mysqli_query($link, $query)) 
    print "<table border=''>";

    foreach ($result as $row) {        
        
        print "<tr>";
        
        print "<td>" . $row["number"] . "</td>";
        print "<td>" . $row["type"] . "</td>";
        print "<td>" . $row["name_full"] . "</td>";
        print "<td>" . $row["name_kana"] . "</td>";
        print "<td>" . $row["create_date"] . "</td>";
        print "<td>" . $row["flg_active"] . "</td>";
              
        print "</tr>\n";
        
    }
    

print "</table>";    

mysqli_close($link);
print "<hr>";
?>

##入力フォームを作成する
htmlでフォームを作成する

<body>
    <form action="" method="post">
        <h2>口座番号登録フォーム</h2>
        <p>口座番号 :
        <input type="text" id="number" name="number" size="60" placeholder="2020112"> 
        </p>
        <p>
            預金種別 : 
            <input type="radio" id="type" name="type" value="1">普通預金
            <input type="radio" id="type" name="type" value="2">当座預金
        </p>
        <p>
            <label>預金者名 : </label>
            <input type="text" id="name1" name="name1" size="60" placeholder="山田太郎"> 
        </p>
        <p>
            預金者名(かな) :
            <input type="text" id="name2" name="name2" size="60"placeholder="ヤマダタロウ">
        </p>
        <p><input type="submit" name ="send" value="口座開設を登録する" onclick="clickbtn()"></p>
    </form>
        
 
</body>

##サンプルコード
銀行口座開設フォームが完成


<!DOCTYPE html>
<html lang="ja">



<?php
$link = mysqli_connect('localhost', 'root', ''   ,'AIBANK');
if (isset($_POST['send']) === true) {
    $number= htmlspecialchars(trim($_POST["number"]));
    $type = htmlspecialchars(trim($_POST["type"]));
    $name_full= htmlspecialchars(trim($_POST["name_full"]));
    $name_kana = htmlspecialchars(trim($_POST["name_kana"]));
    print($name_full);

    $query = "INSERT INTO account_170(number, type, name_full, name_kana, create_date,flg_active) VALUES ('$number','1','$name_full', '$name_kana',CURRENT_TIMESTAMP,'1');";
}


if ($result = mysqli_query($link, $query)) {
    echo "成功しました。\n";
    print "<br>";
}else{
    echo "失敗しました。\n";
    print "<br>";
}
$query = "SELECT * FROM account_170;";

if ($result = mysqli_query($link, $query)) 
    print "<table border=''>";

    foreach ($result as $row) {
        
        
        print "<tr>";
        
        print "<td>" . $row["number"] . "</td>";
        print "<td>" . $row["type"] . "</td>";
        print "<td>" . $row["name_full"] . "</td>";
        print "<td>" . $row["name_kana"] . "</td>";
        print "<td>" . $row["create_date"] . "</td>";
        print "<td>" . $row["flg_active"] . "</td>";
        
        
        
        print "</tr>\n";
        
       
        


    }
    

print "</table>";    

mysqli_close($link);
print "<hr>";
?>



<body>
    <form action="" method="post">
        <h2>口座番号登録フォーム</h2>
        <p>口座番号 :
        <input type="text" id="number" name="number" size="60" placeholder="2020112"> 
        </p>
        <p>
            預金種別 : 
            <input type="radio" id="type" name="type" value="1">普通預金
            <input type="radio" id="type" name="type" value="2">当座預金
        </p>
        <p>
            <label>預金者名 : </label>
            <input type="text" id="name1" name="name1" size="60" placeholder="山田太郎"> 
        </p>
        <p>
            預金者名(かな) :
            <input type="text" id="name2" name="name2" size="60"placeholder="ヤマダタロウ">
        </p>
        <p><input type="submit" name ="send" value="口座開設を登録する" onclick="clickbtn()"></p>
    </form>
    
   
    
</body>

</html>

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?