nacl30d/akio

View on GitHub
v2.0/index.php

Summary

Maintainability
A
1 hr
Test Coverage
<?php
    require_once('./conf/functions.php');
    session_start();

    if ($_SERVER["REQUEST_METHOD"] == "POST") {
        #テーブルidが推測されにくいユニークなidとなるように作成
        $id = uniqid("",1);

        $pdo = connectDB();

        $sql = "INSERT INTO TimeTables VALUES (:id, :name, :note, :passwd, now());";
        $statement = $pdo -> prepare($sql);
        $result = $statement->execute([
            ':id' => $id,
            ':name' => h($_POST['name']),
            ':note' => h($_POST['note']),
            ':passwd' => h($_POST['passwd'])
            ]);
        if(!$result){
            exit('DB Error (failed to add record)'); //入に失敗したエラーメッセージ
        }

        for($i = 0; $i < 5; $i++) {
            $sql = "INSERT INTO DaysOfWeek (no, name, tableId) VALUES (:no, :name, :id);";
            $statement = $pdo -> prepare($sql);
            $result = $statement->execute([
                ':no' => 'd'.$i,
                ':name' => h($_POST['d'.$i]),
                ':id' => $id
                ]);
            if(!$result){
                exit('DB Error (failed to add record)');
            }
        }

        for($i = 0; $i < 6; $i++) {
            $sql = "INSERT INTO Units (no, name, tableId) VALUES (:no, :name, :id);";
            $statement = $pdo -> prepare($sql);
            $result = $statement->execute([
                ':no' => 'u'.$i,
                ':name' => h($_POST['u'.$i]),
                ':id' => $id
                ]);
            if(!$result){
                exit('DB Error (failed to add record)');
            }
        }

        #次のページにリダイレクト
        $redirect = "./result.php?id=" . $id; //フォームページはidごとに動的なURLを発行
        header("Location: $redirect");
        exit();
    }

?>


<!DOCTYPE html>
<html lang="ja">
<head>
    <?php include('./meta.html'); ?>
    <title>AKIO</title>
</head>
<body>
<?php include('./header.html'); ?>
<div class="section no-pad-bot" id="index-banner">
<div class="container">

    <h1 class="header center green-text">ようこそ!</h1>

     <div class="row center">
         <p class="header col s12 light">今すぐ時間割を作成する</p>
        <a href="./#create" class="btn-large waves-effect waves-light orange">Create now</a>
     </div>

</div>
</div>

<div class="container">
<div class="row center">
    <div id="about" class="col s12">
          <h2 class="headline headline__title">About</h2>
    <div class="card horizontal">
      <div class="card-image">
        <img src="/img/OGP.png" alt="AKIO" />
      </div>
    </div>
        <p>空きコマをみんなで合わせる「空きコマ調整ツール」その名もAKIOくん。
        現在開発途中のβ版です。最低限の機能を実装したので公開していますが、まだまだ至らないところも多いと思います。温かい目で見守っていてください。</p>
    </div>
</div>

<div class="row center">
    <div id="howto" class="col s12 l12">
        <h2 class="headline headline__title">使い方</h2>
        <p>使い方は簡単!代表者が時間割を作成してURLを共有。あとはみんながそれに空きコマ情報を登録するだけ!</p>
    </div>

    <div class="col s12 m7 l3">
        <h5 class="green-text">step.1</h5>
        <div class="card">
            <div class="card-image">
              <img src="/img/step1.png" alt="step1">
              <!-- <span class="card-title">step. 1</span> -->
            </div>
            <div class="card-content">
              <p>登録不要で利用可能!まずは幹事がタイトルと内容を入力して時間割を作成!</p>
            </div>
        </div>
    </div>
    <div class="col s12 m7 l3">
        <h5 class="green-text">step.2</h5>
        <div class="card">
            <div class="card-image">
              <img src="/img/step2.png" alt="step2">
              <!-- <span class="card-title">step. 2</span> -->
            </div>
            <div class="card-content">
              <p>時間割を作ったら、LINEやTwitterを利用して、URLをみんなに知らせよう!</p>
            </div>
        </div>
    </div>
    <div class="col s12 m7 l3">
        <h5 class="green-text">step.3</h5>
        <div class="card">
            <div class="card-image">
              <img src="/img/step3.png" alt="step3">
              <!-- <span class="card-title">step. 3</span> -->
            </div>
            <div class="card-content">
              <p>入力はタップで簡単!空いている時間をタップして予定を入力することができます!</p>
            </div>
        </div>
    </div>
</div>



<div class="row center">
  <div class="col s12">
    <h2 class="headline headline__title">時間割を作成</h2>
  </div>

    <form action="" method="POST">
      <div id="create" class="col s12 m7 l6 ">
        <div class="input-field">
             <input type="text" class="validate" name="name" />
          <label for="icon_prefix">予定のタイトル</label>
        </div>
        <div class="input-field">
          <input type="text" class="validate" name="note" />
          <label for="icon_prefix">内容・コメント</label>
        </div>
        <div class="input-field">
          <input type="password" class="valib" name="passwd" />
          <label for="icon_prefix">幹事パスワード</label>
        </div>
      </div>

      <div class="col s12 m7 l6">
          <table>
          <tbody id="createForm">
                  <!-- ここもAjaxにしちゃう??JSで扱うならクライアントサイドの方が変数の扱いとか楽かも。(2018-01-04) -->
              <?php
                 $dow = array('Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun');
              $unit = array('1', '2', 'Lunch', '3', '4', '5', '6', '7', '8', '9', '10');
              echo '<tr id="day"><th></th>';
              for($i = 0; $i < 5; $i++){
                echo '<th><input type="text" value="'. $dow[$i] .'" name="d'. $i .'" /></th>';
              }
              echo '<td class="clr"><input type="button" value="+" id="addDay" onclick="addCol()" /></td></tr>', PHP_EOL;
              echo '</tr>', PHP_EOL;
              for($i = 0; $i < 6; $i++){
                echo '<tr id="r'. $i .'"><th><input type="text" value="'. $unit[$i] .'" name="u'. $i .'" /></th>';
                for ($j=0; $j < 5; $j++) {
                  echo '<td></td>';
                }
                echo '</tr>', PHP_EOL;
              }
            ?>
          </tbody>
          <tbody>
            <?php
              echo '<td class="clr"><input type="button" value="+" id="addUnit" onclick="addRow()" /></td></tr>', PHP_EOL;
            ?>
          </tbody>
        </table>
      </div>
      <input class="btn" type="submit" value="作成" name="create" />
    </form>
</div>

</div>
<?php include('footer.html'); ?>
</body>
</html>