クロピグログ

職業訓練で学んだことまとめ

【DB授業六日目】MariaDB+PHP(続き2)

XAMPP壊れた際の対処方法

https://jobtech.jp/mysql/4027/

 

通常のコマンドプロントで開く方法

cd C:\Users\ica\Desktop\xampp\mysql\bin

これを打ち込み、移動してからいつも通り「mysql -u root -p」

みたいな感じで打ち込むと実行できる

 

データベース領域のバックアップ方法(フォルダver)

パス:C:\Users\ica\Desktop\xampp\mysql\data

ここにできたデータベース領域をコピーしておく

スクリプトファイル」コピーして残しておくのが基本的

 

 レコードの登録

 insert_test.php

$dbobj = mysqli_connect(
  'localhost',
  'Tanaka'mysql -u Tanaka -p
  'Manager' PW:Manager
) or die('DB接続できませんでした');
mysqli_select_db($dbobj'practice'); USE practice;
mysqli_set_charset($dbobj'utf8');

 ここまでいつもの接続処理(後々関数化する予定)

 

INSERT文の時はSQL実行後の戻り値を変数に代入していなかった
INSERT文sの場合はDB側で処理されればOKだから
ちなみにINSERT文実行後の戻り値は真偽値
実行OK「true」実行NG「false」が返るので、戻り値を使って
 HTMLの表示内容を変更することも可
mysqli_query($dbobj'INSERT INTO stationery 
SET item="分度器", price=240, stock=6, keyword="事務", maker=2'
) or die(mysqli_error($dbobj));

 

 

新規商品入力フォームを作成

entry.php

デバッグ領域表示・非表示
$debug = true;
自作関数定義読み込み
require_once dirname(__FILE__. '/functions.php';
DB接続
$dbobj = mysqli_connect('localhost''Tanaka''Manager')
  or die("DB接続できませんでした");
mysqli_select_db($dbobj'practice');
mysqli_set_charset($dbobj'utf8');
SQL文をDBに投げる
$sql = 'SELECT * FROM trader';
$trSet = mysqli_query($dbobj$sql) or die(mysqli_error($dbobj));
下記テーブル情報を変数trSet(traderSet)に代入
 +------+----------+---------+--------------+
 | m_id | company  | address | tel          |
 +------+----------+---------+--------------+
 |    1 | ペン工房  | 東京都  | 03-0000-0000 |
 |    2 | 小鳥文具  | 栃木県  | 028-111-1111 |
 |    3 | 黒木屋    | 島根県  | 0853-55-5555 |
 +------+----------+---------+--------------+

 body内

<body>
  <? if($debug): ?>
  <div class="debug">
    <p>デバック用</p>
    <p>$sql:
      <? print $sql?>
    </p>
  </div>
  <? endif?>
  <div id="container">
    <div id="head">
      <h1>新規登録</h1>
    </div>
    <div id="content">
      <form action="insert.php" method="post">
        <fieldset>
          <legend>新しい商品の情報</legend>
          <dl>
            <dt><label for="item">商品名<span>※必須</span></label></dt>
            <dd><input name="item" type="text" id="item" size="20" maxlength="10"></dd>
            <dt><label for="price">価格</label></dt>
            <dd><input name="price" type="text" id="price" size="10" maxlength="10"></dd>
            <dt><label for="stock">在庫</label></dt>
            <dd><input name="stock" type="text" id="stock" size="10" maxlength="10"></dd>
            <dt><label for="keyword">キーワード</label></dt>
            <dd><input name="keyword" type="text" id="keyword" size="50" maxlength="255"></dd>
          </dl>
        </fieldset>
        <fieldset>
          <legend>メーカーの情報</legend>
          <dl>
            <dt>メーカー<span>※必須</span></dt>
            <dd>
              <!-- レコードの数繰り返す -->
              <? while($trData=mysqli_fetch_assoc($trSet)): ?>
              <label>
                <input name="maker" type="radio" value="<? echo h($trData['m_id']); ?>">
                <? echo h($trData['company']); ?>
              </label>
              <? endwhile?>
            </dd>
          </dl>
        </fieldset>
        <div class="submit_btn"><input type="submit" value="登録"></div>
      </form>
      <p><a href="index.php" onclick="return confirm('一覧に戻りますか?')">一覧に戻る</a></p>
      <!--#content-->
    </div>
    <!--#container-->
  </div>
</body>
◆ladelタグの使い方

1. 文字とフォームパーツをladelタグで囲んでグループ化する

 例) ラジオボタンチェックボックスで使用

2. 文字とフォームパーツが離れている場合は

 「ladelタグのfor属性」と

 「フォームパーツのid属性」を

 揃えて関連があることを定義する

例)

<label for="パーツ名">項目1</label>
<input id="パーツ名" type="radio" name="hoge" value="1">

 

●メーカー選択ラジオボタン

 レコードの数繰り返す
<? while($trData=mysqli_fetch_assoc($trSet)): ?>
<label>
  <input name="maker" type="radio" value="<? echo h($trData['m_id']); ?>">
  <? echo h($trData['company']); ?>
</label>
<? endwhile?>

・確認する際は、ソースコード見るとわかりやすい

・データベースでメーカーを増やすと連動して増える

 

●一覧に戻るボタン

<a href="index.php" 
onclick="return confirm('一覧に戻りますか?')">一覧に戻る</a>

◆onclick属性

JavaScript専用属性

・イベント用属性

 場所:a要素

 種類(タイミング):クリックしたとき

 処理:属性値に記述されている

    return confirm('一覧に戻りますか?')

confirmメソッド:確認ダイアログ画面表示

 「OK」 → 戻り値「true」

 「キャンセル」 →  戻り値「false」

■今回のa要素はクリックで確認ダイアログ画面表示

 「OK」 → リンク先に移動

 「キャンセル」 →  そのまま

 

insert.php

●いつもの

デバッグ領域表示・非表示
$debug = true;
自作関数定義読み込み
require_once dirname(__FILE__. '/functions.php';

 

三項演算子で値が届いているか確認したうえで各変数に値を代入

・値が届いていたら「届いた値」を代入
・値が届いていなかったら「NULL」を代入
$item    = isset($_POST['item'])    ? $_POST['item']    : NULL;
$price   = isset($_POST['price'])   ? $_POST['price']   : NULL;
$stock   = isset($_POST['stock'])   ? $_POST['stock']   : NULL;
$keyword = isset($_POST['keyword']) ? $_POST['keyword'] : NULL;
$maker   = isset($_POST['maker'])   ? $_POST['maker']   : NULL;

 

●打ち込みミス対策

文字列の先頭・末尾にあるホワイトスペースを取り除く
ホワイトスペース:半角スペース、改行、タブ等
$item    = trim($item);
$price   = trim($price);
$stock   = trim($stock);
$keyword = trim($keyword);
$maker   = trim($maker);

 

●使う変数代入

$sql = ''SQL文用変数
$message = ''ブラウザ表示用メーセージ
$btn = ''ブラウザ表示用リンク

 

途中...