- 締切済み
商品コードを入力で、商品名、金額を表示、合計計算
java script かajaxのカテゴリーだと思います。 受注管理のシステムを作成しております。 PHP 5.x MySQL 5.x です。 管理者が商品受注のデータを入力する際に、商品名をプルダウン等で選ぶのがイヤで 商品コード(例:1001等)を手打ちで入力して、その瞬間その画面で、商品名と金額を呼び出して、あとは個数を入れる という作業を10商品くらい繰りかした後、単価×個数を全て計算して合計金額をその場で 表示されることはできないでしょうか? どなたかお詳しい方、お知恵を貸してください!!
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- babu_baboo
- ベストアンサー率51% (268/525)
そして、さっそくていせい。 これらしきところを、これに。 ajax ('sql.php', 'post', {sql: 'SELECT name, tanka FROM database_name WHERE id=' + cd + ' LIMIT 1'}, function (res) { やっつけでかいたから、うごかせないなら、あきらめてね
- babu_baboo
- ベストアンサー率51% (268/525)
その2 (function () { // Ajax if ('undefined' === typeof XMLHttpRequest) this.XMLHttpRequest = (function () { for (var i = 0, h; h = arguments[i++];) try { h (); return h; } catch (err) { ; } return null; })(function () { return new ActiveXObject ('Msxml2.XMLHTTP.6.0') }, function () { return new ActiveXObject ('Msxml2.XMLHTTP.3.0') }); var obj2str = (function (obj) { var p = []; var i, I, k, q, idx, key, val; switch (typeof obj) { case 'string' : obj = obj.split ('\u0026'); for (i = 0, I = obj.length; i < I; i++) { if (q = obj[i]) { idx = q.indexOf ('='); if (-1 === idx) break; key = encodeURIComponent ( q.substring (0, idx)); val = encodeURIComponent ( q.substring (idx + 1)) || ''; p.push (key + '=' + val); } } return (p.length) ? '\u0026' + p.join ('\u0026'): ''; case 'object' : for (i in obj) if (obj.hasOwnProperty (i)) p.push (encodeURIComponent (i) + '=' + encodeURIComponent (obj[i])); return (p.length) ? '\u0026' + p.join ('\u0026'): ''; } }); var ajax = (function (uri, method, parameter, callbackfn, callbackobj) { var httpObj; var para; if (httpObj = new XMLHttpRequest) { para = 'SendTime=' + (new Date).getTime() + obj2str (parameter); if ('GET' === method.toUpperCase ()) uri += '?' + para; httpObj.open (method, uri, true); httpObj.setRequestHeader ('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); httpObj.onreadystatechange = function () { if (4 === httpObj.readyState) { try { if (200 === httpObj.status) callbackfn.call (callbackobj, httpObj.responseText); } catch (err) { ; } httpObj.onreadystatechange = new Function; uri = method = parameter = callbackfn = callbackobj = httpObj = para = null; } }; httpObj.send (para); } }); this.ajax = ajax; })(); </script>
- babu_baboo
- ベストアンサー率51% (268/525)
すくりぷとぶぶんをぶんかつ。 <script> var table = document.getElementById ('hoge'); function calculate () { var tr = table.querySelectorAll ('tbody > tr'); Array.forEach (tr, function (tr, idx) { var inp = tr.querySelectorAll ('input'); var up = parseFloat (inp[2].value); var qt = parseFloat (inp[3].value); var pr = 0; if (idx === this.max) inp[4].value = this.total; else if (isNaN (up) || isNaN (qt)) return; else { inp[4].value = (pr = up * qt); this.total += pr; } }, {max: tr.length - 1, total : 0}); } function handler (evt) { /*@cc_on*/ var e = evt./*@if (@_jscript) srcElement @else@*/ target /*@end@*/; var tr = e.parentNode.parentNode; var inp = tr.querySelectorAll ('input'); var cd; switch (e.name) { case 'qt' : case 'up' : calculate (); break; case 'cd' : cd = e.value; ajax ('sql.php', 'post', {sql: 'SELECT name, furigana FROM zenkohdo.shain WHERE id=' + cd + ' LIMIT 1'}, function (res) { var rec; if (! /^Error/.test (res)) { rec = res.split (/\u001f/g); this[1].value = rec[0]; this[2].value = rec[1]; this[3].focus (); } }, inp); break; } } table./*@if (@_jscript) attachEvent ('onfocusout' + @else@*/ addEventListener ('blur'/*@end@*/, handler, true); (function (t) { var tbody = t.querySelector ('tbody'); var tr = tbody.querySelector ('tr'); var max = 10; while (--max) tbody.appendChild (tr.cloneNode (true)); })(table);
- babu_baboo
- ベストアンサー率51% (268/525)
ajaxをとうさいしてみる でんじゃらすだし、すくりぷとからSQLぶんをおくるなんてもってのほかだけど、やってみる。 うごかせないなら、あきらめようね まずは、sql.php として <?php mb_language ('Japanese'); define ('HOST', '127.0.0.1'); define ('USER', 'root'); define ('PASS', 'xxxxxxxxxxx'); $ID = mysql_connect (HOST, USER, PASS); if ($ID) { $sql = $_POST['sql']; if ($sql) { $R = mysql_query ($sql, $ID); if ($R) { while ($r = mysql_fetch_array ($R, MYSQL_NUM)) $b[] = join (chr (31), $r); exit (join (chr (30), $b)); } } } exit ('Error'); ?>
- reggaepunc
- ベストアンサー率59% (64/108)
提案としてこんなUIはどうでしょう。(コード汚いのは重々承知です。) ※絞込しかやってないです。 <body> <input type="text" id="inputArea"> <div id="output"></div> <script type="text/javascript"> /* @regepan */ var inputArea = document.getElementById('inputArea'); inputArea.addEventListener( 'keyup', keyupEvent, false ); var output = document.getElementById('output'); var txt; var i; var items = []; // 初期化 function init() { for( i = 0; i < 50; i++ ) { var obj = {}; var num = Math.floor( Math.random() * 10 ) + ''; num += Math.floor( Math.random() * 10 ) + ''; num += Math.floor( Math.random() * 10 ); obj.id = num; obj.name = '商品名'; obj.price = 1000; txt = document.createTextNode( obj.id + ' ' + obj.name + ' ' + obj.price ); var a = document.createElement('a'); a.href = '#'; var p = document.createElement('p');; a.appendChild( txt ) p.appendChild( a ); output.appendChild( p ); items.push( obj ); } } init(); // itemの再構築 function makeList() { for( i = 0; i < items.length; i++ ) { var obj = items[i]; txt = document.createTextNode( obj.id + ' ' + obj.name + ' ' + obj.price ); var a = document.createElement('a'); a.href = '#'; var p = document.createElement('p');; a.appendChild( txt ) p.appendChild( a ); output.appendChild( p ); } } // keyupEvent function keyupEvent() { var pool = []; var temp; var str; var val; output.innerHTML = ''; for( i = 0; i < items.length; i++ ) { val = this.value; val = val.slice( 0, this.value.length ); var item = items[i]; temp = item.id; temp = temp.slice( 0, this.value.length ); temp -= 0; if( val == '' ) { makeList(); break; } else { if( temp == val ) { txt = document.createTextNode( item.id + ' ' + item.name + ' ' + item.price ); var a = document.createElement('a'); a.href = '#'; var p = document.createElement('p'); a.appendChild( txt ) p.appendChild( a ); output.appendChild( p ); }// if }// if }// for }// keyupEvent </script> </body>
- babu_baboo
- ベストアンサー率51% (268/525)
もじすうせいげんがなかったら、もっとかけたのに、ざんねん。 こーどのしつも、ざんねんだけど、ajax は、だれかに! <!DOCTYPE html> <title></title> <style type="text/css"> table, td, th { border :1px #888 solid } td input[type="text"] { border : 0px none } </style> <body> <form action="#"> <table id="hoge"> <thead><tr><th>コード<th>商品名<th>単価<th>個数<th>金額</thead> <tbody> <tr> <td><input type="text" name="cd" value="" size="10"> <td><input type="text" name="pn" value="" size="20"> <td><input type="text" name="up" value="" size="10"> <td><input type="text" name="qt" value="" size="10"> <td><input type="text" name="pr" value="" size="16"> </tbody> </table> </form> <script> var table = document.getElementById ('hoge'); function calculate () { var tr = table.querySelectorAll ('tbody > tr'); Array.forEach (tr, function (tr, idx) { var inp = tr.querySelectorAll ('input'); var up = parseFloat (inp[2].value); var qt = parseFloat (inp[3].value); var pr = 0; if (idx === this.max) inp[4].value = this.total; else if (isNaN (up) || isNaN (qt)) return; else { inp[4].value = (pr = up * qt); this.total += pr; } }, {max: tr.length - 1, total : 0}); } function handler (evt) { /*@cc_on*/ var e = evt./*@if (@_jscript) srcElement @else@*/ target /*@end@*/; var tr = e.parentNode.parentNode; var inp = tr.querySelectorAll ('input'); var cd; switch (e.name) { case 'qt' : case 'up' : calculate (); break; case 'cd' : cd = e.value; // ここにAjaxでよびだすこーどをかく! if (cd === '123') { inp[1].value = '洋野町名産 塩ウニ'; inp[2].value = '1800'; } break; } } table./*@if (@_jscript) attachEvent ('onfocusout' + @else@*/ addEventListener ('blur'/*@end@*/, handler, true); (function (t) { var tbody = t.querySelector ('tbody'); var tr = tbody.querySelector ('tr'); var max = 10; while (--max) tbody.appendChild (tr.cloneNode (true)); })(table); </script>