お菓子の在庫管理を行うためのシステムを作っています
最終的に達成したいことはJavaScriptで読み込んでいる以下の様なSQL
お店 情報 商品 在庫 増減
新宿 セール品 チョコ 20 (テキストボックス) 反映(ボタン)
新宿 新商品 アメ 30 (テキストボックス) 反映(ボタン)
渋谷 新商品 ラムネ 40 (テキストボックス) 反映(ボタン)
においてリスト上で数値をテキストボックスへ入力して、ボタン押下で在庫の数に増減を反映させることです。
読み込むSQLのIDに関連付けて、数値を反映させようと試みているのですが、うまく指定できていないためか数値の増減の反映先がずれてしまいます。
また現在、このリストに対して、商品名や新商品などで検索を行うことができ、出力する情報を限定することが出来るのですが、それによっても指定先がずれてしまいます。
行ごとに情報を固定し、出力のされ方などに左右されずに増減をリストの在庫数に反映させたいと考えています。
上記リストは複数のcsvファイルを結合したものを読み込んでいます。結合に使ったファイルはそれぞれ以下の通りです。
###CSVファイル
[STOCK] [ITEM]
ID ITEM SHOP ZAIKO ID EVENT SYOUHIN
1 1 1 20 1 1 チョコ
2 2 1 30 2 2 アメ
3 2 2 40 3 2 ラムネ
[EVENT] [SHOP]
ID TEXT ID NAME
1 セール品 1 新宿
2 新商品 2 渋谷
3 限定品
(増減管理用のcsvとして)
[TRANS]
ID STOCK NUM ZAIKO
1 1 20
2 2 30
3 3 40
また、HTML及びそれに関連づいたJavaScriptは以下の通りです。
###HTML
<div class ="formgroup"> <label> 商品</label> <input name="foo" type="text"> <table> <thead> <tr> <th>店舗</th> <th>情報</th> <th>商品</th> <th>在庫</th> <th>増減</th> </tr> </thead> <tbody id="tbody"></tbody> </table>
###JavaScript
//sqlの結合 var sql = ' SELECT*FROM stock JOIN shop ON shop.id = stock.shop JOIN item ON item.id = stock.item JOIN event ON event.id = item.event WHERE item.syouhin LIKE? '; //リスト内の検索 var foo = $.url().param('foo')||''; $('input[name="foo"]').val(foo) var lobs = alasql(sql,[foo+'%']) //csvの出力 var tbody = $('#tbody'); for(var i=0, i<lobs.length; i++){ var lob =lobs[i] //行をクリックするとそのidに対応した詳細ページに移動します詳細ページは割愛しています。 var tr = $('<tr data-href = "data.html?id=' + lob.stock.id + '"></tr>'); tr.append('<td>' + lob.shop.name + '</td>'); tr.append('<td>' + lob.event.text + '</td>'); tr.append('<td>' + lob.item.syouhin + '</td>'); tr.append('<td>' + lob.stock.zaiko + '</td>'); tr.append('<td input type=number name=number id=update></td>'); //各行にidに紐づいた形で反映させるボタンを作りたいのですが、コードがあやふやです。 tr.append('<td><button type=submit></button>保存</td> '); //増減反映 $('#update').on('click', function() { var num = parseInt($('input[name="number"]').val()); alasql('UPDATE stock SET zaiko = ? WHERE id = ?', [ zaiko + num, lob.stock.id ]); var trans_id = alasql('SELECT MAX(id) + 1 as id FROM trans')[0].id; alasql('INSERT INTO trans VALUES(?,?,?,?)', [ trans_id, lob.stock.id, num, zaiko + num ]); }); //行をクリックすると詳細ページへ移行させる $('tbody >tr').css('cursor','pointer').on('click',function(){ window.location = $(this).attr('data-href') })
開発環境は
OSはWindowsで、eclipseを用いています。
使用言語はmysql、javascript、JQueryを扱っています。
phpやajaxは使用できません。
開発経験が浅く、学び始めたばかりで伝わらないことも多くあるかと思いますが、助言の方よろしくおねがいいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/10 04:20
2016/08/10 12:25