###前提・実現したいこと
現在CodeIgniterでPHPの勉強をしています。
DBにあるデータの更新を行う処理を追加しようとしています。
登録と更新は同一の画面で行いたいと考えています。
そのため、データの登録時はフォームに初期値がない状態、更新時はフォームに初期値をDBの値が入っている状態にしたいです。
処理のイメージはついていてもコードの書き方がわかっていない状態です。
下記のコードのコメントアウトしている箇所にどのようなコードを書けば良いのかご教授お願いします。
割愛している部分もありますのでもし、不明点がありましたらご質問お願いします。
処理としてやりたいことを大まかに下記にまとめました。
登録:「フォームの情報をカラムに当てはめる(初期値はない)→DBにinsert→トップ画面に戻る」
更新:「トップ画面にあるデータをクリック(IDを取得)→取得したIDからをDBの値を取得→フォームに初期値として入力しておく→(内容変更)→フォームの情報をカラムに当てはめる→DBにupdate→トップ画面に戻る」
humanテーブル。id,name,memoで構成されていてidはオートインクリメントになっています。
|id|name|memo|
|1|satou |abcd |
|2|katou |asdf |
|3|kudou| aaaa |
###該当のソースコード
PHP
1<?php 2 defined('BASEPATH') OR exit('No direct script access allowed'); 3?> 4<!DOCTYPE html> 5<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> 6<head> 7 <meta charset="UTF-8"> 8 <link rel='stylesheet' type='text/css' href='/css/common.css'> 9 <link rel='stylesheet' type='text/css' href='/css/simplePagination.css'> 10</head> 11<body> 12<html lang="ja"> 13 <title>トップ画面(view)</title> 14 15 <div class="main-view"></div> 16 <div class="is-search-block util-float-clear"> 17 18 <form action="index.php/Top/register"> 19 <div> 20 <button class="btn btn-lg">新規登録</button> 21 </div> 22 </form> 23</div> 24 <header> 25 <h2 class="page-title">データ一覧</h2> 26 </header> 27 <div class="scroll-table-wrap"> 28 <table id="js-search-table" class="table table-striped table-bordered table-hover scroll-table""> 29 <thead> 30 <tr> 31 <th>ID</th> 32 <th>名前</th> 33 <th>備考</th> 34 </tr> 35 </thead> 36 <tbody> 37 <form method="post" action=""> 38<?php 39 40 foreach ($human as $vals){ 41 echo "<tr>"; 42 foreach($vals as $val){ 43 echo "<td>".htmlspecialchars($val)."</td>"; 44 } 45 echo "</tr>"; 46 } 47?> 48 </form> 49 </tbody> 50 </table> 51 </div> 52 <div id="paging"></div> 53 54<script> 55$("#paging").pagination(); 56 57$("#js-search-table td").click( 58 function() { 59 // IDの部分を渡したい 60 location.href = 'index.php/Top/rewrite?id=' + $(this).parent().get(0).id; 61 }); 62</script> 63</body> 64</html>
PHP
1<?php 2defined('BASEPATH') OR exit('No direct script access allowed'); 3 4class Top extends CI_Controller { 5 6 public function index() 7 { 8 $this->load->database(); 9 $query = $this->db->query('SELECT * FROM human'); 10 $date = array(); 11 12 foreach ($query->result() as $row) 13 { 14 $date['human'][] = array('id'=>$row->id, 'name'=>$row->name, 'memo'=>$row->memo); 15 } 16 $this->load->view('top',$date); 17 } 18 19 public function register() 20 { 21 // フラグ 22 $titleDate['title'] = 'register'; 23 24 $this->load->view('register', $titleDate); 25 } 26 27 public function rewrite() 28 { 29 // トップ画面から取得したidでデータを絞り込む 30 // name,memoをregisterのビューに値として渡す 31 32 $this->load->view('register', $date); 33 }
PHP
1<?php 2 defined('BASEPATH') OR exit('No direct script access allowed'); 3 ?> 4<!DOCTYPE html> 5<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> 6<head> 7<meta charset="UTF-8"> 8</head> 9<body> 10<html lang="ja"> 11<head> 12 <title> 13<?php 14 if($title == "register"){ 15 echo "登録画面"; 16 } elseif($title == "rewrite"){ 17 echo "更新画面"; 18 } else { 19 echo "不正画面"; 20 } 21?> 22 </title> 23</head> 24<body> 25 26<table id="user_base" class="table table-bordered"> 27<thead> 28<tr> 29<th class="util-align-left" colspan="3">データの情報</th> 30</tr> 31</thead> 32<tbody> 33<tr> 34<td class="is-contents">名前</td> 35<td class="is-select-form"> 36<!-- if($title == "rewrite")のとき、valueにコントローラで取得した値を表示したい --> 37<input type="text" name="name" th:errorclass="fieldError" value="" placeholder="なまえ" /> 38</td> 39<td class="is-tips"></td> 40</tr> 41<tr> 42<td class="is-contents">備考</td> 43<td class="is-select-form"> 44<!-- if($title == "rewrite")のとき、valueにコントローラで取得した値を表示したい --> 45<input class="is-textform-defult form-control" type="text" name="memo" value="" placeholder="何かあれば" th:errorclass="fieldError" /> 46</td> 47<td class="is-tips" /> 48</tr> 49</tbody> 50<?php 51 if($title == "register"){ 52 echo '<form method="post" action="index.php/Top/insert">'; 53 echo '<button class="btn">登録</button>'; 54 echo '</form>'; 55 56 } elseif($title == "rewrite"){ 57 echo '<form method="post" action="index.php/Top/update">'; 58 echo '<button class="btn">更新</button>'; 59 echo '</form>'; 60 } 61?> 62</form> 63</table> 64</div> 65 66<div class="form-inline action-layout-block"> 67 68<form action="/"> 69<button class="btn">トップ</button> 70</form> 71</div> 72</body> 73</html>
###補足情報(言語/FW/ツール等のバージョンなど)
MAMP
CodeIgniter
回答2件
あなたの回答
tips
プレビュー