• 締切済み

フォームcsvで正常にデータが反映されない

いつもお世話になっています。 perlで作ったcgiフォームなのですが(jcode.plを使ってます)、どうも正常にデータが反映されていないようなのです。記述してもらった内容が途中で切れてしまっています。いくつか思い当たる節があったので、実験してみたところ半角二重引用符"があるとこれも含めて以降の内容が消失してしまっているようです。入力してもらっている方はドイツの方で、"を使う機会が多いように思います。対策を教えていただけたらと思います。 たとえば、【R\"ockner etc etc ...】と入力すると、csvファイルの該当箇所は【R\】とだけなって、後は消えてしまってます。 一応確認画面を出すようにしていて、そこでは問題なく画面に全文が表示されていますので、確認画面へは正常にデータが反映しているのに不思議で仕方ありません。cgiは拾ってきたソースを適当に改変して作っているので、あまり深い知識がないのですが、csvファイルに書き込む段階でエンコードかデコードが失敗してしまっているのでしょうか。他にもトラブルが起きそうな文字などがあったら教えていただけると大変助かります。

  • adinat
  • お礼率78% (245/312)
  • CGI
  • 回答数2
  • ありがとう数3

みんなの回答

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.2

がるです。 んっと。多分¥とか’とか”とかが悪さをしていると思うのですが。 多分「確認画面から実際に書き込みに行く」ロジックの最中でデータがlostしているのではないかと推測いたします。 ですので、確認画面出力してから、それ以降のロジックで、変数データを追っかけていくと色々と見えてくるかと思います。 また何かあったら質問していただければ。

adinat
質問者

お礼

回答ありがとうございました。すっかり放置してしまっていました。申し訳ありません。ソースを一生懸命読んでみましたが、自力ではよくわかりませんでした。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 「反映されない」というのが具体的にどんな事象を指しているのかがもう一つ不明ではあるのですが。 例えばExcelで取り込むと、とかいった感じでしょうか? CSVは固有のエスケープのやり方があります。…まぁRFCなどで規定されていないので、ちとあちこち方言はありますが。 http://d.hatena.ne.jp/gallu/20060110/p1 こちらに、CSVのフォーマットとエスケープの一例がでておりますので、よかったら参考にしてみてください。

adinat
質問者

お礼

回答ありがとうございます。説明が不足していました。申し訳ありません。ファイルをテキストでみて該当箇所が消えている、ということです。要するにデータが完全に書き込まれてないんです。たとえばデータを<>で区切るようにしているとすると、ファイルは『…<>yes<>R\<>no<>…』となって保存されているという意味です。本当は『…<>yes<>R\"ockner etc etc ...<>no<>…』となって欲しいのですが。

関連するQ&A

  • 検索した内容をフォームに反映する方法

    登録画面から必要事項を入力し、送信をクリックすると、データ(CSV)に書き込まれるという仕組みを作っているのですが、 登録画面で「検索」などをクリックすると、検索フォームが出て、そちらで検索をし「反映」のようなボタンを押すと、 その検索結果が登録画面に反映されるような仕組みを作りたいのですが、どのような方法でやれば出来るのかが分かりません。 もし、そのような仕組みをフリーのCGIなどで見かけたことがある方がいらっしゃいましたら、教えて頂きたいのですが。 それをカスタマイズして使用したいのですが。 具体的やりたい事は、ID(シーケンス)を検索すると、そのIDの方の名前や生年月日の情報が検索結果として出てきて、それを登録画面に反映することです。 データベースは ID,名前、生年月日等のデータが入っているCSVファイル 登録画面で送信をクリックすると書き込まれるCSVファイル を用意しています。 登録画面で名前、生年月日等のデータを正確に入れるため、 検索して、正しいデータを登録画面に反映させたいと思っています。 色々検索してみたのですが、なかなか良い結果が得られませんでした。 検索の部分はCGIでやると思うのですが、 反映の部分がどのようにやればいいかが(技術面)わかりませんでした。 Javaスクリプトでしょうか?

    • 締切済み
    • CGI
  • アンケートフォームの入力結果をcsvファイルに反映する方法

    最近ようやくCGIのことがわかりかけてきました。パールを一から書くことはできませんが、諸先輩方がフリーでリリースされているプログラムをカスタマイズして使わせてもらっています。(^人^)感謝♪です。このたび、社内でアンケート調査をすることになり、アンケートフォームを作ろうと思います。しかし、フリーのプログラムでは入力結果をセンドメールで送る雛形しか見つかりませんでした。初心者でも使いやすいもので、入力結果をCSVファイルに反映させることが可能なフリーのCGIプログラムの雛形はないでしょうか。御存知の方教えてください。

    • ベストアンサー
    • CGI
  • フォーム投入データをcsvファイルにするcgiについて

    アンケート等のフォーム投入データをcsvファイルにするcgiのフリーのひな形教えてください。私はcgiを自分で作成できないので先人の作成・公開されたものをありがたくカスタムさせていただいています。投入されたデータをメールで送信するフォームはよく見かけますが、数が多くなってくると逐次そのメールのデータをexel等のソフトに転記しなくてはならず、とても大変です。ユーザーの書き込みデータをデータファイルdat?csv?みたいなファイルにいったん書き込み、そのファイルをサーバ管理者がftpで取り出すようなものが欲しいのですが御存知の方お教え下さい。

    • 締切済み
    • CGI
  • CGIROOMさんのデータベースでCSVファイルが読めません。

    カテゴリがデータベースではなく、CGIのようなので、移動しました。 CGIROOMさんの「簡易高機能検索専用データベース SJIS版 Ver 2.04」を使おうとしています。中田 昭雄さんのhttpd 1.42pを使ってオフラインでの動作を確認した後、以下のようにサーバに設置しました。 /┐  ├anon_ftp  ├bin  ├cgi-bin┐  |    ├database.cgi[755]  |    ├jcode.pl  |    ├onlyone.pl  |    └jtc.csv(CSVデータ)  |  ├conf  ├error_docs  ├httpdocs┐  |    ├index.html  |    ├area_1.html  |    ├(etc)  |  ├httpsdocs┐  |     ├html.htm(データ検索表示用)  |     ├html3.htm(データ検索表示用)  |  ├pd  ├private  ├statistics  ├subdomains  └web_users こうしたところ、「データファイルを開けません」と表示されて困っています。 パスの設定は 1.area_1.html <FORM action="../cgi-bin/jtc/database.cgi" method="GET"> <blockquote> 2.database.cgi # 初期設定 #◆ jcode.plまでのパス $require = './jcode.pl'; #◆ onlyone.plまでのパス $onlyonepl= './onlyone.pl'; #◆ データファイルまでのパス $SEEK{'default'} = './jtc.csv'; #◆ テンプレートファイル設定 $html{'default'} = '../../httpsdocs/jtc/html.htm'; $html{'list3'} = '../../httpsdocs/jtc/html3.htm'; です。CSVの格納場所が悪いのか、パス設定が悪いのか、ご指摘お願いしたくよろしくお願いします。

    • 締切済み
    • CGI
  • エクセルでcsvデータを自動読み込みする方法(至急)

    csv形式のファイル(内容は計測値データ)をエクセルに読み込み、csvファイルの各データが規定値内に納まっているかの確認が容易できる方法を探しています。 このとき条件として、 (1)csvファイル内のデータは10項目程度。 (2)csvデータはランダムに更新される。 (3)エクセルに読み込むときはエクセルシート内の決められたセルにそれぞれデータが格納されること。 (例)csvファイルに"110"と"119"の2種類のデータがあった場合、あらかじめxlsファイルのセルA1に「警察」、セルA2に「消防署」と記入しておき、csvファイルのデータを読み込んだとき、セルB1に"110"、セルB2に"119"と入力される。 (4)csvファイル自体は開かず、必要なときにあらかじめ作成したxlsファイルを立ち上げると、自動でcsvファイルの内容を吸い上げる。 (5)入力されたデータの適否をそれぞれ判定する。 (6)xlsファイルを立ち上げている間にcsvファイルが更新された場合、xlsファイルの更新方法は手動と自動を選択できる。 こんなこと出来るでしょうか? 特に(4)が困っています。csvファイルをエクセルで開いた状態であれば、この内容で出来たのですが・・・。 どなたか良い方法があったら教えて下さい。お願いします。

  • 文字コードの違うデータを判別したい

    データの文字コードが異なるファイルを確認します。 以下のスクリプトで$get_csvのデータの文字コードを判別にShift-JISで別のファイルに格納したいのです。 (スクリプト) $get_csv = get("$_[0]"); if ($get_csv =~ /utf-8/i) { &jcode'convert($get_csv,'sjis','utf-8'); } if ($get_csv =~ /EUC-JP/i) { &jcode'convert($get_csv,'sjis','euc'); } (ここまで) &jcode'convertの使い方が悪いのか?データをうまく変えられていない感じがします。 上記の内容で説明が足りてますでしょうか? よろしくお願いいたします。

  • フォームデータのcsv保存について

    お世話になります。フォームに入力されたデータを csvファイルに保存するというcgiの作成をしています。 初めてcgiを作成するので、書籍の真似をして作成した のですが、おかしいデータが保存されてしまいます。 質問の項目数は5個で以下のとおりです <FORM ACTION="./ans1.cgi" METHOD="POST"> 名前:<br> <input type="text" name="name" size=30> <br> 1:<br> <input type="text" name="a1" size=30> <br> 2:<br> <input type="text" name="a2" size=30> <br> 3:<br> <input type="text" name="a3" size=30> <br> 4:<br> <input type="text" name="a4" size=30> <br> <INPUT type="submit" value="送 信"> <INPUT type="reset" value="リセット"> <BR> </FORM> cgiの中身です。 #! /usr/bin/perl require './cgi-lib.pl'; $answer = 5; $ansfile = "kotae.csv"; &ReadParse(*in); $name = $in{'name'}; for($n = 1; $n <= $answer; $n++ ) { $a[$n] = $in{"a$n"}; } open (FILE,">>$ansfile"); flock (FILE,2); print (FILE "\"", $name); for($i = 1; $i <= $answer; $i++ ) { $a[$i] = ~ s/\"/""/g; print FILE "\"\,\""; print FILE $a[$i]; } print FILE "\"\n"; flock(FILE,8); close(FILE); print "Content-type: text/plain\n\n"; print "<HTML><BODY>\n"; print "tesuto"; print "</body></HTML>"; exit; csvファイルの中身を見ると、最初の列には、項目1で 記入したデータが入ってますが、項目2以降 は4294967295と数字が入ってます。どうも1個目の回答 欄のデータはちゃんと取得されてるのですがそれ以降の が取得されていないみたいです。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • Excelとcsvの改行について

    初めまして。 新規でネットショップをオープンすべく準備中の、HTML初心者です。 実店舗の経験をネットで生かそうと思い、分からないことが出てくる度に調べながらオープン準備を進め、何とか残るは商品データのUPのみという所まできました。 ショップサーブからダウンロードした一括UP用のcsvファイルがExcelで開いたので何の疑問も持たなかったのですが、保存時にエラーがでたため調べたところ、Excelの改行はcsvには反映されないことを知りました。 さらに調べて、改行したい部分に\r\n(Macは\n)もしくは、"文章"と入力すると改行が反映される。というところまで辿り着いたのですが、下記の内容で詰まっております。 (1)既に200近い商品データをExcelに入力済みです。入力済データの改行部分を、コマンド(コード?)に一括変換する方法はあるのでしょうか。 (2)例えば、文章の上下間を3行空ける(改行する)場合、入力は文章\r\n\r\n\r\n文章(Macは文章\n\n\n文章)もしくは、"文章"",",""文章"で良いのでしょうか。 (3)試しにネット上で入力した商品データ(csvファイル)をダウンロードして開くとExcelが起動し、ネット上で改行した部分が幾つものスペースで表示されます。データを壊さずにスペースを短くする方法はあるのでしょうか。 お手数ではございますが、宜しくお願い致します。

  • TOK2でCSVの読み込みが正常に出来ない。

    TOK2でCSVの読み込みが正常に出来ない。 現在TOK2でWEBサイトを作成しています。 データベースを扱っているのでCSVファイルを外部から読み込むよう作成したのですが 英数字以外が正常に表示されません。 例) 例えば『名前』『年齢』を表示しようとした場合 『tなか』『24』のように日本語が正常に反映されません。 どなたか解決方法をご存知の方がいらっしゃいましたらご教授願えませんでしょうか。 よろしくお願いいたします。 

    • ベストアンサー
    • PHP
  • フォームメールプログラムの改造について教えて下さい

    フリーのcgiのを使って改造をしております。 2つのCGIの機能を1つにしたいのです。 フォームに入力されたデータをCSVのデータファイルに保存する機能に、sendmailを使って入力された情報を入力者本人に確認メールを送りたいのですが、ふつうに2つのプログラムを貼り合わせただけではうまくいきません エラーは出ないのですがメールは届きません・・・ どなたか,ソースを見ていただける方いませんでしょうか? 宜しくお願いします。

    • 締切済み
    • CGI

専門家に質問してみよう