Skip to content

Instantly share code, notes, and snippets.

@summer10920
Last active May 12, 2020 14:19
Show Gist options
  • Save summer10920/bfae831ea8371a32c84ef1c16cf538c6 to your computer and use it in GitHub Desktop.
Save summer10920/bfae831ea8371a32c84ef1c16cf538c6 to your computer and use it in GitHub Desktop.
20200513-php-sampleclass-1
<?php
// print_r($_POST);
if(!empty($_POST)){
$sql = "INSERT INTO ch8_animal VALUES(NULL,'".$_POST['name']."',".$_POST['weight'].",'".$_POST['info']."',NOW())"; //step1 先做好SQL語言
$db->query($sql); //執行語法,透過PDO物件導向到query
header("location:?page=show_all");
}
?>
<div style="width:50%;margin:0 auto;background-color:#eee;text-align:center;padding:2% 5%">
<h1>新增動物資料ver1</h1>
<form method="post">
<h3>動物名<br><input type="text" name="name" style="width:50%"></h3>
<h3>重量 <br><input type="number" name="weight" style="width:50%"></h3>
<h3>介紹 <br>
<textarea name="info" rows="10" style="width:50%"></textarea>
</h3>
<input type="submit" value="新增">
<input type="reset" value="重置">
</form>
</div>
<?php
// print_r($_POST);
if(!empty($_POST)){
//$sql = "INSERT INTO ch8_animal VALUES(NULL,'".$_POST['name']."',".$_POST['weight'].",'".$_POST['info']."',NOW())"; //step1 先做好SQL語言
//$sql = "UPDATE ch8_animal SET name='".$_POST['name']."', weight=".$_POST['weight'].", info='".$_POST['info']."' WHERE id=".$_POST['id'];
$sql="DELETE FROM `ch8_animal` WHERE id=".$_POST['id'];
$db->query($sql); //執行語法,透過PDO物件導向到query
header("location:?page=show_all");
}
?>
<div style="width:50%;margin:0 auto;background-color:#eee;text-align:center;padding:2% 5%">
<h1>刪除動物資料ver1</h1>
<form method="post">
<h3>編號<br><input type="number" name="id" style="width:50%"></h3>
<input type="submit" value="刪除">
<input type="reset" value="重置">
</form>
</div>
<?php
$sql="SELECT * FROm ch8_animal";
$row=$db->query($sql)->fetchAll();
?>
<table width=100%>
<tr>
<td>編號</td>
<td>動物名</td>
<td>重量</td>
<td>簡介</td>
<td>更新日期</td>
</tr>
<?php
foreach($row as $data){
?>
<tr>
<td><?=$data['id']?></td>
<td><?=$data['name']?></td>
<td><?=$data['weight']?></td>
<td><?=$data['info']?></td>
<td><?=$data['date']?></td>
</tr>
<?php
}
?>
</table>
<?php
// print_r($_POST);
if (!empty($_POST)) {
//$sql = "INSERT INTO ch8_animal VALUES(NULL,'".$_POST['name']."',".$_POST['weight'].",'".$_POST['info']."',NOW())"; //step1 先做好SQL語言
$sql = "UPDATE ch8_animal SET name='" . $_POST['name'] . "', weight=" . $_POST['weight'] . ", info='" . $_POST['info'] . "', date=NOW() WHERE id=" . $_POST['id'];
$db->query($sql); //執行語法,透過PDO物件導向到query
header("location:?page=show_all");
}
?>
<div style="width:50%;margin:0 auto;background-color:#eee;text-align:center;padding:2% 5%">
<h1>修改動物資料ver1</h1>
<form method="post">
<h3>編號<br><input type="number" name="id" style="width:50%"></h3>
<h3>動物名<br><input type="text" name="name" style="width:50%"></h3>
<h3>重量 <br><input type="number" name="weight" style="width:50%"></h3>
<h3>介紹 <br>
<textarea name="info" rows="10" style="width:50%"></textarea>
</h3>
<input type="submit" value="修改">
<input type="reset" value="重置">
</form>
</div>
<?php
/*
if(!empty($_GET['mdy'])) $layout="mdy";
else $layout="list"; 可成為三元運算子
*/
$layout = (!empty($_GET['mdy'])) ? "mdy" : "list";
switch ($layout) {
case 'list':
include_once('2_main.php');
break;
case 'mdy':
include_once('2_mdy.php');
break;
}
?>
<?php
if (!empty($_POST)) { //如果需要新增資料
$sql = "INSERT INTO ch8_animal VALUES(NULL,'" . $_POST['name'] . "'," . $_POST['weight'] . ",'" . $_POST['info'] . "',NOW())"; //step1 先做好SQL語言
$db->query($sql); //執行語法,透過PDO物件導向到query
//如果你擔心F5會一直刷新增,可以強迫轉址把POST洗掉
header("location:?page=crud_animal");
}
if(!empty($_GET['del'])){ //這裡因為GET不只一個變數,所以我們指到陣列裡面的變數
$sql="DELETE FROM `ch8_animal` WHERE id=".$_GET['del'];
$db->query($sql); //執行語法,透過PDO物件導向到query
header("location:?page=crud_animal");
}
$sql = "SELECT * FROm ch8_animal"; //帶出所有資料
$row = $db->query($sql)->fetchAll();
?>
<table width=100%>
<tr>
<td>編號</td>
<td>動物名</td>
<td>重量</td>
<td>簡介</td>
<td>更新日期</td>
<td>操作</td>
</tr>
<!--start-->
<tr>
<td colspan=6>
<hr>
</td>
</tr>
<form method="post">
<tr>
<td>#</td>
<td><input type="text" name="name"></td>
<td><input type="number" name="weight"></td>
<td><input type="text" name="info" style="width:100%"></td>
<td><?= date("Y-m-d H:i:s") ?></td>
<td>
<input type="submit" value="新增">
<input type="reset" value="重置">
</td>
</tr>
</form>
<tr>
<td colspan=6>
<hr>
</td>
</tr>
<!--end-->
<?php
foreach ($row as $data) {
?>
<tr>
<td><?= $data['id'] ?></td>
<td><?= $data['name'] ?></td>
<td><?= $data['weight'] ?></td>
<td><?= $data['info'] ?></td>
<td><?= $data['date'] ?></td>
<td>
<button onclick="location.href='?page=crud_animal&mdy=<?= $data['id'] ?>'">修改</button>
<button onclick="location.href='?page=crud_animal&del=<?= $data['id'] ?>'">刪除</button>
</td>
</tr>
<?php
}
?>
</table>
<?php
if (!empty($_POST)) { //如果取得POST,進行修改上傳
echo $sql = "UPDATE ch8_animal SET name='" . $_POST['name'] . "', weight=" . $_POST['weight'] . ", info='" . $_POST['info'] . "', date=NOW() WHERE id=" . $_GET['mdy'];
$db->query($sql); //執行語法,透過PDO物件導向到query
header("location:?page=crud_animal"); //更新完轉走
}
$sql = "SELECT * FROm ch8_animal WHERE id=" . $_GET['mdy']; //帶出指定之資料,為了塞預設值
$row = $db->query($sql)->fetch();
?>
<div style="width:50%;margin:0 auto;background-color:#eee;text-align:center;padding:2% 5%">
<h1>修改動物資料ver2</h1>
<form method="post">
<h3>編號<?= $row['id'] ?></h3>
<h3>動物名<br><input type="text" name="name" style="width:50%" value="<?= $row['name'] ?>"></h3>
<h3>重量 <br><input type="number" name="weight" style="width:50%" value="<?= $row['weight'] ?>"></h3>
<h3>介紹 <br>
<textarea name="info" rows="10" style="width:50%"><?= $row['info'] ?></textarea>
</h3>
<input type="submit" value="修改">
<input type="reset" value="重置">
</form>
</div>
<?php
if (!empty($_POST) && !is_array($_POST['name'])) { //這是新增來的
$sql = "INSERT INTO ch8_animal VALUES(NULL,'" . $_POST['name'] . "'," . $_POST['weight'] . ",'" . $_POST['info'] . "',NOW())"; //step1 先做好SQL語言
$db->query($sql); //執行語法,透過PDO物件導向到query
header("location:?page=crud_page");
}
if (!empty($_POST) && is_array($_POST['name'])) { //這是從集體修改來的
// print_r($_POST);
foreach ($_POST['name'] as $key => $value) { //目的是為了取得id
$chg = "";
if ($_POST['name'][$key] != $_POST['old_name'][$key]) $chg .= "name='" . $_POST['name'][$key] . "',"; //如果有變化就加入chg行列
if ($_POST['weight'][$key] != $_POST['old_weight'][$key]) $chg .= "weight=" . $_POST['weight'][$key] . ","; //如果有變化就加入chg行列
if ($_POST['info'][$key] != $_POST['old_info'][$key]) $chg .= "info='" . $_POST['info'][$key] . "',"; //如果有變化就加入chg行列
if (!empty($chg)) { //如果chg不是空的,執行更新語法順便調整date
$sql = "UPDATE `ch8_animal` SET " . $chg . "date=NOW() WHERE id=" . $key . ";";
$db->query($sql); //執行語法,透過PDO物件導向到query
}
}
header("location:?page=crud_page&np=".$_GET['np']);
}
if (!empty($_GET['del'])) { //這裡因為GET不只一個變數,所以我們指到陣列裡面的變數
$sql = "DELETE FROM `ch8_animal` WHERE id=" . $_GET['del'];
$db->query($sql); //執行語法,透過PDO物件導向到query
header("location:?page=crud_page");
}
//for read
//算出page navbar how many
$sql = "SELECT COUNT(*) FROM ch8_animal"; //會取得資料有幾筆
$row = $db->query($sql)->fetch();
$total = $row[0]; //算出一共有幾筆資料
/*//如果是用下列方式,這樣就是吃效能
$sql="SELECT * FROM ch8_animal";
$row=$db->query($sql)->fetchAll();
$total=count($row);
*/
$many = ceil($total / 5); //算出這些資料需要用幾頁來呈現
//算出limit begin
$nowpage = (empty($_GET['np'])) ? 1 : $_GET['np']; //需要知道目前是第幾頁
$begin = ($nowpage - 1) * 5; // limit 0 -> page1 , limit 5 ->page2
//做出NavBar array
$pageNav["<"] = ($nowpage == 1) ? 1 : $nowpage - 1;
for ($i = 1; $i <= $many; $i++) $pageNav[$i] = $i; //做一個導覽陣列
$pageNav[">"] = ($nowpage == $many) ? $many : $nowpage + 1;
//read by limit
$sql = "SELECT * FROM ch8_animal LIMIT " . $begin . ",5";
$row = $db->query($sql)->fetchAll();
?>
<table width=100%>
<tr>
<td>編號</td>
<td>動物名</td>
<td>重量</td>
<td>簡介</td>
<td>更新日期</td>
<td align=center>操作</td>
</tr>
<!--start-->
<tr>
<td colspan=6>
<hr>
</td>
</tr>
<form method="post">
<tr>
<td>#</td>
<td width=10%><input type="text" name="name"></td>
<td width=10%><input type="number" name="weight"></td>
<td width=60%><input type="text" name="info" style="width:100%"></td>
<td width=10%><?= date("Y-m-d H:i:s") ?></td>
<td align=center>
<input type="submit" value="新增">
<input type="reset" value="重置">
</td>
</tr>
</form>
<tr>
<td colspan=6>
<hr>
</td>
</tr>
<!--end-->
<form method="post">
<?php
foreach ($row as $data) {
?>
<tr>
<td>
<?= $data['id'] ?>
</td>
<td>
<input type="text" name="name[<?= $data['id'] ?>]" value="<?= $data['name'] ?>">
<input type="hidden" name="old_name[<?= $data['id'] ?>]" value="<?= $data['name'] ?>">
</td>
<td>
<input type="number" name="weight[<?= $data['id'] ?>]" value="<?= $data['weight'] ?>">
<input type="hidden" name="old_weight[<?= $data['id'] ?>]" value="<?= $data['weight'] ?>">
</td>
<td>
<input type="text" name="info[<?= $data['id'] ?>]" style="width:100%" value="<?= $data['info'] ?>">
<input type="hidden" name="old_info[<?= $data['id'] ?>]" style="width:100%" value="<?= $data['info'] ?>">
</td>
<td><?= $data['date'] ?></td>
<td align=center>
<button onclick="location.href='?page=crud_page&del=<?= $data['id'] ?>'">X</button>
</td>
</tr>
<?php
}
?>
<tr>
<td colspan=6 align=center>
<p><?php
foreach ($pageNav as $key => $value) echo ' <a href="?page=crud_page&np=' . $value . '">' . $key . '</a> ';
?></p>
<input type="submit" value="全部更新">
</td>
</tr>
</form>
</table>
<?php
$db = new PDO("mysql:host=127.0.0.1;dbname=php_study;charset=utf8", "root", "");
if (!empty($_GET['page'])) $body = $_GET['page'];
else $body = 'main';
//如果不想讓人知道php的檔案名稱,就多一個判斷來做文字對應
switch ($body) {
case 'main':
$myurl = "main.php";
break;
case 'show_all':
$myurl = "1_list.php";
break;
case 'add_animal':
$myurl = "1_add.php";
break;
case 'mdy_animal':
$myurl = "1_mdy.php";
break;
case 'del_animal':
$myurl = "1_del.php";
break;
case 'crud_animal':
$myurl = "2_list.php";
break;
case 'crud_page':
$myurl = "3_list.php";
break;
}
?>
<button onclick="document.location.href='./'">回首頁</button>
<form method="GET">
<p>
<button name="page" value="show_all">顯示(1)</button>
<button name="page" value="add_animal">新增(1)</button>
<button name="page" value="mdy_animal">修改(1)</button>
<button name="page" value="del_animal">刪除(1)</button>
</p>
</form>
<p><button onclick="document.location.href='?page=crud_animal'">CRUD(2)</button></p>
<p><button onclick="document.location.href='?page=crud_page'">CRUD(3)</button></p>
<hr />
<?php
include($myurl);
?>
<h1>這裡是主畫面內容</h1>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment