ruby -v
ruby 2.0.0p195 (2013-05-14) [x64-mingw32]
#!C:/Ruby200-x64/bin/ruby.exe
# encoding: utf-8
print "Content-Type:text/html\r\n\r\n"
require "cgi"
require "csv"
cgi = CGI.new
code = 100
for i in 1..1500
code += 1
eval("No#{i} = cgi.params['No#{i}']")
eval("Code#{code} = cgi.params['c#{code}']")
eval("Syohin#{code} = cgi.params['s#{code}']")
eval("Nedan#{code} = cgi.params['n#{code}']")
end
no = ""
addBango = cgi.params["addBango"]
ab = addBango[0].to_i
for i in 1..ab
eval("AddNo#{i} = cgi.params['addt#{i}']")
eval("AddCode#{i} = cgi.params['addc#{i}']")
eval("AddSyohin#{i} = cgi.params['adds#{i}']")
eval("AddNedan#{i} = cgi.params['addn#{i}']")
end
code = 100
for i in 1..1500
code += 1
if eval("Syohin#{code}[0] != ''")
if eval("Syohin#{code}[0] != nil")
eval ("no = Code#{code}[0]")
eval ("Write#{no} = [] ")
eval("Write#{no}.push(Code#{code}[0])")
eval("Write#{no}.push(Syohin#{code}[0])")
eval("Write#{no}.push(Nedan#{code}[0])")
end
end
end
no = ""
for i in 1..ab
if eval("AddSyohin#{i}[0] != nil")
if eval("AddSyohin#{i}[0] != '' ")
eval ("no = AddCode#{i}[0]")
eval ("Write#{no} = [] ")
eval ("Write#{no}.push(AddCode#{i}[0])")
eval ("Write#{no}.push(AddSyohin#{i}[0])")
eval ("Write#{no}.push(AddNedan#{i}[0])")
end
end
end
cateList = ["ビール","サワー","梅酒","ソフトドリンク","ノンアルコール","日本酒","焼酎","マッコリ","ハイボール","ウイスキー","カクテル","お茶ハイ","ふんわり鏡月","オプション"]
for m in 1..14
no = 100 * m
eval("Write#{no} = []")
eval("Write#{no}.push('#{no}')")
eval("Write#{no}.push('#{cateList[m-1]}')")
eval("Write#{no}.push('値段')")
end
filename = "ItemList.csv"
filepath = "../htdocs/DB/#{filename}"
#ans = FileTest.exist?(filepath)
#print "#{ans}"
# CSVに書き込む(追記)する前に初期化します。
File.open(filepath, "w") { |file| file = nil }
for no in 100..1500
begin
if eval("Write#{no} != nil")
CSV.open(filepath, "a") do |csv|
eval("csv << Write#{no}")
end
end
rescue
next
end
end
print 1
おれしかわからんだろうw
no = ""
code = 100
for i in 1..1500
code += 1
if eval("Syohin#{code}[0] != ''")
if eval("Syohin#{code}[0] != nil")
eval ("no = Code#{code}[0]")
eval ("Write#{no} = [] ")
eval("Write#{no}.push(Code#{code}[0])")
eval("Write#{no}.push(Syohin#{code}[0])")
eval("Write#{no}.push(Nedan#{code}[0])")
end
end
end
ここは、変数(Syohin#{数字}[0])が空白、 nil じゃない時、
filename = "ItemList.csv"
filepath = "../htdocs/DB/#{filename}"
#ans = FileTest.exist?(filepath)
#print "#{ans}"
# CSVに書き込む(追記)する前に初期化します。
File.open(filepath, "w") { |file| file = nil }
for no in 100..1500
begin
if eval("Write#{no} != nil")
CSV.open(filepath, "a") do |csv|
eval("csv << Write#{no}")
end
end
rescue
next
end
end
print 1
CSV に書き込んでいきます。
<section class = "none">
<table>
<tbody>
<tr id="template">
<td name="通し番号"><input type="text" value=""></td>
<td><input type="text" value=""></td>
<td><input type="text" value=""></td>
<td><input type="text" value=""></td>
<td><input type="text" value=""></td>
<td><input type="text" value=""></td>
<td><input type="text" value=""></td>
<td><input type="text" value=""></td>
<td><input type="text" value=""></td>
<td><input type="text" value=""></td>
</tr>
</tbody>
</table>
<//section>
上記が1行で追加されるテンプレ。
function addInputbox ( n ) {
var tooshiBangoLen = document.getElementsByName("通し番号").length;
// alert(tooshiBangoLen);
var templateTr = document.getElementById("template");
// alert(templateTr);
var addTableTr = templateTr.cloneNode(true);
var idName = "tabletest";
var tableId = document.getElementById(idName);
var newaddTR = tableId.appendChild(addTableTr);
}
通し番号は +1 して代入したいところだが、実はテンプレート自体も name = 通し番号 の名前が付いているので+1する必要はない。正しい数はむしろ-1var addTableTr = templateTr.cloneNode(true);
templateTr をコピーします。(true)は、子もコピーするかしないか。trueする falseしない。var tableId = document.getElementById(idName);
var newaddTR = tableId.appendChild(addTableTr);
既存の table の tbody に id=tabletest を設定しています。
var tableId = document.getElementById(idName);
var newaddTR = tableId.appendChild(addTableTr);
// 1列目 通し番号
newaddTR.childNodes[1].childNodes[0].name = "addt" + tooshiBangoLen;
newaddTR.childNodes[1].childNodes[0].value = toBanLen;
// 2列目 商品コード
newaddTR.childNodes[3].childNodes[0].name = "addc" + tooshiBangoLen;
newaddTR.childNodes[3].childNodes[0].value = "";
// 3列目 商品名
newaddTR.childNodes[5].childNodes[0].name = "adds" + tooshiBangoLen;
newaddTR.childNodes[5].childNodes[0].value = "";
※以下略
newaddTR は新しく追加されたオブジェクト。
alert(newaddTR.childNodes[0].tagName)
とかやったりして、tdがどの数字になっているのか割り出した。
alert(newaddTR.childNodes[1].childNodes[0].tagName)
これで 新しく追加されたオブジェクトの [1] の [0] が input であることがわかった。
#!C:/Ruby200-x64/bin/ruby.exe
# encoding: utf-8
print "Content-Type:text/html\r\n\r\n"
require "cgi"
require "csv"
require "FileUtils"
cgi = CGI.new
t = Time.now
tY = t.year
tM = t.month
tD = t.day
tH = t.hour
tm = t.min
tNo = cgi.params["tNo"]
toriNo = cgi.params["toriNo"]
tM = "%02d" % tM if tM < 10
tD = "%02d" % tD if tD < 10
tH = "%02d" % tH if tH < 10
tm = "%02d" % tm if tm < 10
DateName = "#{tY}#{tM}#{tD}"
TimeName = "#{tH}#{tm}"
LogFileName = "#{tNo[0]}_#{toriNo[0]}"
cPath = "../htdocs/T1/temp-UriageTable#{tNo[0]}.csv";
pDir = "../htdocs/tempLog/#{DateName}"
FileUtils.mkdir_p(pDir)
dirf = "#{pDir}/tempLog#{LogFileName}_#{TimeName}.csv"
FileUtils.copy( cPath , dirf )
if FileTest.exist?(dirf)
print 1
else
print 2
end
#!C:/Ruby200-x64/bin/ruby.exe
# encoding: utf-8
print "Content-Type:text/html\r\n\r\n"
require "cgi"
require "csv"
require "FileUtils"
ruby の初期設定
t = Time.now
tY = t.year
t に日付と時間が代入される。上記の通り各種メソッッドで数値として代入される。
cgi = CGI.new
tNo = cgi.params["tNo"]
toriNo = cgi.params["toriNo"]
params で GET の値をゲットできる。
FileUtils.mkdir_p(pDir)
FileUtils.copy( cPath , dirf )
if FileTest.exist?(dirf)
print 1
else
print 2
end
FileUtils.mkdir_p( 記載されているパスのディレクトリを全て作成します。 )
setlocale(LC_ALL,'ja_JP.UTF-8');
$dir = "temp.csv";
$handle = fopen( $dir , "w+" );
ftruncate( $handle, 0 );
fclose( $handle );
test.csv
17:00,40,ビール中ジョッキ,2
17:05,40,カシスオレンジ,2
CSVtest.rb
#!C:/Ruby200-x64/bin/ruby.exe
# encoding: utf-8
print "Content-Type:text/html\r\n\r\n"
require "cgi"
require "csv"
cgi = CGI.new
cp = cgi.params["tesutesu"]
dirf = "test.csv"
x = 0
OrderTime = Array.new
TorihikiNo = Array.new
Syouhinmei = Array.new
Suuryou = Array.new
CSV.foreach(dirf) do |row|
OrderTime[x] = row[0]
TorihikiNo[x] = row[1]
Syouhinmei[x] = row[2]
Suuryou[x] = row[3]
x += 1
end
print OrderTime[0] + TorihikiNo[0] + Syouhinmei[0] + Suuryou[0] + "\n"
print OrderTime[1] + TorihikiNo[1] + Syouhinmei[1] + Suuryou[1]
require "cgi"
require "csv"
CSV には require "csv" が必要。
cgi = CGI.new
cp = cgi.params["tesutesu"]
GET で送られてきた tesutesu の値で CSV をなんやかんやするには params["tesutesu"] でなんやかんや。
dirf = "test.csv"
CSV.foreach(dirf) do |row|
これで1行ずつ読む。
OrderTime = Array.new
TorihikiNo = Array.new
Syouhinmei = Array.new
Suuryou = Array.new
OrderTime[x] = row[0]
TorihikiNo[x] = row[1]
Syouhinmei[x] = row[2]
Suuryou[x] = row[3]
今回の場合配列にした。
test.rb
#!C:/Ruby193/bin/ruby.exe
# encoding: utf-8
print "Content-Type:text/html\r\n\r\n"
require "cgi"
cgi = CGI.new
cp = cgi.params["x"]
print cp
最初の1行目は ruby 本体のファイルパス。 path を通してれば ruby だけでいいはず。(ググってチラ見なので詳しい記述はわかりませんw)
print "Content-Type:text/html\r\n\r\n"
に関しては、http://d.hatena.ne.jp/tilfin/20080118/1200653984さんのブログより。
cp = cgi.params["x"]
この1行にどんだけ時間費やしたことかwwwwwwwwwwww
test.php の中の javascript
function requestTest ( data , method , async ) {
var rq = new XMLHttpRequest();
var filename = "test.rb";
if ( method == "GET" ) URI = "../cgi-bin/" + filename + "?x=" + data;
rq.open ( method , URI , async );
rq.onreadystatechange = function() {
if ( rq.readyState == 4 ) {
on_loaded ( rq );
}
}
if ( method == "GET" ) data = null;
rq.send ( data );
}
function on_loaded( rqobj ) {
res = rqobj.responseText;
alert ( res );
}
rq で XMLHttpRequest オブジェクト作成
rq.open ( method , URI , async );
open は 初期化。この3つでおk。
if ( method == "GET" ) data = null;
rq.send ( data );
これは、GET である場合、deta は null にしないといけません。
if ( rq.readyState == 4 ) {
on_loaded ( rq );
}
function on_loaded( rqobj ) {
res = rqobj.responseText;
alert ( res );
}
readyState は
test.php の中の a href による javascript 呼び出し
<a href="javascript:requestTest('test', 'GET' , true );">ここをクリックしてね!</a>
setlocale(LC_ALL,'ja_JP.UTF-8');
$cnt = count ( $_POST ) / 2 + 1;
for ( $i = 1 ; $i < $cnt ; $i++ ) {
${"line".$i} = $_POST["line".$i];
${"suu".$i} = $_POST["suu".$i];
if ( strcmp ( $_POST["line".$i], "" ) ) {
echo ${"line".$i} . " " . ${"suu".$i} . "
\n";
}
}
count() / 2 + 1 は、今回の場合2種類あるので÷2、for文用に+1しないといけない。
function addDiv(x,n) {
// 連番で id 登録してるので
Gstr = "G" + x;
Sstr = "S" + x;
var FindId = document.getElementById(Gstr);
if ( FindId == null ) {
// 複数回編集されるので null (id未作成)の場合、こちらを実行
var divG = document.createElement("div");
var divS = document.createElement("div");
var idGyou = document.getElementById("MejirushiG");
var idSuu = document.getElementById("MejirushiS");
divG.id = Gstr;
divS.id = Sstr;
var addG = idGyou.appendChild(divG); // つづり間違えてるの気付かず、どんだけ時間つぶしたことかwwwwwww
var addS = idGyou.appendChild(divS);
FindId.innerHTML = x;
document.getElementById(Sstr).innerHTML = n;
addG.setAttribute("class","InlineBox box wpx40");
addS.setAttribute("class","InlineBox box wpx40");
} else {
// すでに id 発行済みの場合はこちら
document.getElementById(Sstr).innerHTML = n;
}
}
ブラウザ | ベンダープレフィックス |
---|---|
Firefox | -moz- |
Internet Explorer | -ms- |
Opera | -o- |
Google Chrome Safari Android 標準 | -webkit- |
div {
-moz-box-sizing: border-box;
-ms-box-sizing: border-box;
-o-box-sizing: border-box;
-webkit-box-sizign: border-box;
}
.tesutesu {
width: 300px;
padding: 15px;
-moz-box-sizing: border-box;
}
-moz-box-sizing: border-box;
<?php
setlocale(LC_ALL,'ja_JP.UTF-8');
$dir = "ファイルパス.csv";
$handle = fopen( $dir , "r" );
$p = 0;
while( $data = fgetcsv ( $handle, 1000, "," ) ) {
$Aretu[$p] = $data[0];
$Bretu[$p] = $data[1];
$Cretu[$p] = $data[2];
$Dretu[$p] = $data[3];
$p++;
}
fclose( $handle );
?>
<?php
setlocale(LC_ALL,'ja_JP.UTF-8');
$No00 = sprintf("%02d", $tableNo );
$dir = "../ファイルパス/$No00.csv";
$handle = fopen( $dir , "w+" );
fputcsv( $handle, Array( $A, $B, $C ) );
fclose( $handle );
?>
while文 で1行ずつ書き出していくパターン
<?php
$dir = "ファイルパス.csv";
$handle = fopen( $dir , "r" );
while( $data = fgetcsv ( $handle, 1000, "," ) ) {
$a = $data[0];
$b = $data[1];
$c = $data[2];
$d = $data[3];
echo "<div>";
echo "$a ";
echo "$b ";
echo "$c ";
echo "$d<Br>";
echo "</div>";
}
fclose( $handle );
?>
<div>
<div class = "inlinebox bCr2 bgCr2">1つ目のBOX</div>
<div class = "inlinebox bCr3 bgCr3">2つ目のBOX</div>
</div>
こんな風にコレだけを記述しとけば、複数に適用できる。
inlinebox{
display: -moz-inline-box;
display: inline-block;
/display: inline;
/zoom: 1;
vertical-align: top;
}