質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

2回答

465閲覧

データの更新のためにDBの値をビュー→コントローラ→ビューに渡したい。

Ika3242

総合スコア14

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

CodeIgniter

CodeIgniterは、PHP向けオープンソースのWebアプリケーションフレームワークです。CodeIgniterは覚える構文が少なく、自由度も高いため、PHPを理解していれば構築が簡単です。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2017/09/28 08:16

###前提・実現したいこと
現在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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2017/09/28 08:22

フォーム送信・DB取り扱いの基本の流れと処理だと思うので、フレームワークを使わず、生PHPで実装してみてからの方がイメージがつくと思います。
m.ts10806

2017/09/28 08:23

「PHP CRUD」で調べると結構でてきますよ。
Ika3242

2017/10/02 00:43

調べたら参考になるものがありました。自分で調べる単語もあまりよくなかったみたいです。。。教えていただきありがとうございます。
guest

回答2

0

ベストアンサー

一度、Codeigniterチュートリアルを読みましょう。
やりたいことが説明されています。

投稿2017/09/28 09:24

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ika3242

2017/10/02 00:42

チュートリアルを見て解決することができました。ありがとうございます。
guest

0

INSERT INTO ~ ON DUPLICATE KEY UPDATE
で処理すればユニークなキーをベースに
競合がなければINSERT、競合していたらUPDATEが実行されます

詳細はユーザーがサーバーに何を送れるかと
SQL側のテーブル構成がどうなっているか仕様を決めないと
説明できません

投稿2017/09/28 08:31

yambejp

総合スコア114769

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Ika3242

2017/10/02 00:44

自分の説明が不足している点など多々あり申し訳ございません。ご指摘今後にも活かせるよう努力いたします。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問