忍者ブログ

からすまる日誌 mySQL

授業ノートのまとめ

高度(12) 予約システム(3)

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

高度(12) 予約システム(3)

でた!h1のmarginのつきぬけ
昨日やったのがもう出るとは縁起がいい
 
 
h1 marginをとったらぴたっとした
 

エラーでものすごく横長の巨大バス出現
飛行機か
 
 
flex-wrap:wrap;
これを入れると折れ曲がる
この一行が抜けていた
 
 
上側にだけ角丸を入れてバスっぽくする
  
ここまで

seat.php
 
<!DOCTYPE html>
<html lang="ja">
 <head>
  <meta charset="UTF-8">
  <title>座席予約</title>
  <link rel="stylesheet" href="css/style.css">
  <script src="../jquery-3.4.1.min.js"></script>
 </head>
 <body>
  <header>
   <h1>本日、明日、明後日のバスの予約</h1>
   <img src="car_bus.png">
  </header>
 
  <div id="container">
   <p>
    <select id="ymd">
     <option value="">日付の選択</option>
     <option value="2020-03-14">2020-03-14</option>
     <option value="2020-03-15">2020-03-15</option>
     <option value="2020-03-16">2020-03-16</option>
    </select>
   </p>
   
   <div id="front">進行方向↑</div>
   <div id="bus">
    <div>1</div>
    <div>2</div>
    <div>3</div>
    <div>4</div>
    <div>5</div>
    <div>6</div>
    <div>7</div>
    <div>8</div>
   </div>
   <p id="end"><button id="b1">決定</button></p>
  </div>

  <script src="js/seat.js"></script>  
 </body>
</html>
 

style.css
 
body{
 background-color: #eee;
 margin:0;
 padding:0;
}
h1{
 margin:0;
 padding:0;
}
header{
 margin: 0 auto;
 text-align:center;
 background-color: #ccc;
}
header img{
 width:100px;
}
#container{
 width: 80%;
 margin: auto;
}
#front{
 text-align:center;
 /*border: solid 1px #555;*/
 padding: 1rem;
 border-radius: 2rem 2rem 0 0;
 background-color: #fff;
}
#bus{
 background-color: #fff;
 display:flex;
 flex-wrap:wrap;
 box-sizing: border-box;
 padding: 1rem;
}
#bus div{
 width: 22.5%;
 line-height: 3;
 text-align:center;
 box-sizing: border-box;
 border: solid 1px #555;
 background: #fff;
 margin:1rem 0;
}
#bus div:nth-child(4n+2){//0+2で2つめの右、4+2で6つめの右・・・とスペースを入れる
 margin-right: 10%;
}


#end{
 text-align: center;
}
 

get_seat.php
 
<?php
if(empty($_GET["ymd"])){
 exit();
}
require_once("../config.php");

$sql="SELECT * from seats WHERE ymd=:ymd";
$stmt = $pdo->prepare($sql);
$stmt->bindValue(":ymd",$_GET["ymd"],PDO::PARAM_STR);
$stmt->execute();

$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

$json = json_encode($data);//api
echo $json;//こっそりみにいくがechoしてないと見れない
?>
 
 
http://localhost/php/makino/highwaybus/api/get_seat.php?ymd=2020-03-14
を入力
 
 
さてapiをつくってからajaxをしましょう
 

seat.js
 
呼び出すきっかけとしてセレクトの値が変化したときをトリガーにしたい
ajax通信をするのはセレクトが変化したとき
 
チェンジイベントが起きたときに実行
$('#ymd').on('change',function(){
});
 

$.ajaxのパーツは3つ
①通信情報。オブジェクトとして渡す
オブジェクトなんで丸括弧の中に中かっこを書いておく
②成功の場合
データが戻ってくるはずなのでとりあえずdとかてきとうなのに入れる。名前は何でもいい。
③失敗の場合
 
構造はこうなる
 
 $('#ymd').on('change',function(){
  $.ajax({})
  .done(function(d){
 
  })
  .fail(function(){
 
  });
 });
 
①のオブジェクトの中身
1.どこと通信するのか カンマで区切る
2.通信タイプ カンマで区切る
3.パラメータ。複数のときもある
ほんとはわかりやすいシステムを作るときは
y,m,dをちぎって別々に送ってあとでくっつける
というのは
うっかり区切り文字を-じゃなくて/にするとか
日本語を挟むとかいうのがいるかもしれない
今回はやらないけど
パラメータが1つでもオブジェクトとしてわたす
よって{}でくるむ
 
javascriptで#ymdのとこのvalueをとってきてくださいという
data:{'ymd':$('#ymd').val()},
 
4.どのタイプの通信か
 
とりあえずここまで
 

seat.js
 
$(function(){
 //console.log("hoge");
 $('#ymd').on('change',function(){
  $.ajax({
   url:'api/get_seat.php',
   type:'get',
   data:{'ymd':$('#ymd').val()},
   dataType:'json',
  })
  .done(function(d){
   console.log(d);
  })
  .fail(function(){
   alert('NG');
  });
 });

});
 
PR

コメント

ただいまコメントを受けつけておりません。

プロフィール

HN:
karasumaru
性別:
非公開

P R