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

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

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

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

Q&A

0回答

419閲覧

編集時に表示順の更新がうまくいかない

kuuhaku4262

総合スコア39

PHP

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

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

保存

保存(save)とは、特定のファイルを、ハードディスク等の外部記憶装置に記録する行為を指します。

0グッド

0クリップ

投稿2019/12/20 02:33

編集2019/12/21 04:01

前提・実現したいこと

マスタ(データを新規登録・編集・削除する画面)を作っています。
cakephp2系を使っています。
データを1件削除した際に表示順という項目が連番ではなくなってしまうため、表示順を1から振りなおす機能を追加しました。
以下のソースコードが追加した内容です。
####controller

if ($this->request->is('get')) { $carappliances = $this->carappliances(); $new_order_no = 1; foreach ($aarcppliances as $key => $value){ $aarcppliances[$key]["MtAarCppliance"]["order_no"] = $new_order_no; $new_order_no = $new_order_no + 1; } $this->log($aarcppliances); return json_encode(['success' => 'success', 'data' => $aarcppliances ]); } private function carappliances() { $mtCarApplianceData = $this->MtCarAppliance->find('all', ['order' => 'order_no']); return $mtCarApplianceData; }

###エラーログ
編集した際に出たログです。

( [0] => Array ( [MtAarCppliance] => Array ( [id] => 1 [name] => あ [order_no] => 1 [created_user] => 1 [created_datetime] => 2018-08-08 00:00:00 [modified_user] => 28 [modified_datetime] => 2019-12-20 12:58:33 ) ) [1] => Array ( [MtAarCppliance] => Array ( [id] => 11 [name] => い [order_no] => 2 [created_user] => 28 [created_datetime] => 2019-12-20 10:30:41 [modified_user] => 28 [modified_datetime] => 2019-12-20 12:58:38 ) ) [2] => Array ( [MtAarCppliance] => Array ( [id] => 12 [name] => お [order_no] => 3 [created_user] => 28 [created_datetime] => 2019-12-20 11:56:11 [modified_user] => 28 [modified_datetime] => 2019-12-20 12:58:55 ) ) [3] => Array ( [MtAarCppliance] => Array ( [id] => 10 [name] => う [order_no] => 4 [created_user] => 28 [created_datetime] => 2019-12-20 09:24:02 [modified_user] => 28 [modified_datetime] => 2019-12-20 13:00:31 ) ) [4] => Array ( [MtAarCppliance] => Array ( [id] => 13 [name] => え [order_no] => 5 [created_user] => 28 [created_datetime] => 2019-12-20 11:56:18 [modified_user] => 28 [modified_datetime] => 2019-12-20 13:04:48 ) ) ) 同じものがもう一つありました。

###アップデートに関する部分のソースコード
####index.js

self.updateList = function() { openLoadingModal(); $.getJSON( "/car-maintenance/MtCarAppliances/search", function( data ) { if (data.success) { data.data = addEventToArray(data); self.carappliances( data.data); } else { openDialog('.dialog', 'データ取得に失敗しました。', 'warn'); } closeLoadingModal(); }); };

###テーブルの構造

論理名 物理名        データ型
設備名 name        varchar
表示順 order_no       integer
登録者 created_user    integer
登録日時 created_datetime timestamp
更新者 modified_user integer
更新日時 modified_datetime timestamp

実際に画面に表示しているものは設備名と表示順だけです。

発生している問題・エラーメッセージ

削除時にはちゃんと表示順が更新されて連番になりました。
しかし編集で表示順を変更すると変更後の表示順+1になってしまいます。
なので編集時にちゃんと指定した表示順に変更されるようにしたいです。
しかし、原因が分かりません。
この場合どのようなことが考えられるのでしょうか?

試したこと

上記のソースコードの位置を変更したりしましたが、何も変わらなかったです。
1行目の['order' => 'order_no']を消してみましたが何も変わらなかったです。
$this->logで確認したところ、データの件数*2回実行されていてどのデータも間違った状態で保存されていました。

補足情報(FW/ツールのバージョンなど)

足りない情報などがありましたら、コメントで教えていただけるとありがたいです。
この機能を追加する前の状態は以下のような感じでした。
1.削除しても表示順が更新されない。
2.編集で表示順を変えると、表示順が他のデータとダブってしまう。
3.ダブった状態でも新規登録時はデータの件数を元に新しい表示順を埋め込むためおかしくなります。

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

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

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

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

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

Calmar

2019/12/20 03:12

テーブルの構造と、ログの追記をお願いします。
kuuhaku4262

2019/12/20 04:09

了解しました。 ご指摘、ありがとうございます。
Calmar

2019/12/20 04:57 編集

order_noは連番になっている様ですので、そのまま表示(更新)すれば良いかと思いますが、 他に問題点があるのでしょうか?
kuuhaku4262

2019/12/20 04:59

編集で表示順が3のものを1に変更しようとしても1にならず、2になったり変わらなかったりしてしまっています。
Calmar

2019/12/20 07:10

編集=更新ですか? 更新時のクエリーを確認してみて下さい。 先程のログと差異がありませんか?
kuuhaku4262

2019/12/20 07:32

クエリーというのはどのように確認するのでしょうか? ログなのですが、間違えて一つ前のものを載せてしまいました。 ですので、最新のものに修正しました。 書いてある場所は違いますが、同じ動きをするように場所を移しました。
Calmar

2019/12/20 08:23

(上記に記載ありませんが)どこかでupdateしているんですよね? そのupdate文をご確認下さい。 確認方法はマニュアル等参考に。 もし想定と違うupdate文になっているなら、記載された部分ではなく、update処理が間違っているのです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問