Lu-yeom / mentor-program-5th-self-learning

0 stars 0 forks source link

week12(2021/6/28~2021/7/4) #11

Open Lu-yeom opened 3 years ago

Lu-yeom commented 3 years ago

日期:110年6月29日20:30~22:30
今日進度:[BE101] 用 PHP 與 MySQL 學習後端基礎:真正的實戰:留言板 - API 篇


課程筆記:

一、實作無會員機制的留言板 API:列出所有文章

?>

加上```header('Content-type:application/json;charset=utf-8');```,讓瀏覽器知道要取得json格式的物件  
json格式如下:  
```{"comments":[{"id":1,"username":"aaa","content":"123"},{"id":2,"username":"bbb","content":"456"}]}```  

* 自index.php取得query部分語法,不同的是把comments的結果放在陣列裡,裡面再建立陣列,產出json格式的物件,設置header得到comments的API,便可以用前端串接起來  

<?php require_once("conn.php");

$page = 1; if (!empty($_GET['page'])) { $page = intval($_GET['page']); } $items_per_page = 5; $offset = ($page - 1) * $items_per_page;

$stmt = $conn->prepare( 'select '. 'C.id as id, C.content as content, '. 'C.created_at as created_at, U.nickname as nickname, U.username as username '. 'from comments as C ' . 'left join users as U on C.username = U.username '. 'where C.is_deleted IS NULL '. 'order by C.id desc '. 'limit ? offset ? ' ); $stmt->bind_param('ii', $items_per_page, $offset); $result = $stmt->execute(); if (!$result) { die('Error:' . $conn->error); }

$result = $stmt->get_result();

$comments = array(); while($row = $result->fetch_assoc()) { array_push($comments, array( "id"=> $row['id'], "username"=> $row['username'], "nickname"=> $row['nickname'], "content"=> $row['content'], "created_at"=>$row['created_at'] )); }

$json = array( "comments" => $comments );

$response = json_encode($json); header('Content-type:application/json;charset=utf-8'); echo $response;

?>


二、實作 API:新增文章  
* 利用handle_add_comment.php新增api_add_comment.php  

if ( empty($_POST['content']) ) { $json = array( "ok" => false, "message"=> "Please input content" );

$response = json_encode($json);
echo $response;
die();

}

if (!$result) { $json = array( "ok" => false, "message"=>$conn->error );

$response = json_encode($json);
echo $response;
die();

}

$json = array( "ok" => true, "message"=> "Success!" );


在之前如果要顯示錯誤訊息,是導向到另外一個顯示錯誤的頁面,但API是直接交換錯誤或正確訊息  
```{"ok":false,"message":"Please input content"}```  
Lu-yeom commented 3 years ago

日期:110年6月30~7月4日
進度:[FE201] 前端中階:那些前端會用到的工具們 - jQuery


課程筆記:

一、jQuery 基礎示範
要實現jQuery功能,首先在html中設定script來源為jQuery

<!DOCTYPE HTML>

<html>
  <head>
    <meta charset="utf-8" />
    <title>表單</title>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <script src="https://code.jquery.com/jquery-3.6.0.js">
    </script>

三、實作Todo-List

四、 jQuery 與 Ajax
Ajax可以讓瀏覽器向Server請求資料而不需費時等待。當瀏覽器接收到response之後,新的內容就會即時地添入原本網頁,無須整個頁面重新整理。

五、Bootstrap

六、Bootstrap 的網格系統
Bootstrap 透過其網格系統 (grid system) 架構, 讓前端設計師開發在各種裝置 (手機, 平板, 桌機) 均可方便瀏覽的網頁, 即所謂自適應 (responsive) 網頁設計, 不需要來回拉動卷軸。常見為12欄位(手機版面)。

<body>
  <div class="container">
    <div class="row">
      <div class="col-12">
        <div class="box">box1</div>
      </div>
      <div class="col-12">
        <div class="box">box2</div>
      </div>
      <div class="col-12">
        <div class="box">box3</div>
      </div>
    </div>
  </div>

設定平板版面:<div class="col-12 col-md-4">
網格系統可以在不同解析度裡設定要多少網格,並且任意安排位置。