空室ありなしを表示させたい - PHPプロ!Q&A掲示板

4955

  • 募集中!! 0P

空室ありなしを表示させたい

質問日時 / 2018年6月20日 10:22    回答数 / 2件

Questioner:  tomomo9  このエントリーをはてなブックマークに追加 

キーワード / php    mysql   

php学習を始めたばかりです。

101.102103号室があったとして、管理画面で空室ありなしをクリックしたらDBに反映させてWeb上で現在の状況を反映させるというものを練習したいのですが、記述参考例などいただけませんでしょうか。

よろしくお願いいたします。


ツリー一覧

┗A01shimix>DBに反映させて DBの設計はどのようになっていま
 ┗A01-1tomomo9DBはとりあえずroom intで部屋番号とdata intで空室だ

回答一覧

並び替え:

A01 満足
answerershimix [6月20日 11:42]

>DBに反映させて

DBの設計はどのようになっていますか(どのようにしますか)。設計が終わっていないとphpスクリプトは1行も書けません。

また

>空室ありなしをクリック

というのはどういう状態にすることを想定されているのでしょうか?どれかが空きならば空室ありの表示になるので「空室ありなし」というのがどういう動作なのかちょっとわかりません。∴「空室ありなしをクリック」の具体的な内容を書いてください。

#各室ごとの予約状況の変更であれば、ごく一般的な予約フォームなので簡単なんですが(汗


閑話休題

とりあえず「一般的な予約フォーム」の場合を書いてみます。

MySQLに
  1. CREATE TABLE room (
  2.     no varchar(8) NOT NULL PRIMARY KEY,
  3.     status int(11) NOT NULL DEFAULT '0'
  4. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
のようにテーブルを作成して
  1. <?php
  2. header('content-type: text/html; charset=utf-8');
  3. try {
  4.     $pdo = new PDO("mysql:host=localhost;dbname=test; charset=utf8""root""");
  5.     $pdo->setAttribute(PDO::ATTR_ERRMODEPDO::ERRMODE_EXCEPTION);
  6.     // POSTデータがあったら、更新処理
  7.     if ($_POST) {
  8.         $msg = [];
  9.         $stmt = $pdo->prepare('update room set status=? where no=?');
  10.         // 現状POSTデータは1件だが、複数POSTされても対応する
  11.         foreach ($_POST as $no=>$val) {
  12.             $status = $val === "予約" ? 1 : 0;
  13.             $stmt->execute([$status$no]);
  14.             $msg[] = sprintf('%s号室を%sにしました'$no$val);
  15.         }
  16.  
  17.     }
  18.     if (isset($msg)&&(count($msg) > 0)) {
  19.         printf('<div>%s</div><hr>'implode('<br>'$msg));
  20.     }
  21.  
  22.     // 状態表示
  23.     $aki = false;
  24.     foreach ($pdo->query('select * from room order by no') as $row) {
  25.         if ($row['status'] == 0) {
  26.             printf('%s号室:(空き) <form action="" method="post"><input type="submit" name="%s" value="予約"></form>'$row['no']$row['no']);
  27.             $aki = true;
  28.         } else {
  29.             printf('%s号室:予約あり <form action="" method="post"><input type="submit" name="%s" value="空き"></form>'$row['no']$row['no']);
  30.         }
  31.     }
  32.     printf('<div style="width:200px; text-align:center; border:solid 1px">%s</div>'$aki ? "空室あり" : "空室なし");
  33.  
  34. } catch (PDOException $e) {
  35.     die('DB ABort : ' . $e->getMessage());
  36. }
のようなスクリプトでいいと思います。

#普通は状態テーブルは「部屋番号」と「日付」のキーで作りますけど、今回は省略(汗

この意見に回答する

ツリーへ TOPへ

A01-1
replyertomomo9 [6月20日 12:37]

DBはとりあえずroom intで部屋番号とdata intで空室だったら0、満室だったら1を登録しようと思っております。

内容が伝わりにくく申し訳ございません。
今のところform method="post" にし、101号室、102号室と表示させ、それぞれにradioボタンで空室、満室でクリックさせてsubmitボタンで送信しようと思ってます。
その後phpファイルでDBを更新し、現在の各部屋状況をそれぞれ表示させたいです。

この意見に回答する

ツリーへ TOPへ

<<質問一覧へ



Pick Up Q&A

Q
ログファイルの中の空のデータ行を削除したい
 このエントリーをはてなブックマークに追加 
A
ログのデータ個数(列数)が固定で、空のログが"<><><>"だと既知であれば if ($line === "<><><>") { continue; } で読み飛ばしてもいいのでは? ...

>>続きを読む

まずは配列や文字列の扱いから、じっくり勉強して行きましょう。

▲解説者:岡本(アシアル株式会社 教育コーディネーター兼 システムエンジニア)