現在、テキスト入力欄とセレクトボックスが1行でそれが300行くらいあるウェブページがあります。
現在の仕様は入力や選択があればその都度データベースの更新が自動でなされる仕様です。
しかし、いちいち更新していては時間がかかり過ぎるので複数行変更して最後にボタンを一度押せば
一括で更新出来るようにしたいのですが可能でしょうか?当方、素人につき厚かましいですがここを
こう変更するという感じで実際のプログラムをご指導いただけると非常に助かります。
それでは宜しくお願いいたします。m(_ _)m
MySQL5.1テーブル名zaiko zaiko.html zaiko.php controller-zaiko.js の構成です。以下現在の仕様です。
〇●〇zaikoテーブルの構成〇●〇
名前 データ型 照合順序
1 id varchar(9) utf8_unicode_ci
2 name varchar(100) utf8_unicode_ci
3 nouki text utf8_unicode_ci
4 date text utf8_unicode_ci
5 item text utf8_unicode_ci
6 time timestamp on update
〇●〇zaiko.html〇●〇
<!doctype html>
<html lang="ja" ng-app="app">
<head>
<title>在庫</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
</head>
<body ng-controller="MainCtrl" onload="zaiko()">
<table>
<tr ng-controller="DetailCtrl" ng-repeat="zaiko in zaiko">
<td class="left"><input class="input" ng-model="zaiko.name" ng-change="update()"></td>
<td class="right"><select class="selectbox" ng-model="zaiko.nouki" ng-change="update()">
<option value="5">5</option>
<option value="4">4</option>
<option value="3">3</option>
<option value="2">2</option>
<option value="1">1</option>
</select>
</td>
</tr>
</table>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/ …
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/ …
<script src="controller-zaiko.js"></script>
</body>
</html>
〇●〇zaiko.php〇●〇
<?php
$pdo = new PDO('mysql:dbname=db001', 'user', 'pass');
switch ($_SERVER['REQUEST_METHOD']) {
case 'GET':
$st = $pdo->query("SELECT * FROM zaiko ORDER BY id ASC");
echo json_encode($st->fetchAll(PDO::FETCH_ASSOC));
break;
case 'POST':
$in = json_decode(file_get_contents('php://input'), true);
if (isset($in['id'])) {
$st = $pdo->prepare("UPDATE zaiko SET date=:date,item=:item,name=:name,nouki=:nouki,time=:time WHERE id=:id");
} else {
$st = $pdo->prepare("INSERT INTO zaiko(date,item,name,nouki) VALUES(:date,:item,:name,:nouki)");
}
$st->execute($in);
break;
}
〇●〇controller-zaiko.js〇●〇
var app = angular.module('app', ['ngResource']);
app.controller('MainCtrl', function($scope, $resource, $window) {
var zaiko = $resource('zaiko.php', {id: '@id'});
$scope.zaiko = zaiko.query();
$scope.add = function() {
zaiko.save($scope.new_zaiko, function() {
<!--alert("追加しました。");-->
$window.location.reload();
});
};
$scope.koshin = function() {
zaiko.save($scope.new_zaiko, function() {
alert("更新しました。");
$window.location.reload();
});
};
});
app.controller('DetailCtrl', function($scope, $window) {
$scope.update = function() {
$scope.zaiko.$save(function() {
alert("更新しました。");
$window.location.reload();
$.keepPosition.reload();
});
};
$scope.delete = function() {
$scope.zaiko.$save(function() {
alert("削除しました。");
$window.location.reload();
});
};
});
No.2ベストアンサー
- 回答日時:
追伸です。
質問のシステムはたぶん、インターネットに公開しないのシステムと思えるのでいいのですが、外部からアクセスできるWebシステムの場合、セキュリティを重視して作成しないと、サイトが攻撃されてしまいます。
そして、クロスサイトスクリプティング(CSS)やクロスサイトリクエストフォージュリ(CSRF)などにたいする脆弱性対策をきちんとWebシステムに作りこむのは、コーディングが増えて大変な作業になります。
(だから、サイトがサイバー攻撃を受けても、コード修正による対策は困難な作業になりがちです)
そういうセキュリティ面からも、ASP.NET MVC などのフレームワークを使って、サイト構築すれば、自動生成されたコードにセキュリティ対策のコードが埋め込まれたりするので、お勧めです。
C#ではなく、PHPでも同様なフレームワークがあれば、それを選ばれてもいいかもしれません。
No.1
- 回答日時:
>>しかし、いちいち更新していては時間がかかり過ぎるので複数行変更して最後にボタンを一度押せば
一括で更新出来るようにしたいのですが可能でしょうか?
やりたいことを行うプログラムを作れば可能だと思います。
たとえば
1)1つの画面で複数行のデータを一度に更新するには、1つのデータに対応して、画面のテキストボックス等を1つ対応させて入力する。
1画面で20データの表示なら、20組のデータが画面に表示されることになる。
2)更新ボタンを押すと、サーバ側では、受け取った画面のデータ(たとえば20組データ)を順番に処理し、データベース更新処理を行う。
普通にコーディングすると、コーディング量がかなり増えて大変になるかもしれません。
ただし、適切なフレームワークを使うことにより、コーディング量は大きく削減されます。
例えば、マイクロソフトのASP.NET MVCを使い、C#で開発すれば、クライアント側も、サーバ側も、複数明細行の更新処理が簡単にできるようです。
さらに、ASP.NET MVCは「エコシステム」の考え方で開発されているので、サーバ側のC#のコードを修正すると、それに連動するクライアント側のJavaScriptのコードが自動的に修正されたりして、とても楽です。
ただ、フレームワークの勉強しないと使いこなせませんが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript 以前の質問だと、どの条件でも配列が表示されてしまいます。 1 2022/07/09 11:40
- JavaScript セレクトボックスを2つ設けて選択して初めてメッセを表示 1 2022/07/27 12:15
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript セレクトボックスを2つ選択してメッセージなどを表示するには。~運賃検索プログラムを完成させたい~ 1 2022/07/22 11:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラミング言語で、使える...
-
phpでのセレクトボックスの値を...
-
「"」(ダブルクォーテーション)...
-
Smarty 配列のキーを変数で
-
local環境でのテストで、FORMタ...
-
ループでチェックボックスにche...
-
プルダウンとCSVの連動
-
PHP ボタンが押されたら処理を...
-
パラメーターを隠す
-
入力フォーム→確認画面→送信画...
-
<input type="hidden" >で配列...
-
laravelを利用してコントロール...
-
VBA で、スペースを含むファイ...
-
PHPで、ボタンを押すと同じペー...
-
フォームボタンを押すたびに数...
-
PHPのエラーの解消法について教...
-
フォームのテキストボックスに...
-
検索時の選択内容を保持する方法
-
phpで分からないエラーが出てし...
-
PHPを勉強中の専門学生です。 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
プルダウンとCSVの連動
-
「"」(ダブルクォーテーション)...
-
ラジオボタンの値を受け取ってP...
-
<select>文、foreachと初期値設定
-
phpでのセレクトボックスの値を...
-
php セレクトボックス 値取得
-
複数のセレクトボックスを1つに...
-
複数 selectフォームから今回on...
-
2つのプルダウンメニュから受け...
-
phpでのselect値の取得・表記に...
-
foreachで次の行の値を取得して...
-
ウェブ上で選択した複数行の内...
-
CodeIgniter/set_value()
-
ループ処理
-
連動させたいセレクトボックス...
-
現在時刻を反映させた時刻のプ...
-
プルダウンリスト(コンボボッ...
-
PHP で画面の一部だけを変えたい。
-
phpでカレンダー作成
-
プルダウンで選択された値を保持
おすすめ情報