• ベストアンサー

変動する

callhiroの回答

  • callhiro
  • ベストアンサー率35% (54/152)
回答No.6

どうもこんばんは。 再び登場です。 >ある分類がポッカリなくなったり、ある分類内の詳細名が増減することを想定しないといけないもので、やっかいに感じてます。 hoomaさんは変動するデータや、項目の変動が激しいことを気にしていらっしゃるようですが、 自作のCGIをいくつか遊びで作ってきた経験から言わせてもらいますと、 そういう変動するデータのためにこそCGIが有効ではないかと思います。 htmlでは固定的な表現しかできませんが、プログラムを使うことの利点は アクセスする度に変動的な表現ができることではないでしょうか? 項目が変動した場合にもばりばり動かすCGIを作ろうと思っているなんて 個人的には楽しそうでうらやましいです(笑) 僕も仕事でそういうの任されてみたいです(^^) どのように変動データに対応するかは CGIプログラムの問題ではなくて アルゴリズムの問題だと思います。 まあPerlのプログラミングとして、 どのようにデータを加工するのがやりやすいか などを気にする必要もあるので、 アルゴリズムとプログラムは同時に考えた方がいいですけどね。 ある程度経験のある人なら、 元データがこういう形の方が扱いやすいと言うこともわかると思います。 お礼を見ていると、「これ以上答えてもらうのは悪い」という感じが伝わってきましたが、 そんなことありませんので、もっと具体的な困っている箇所をあげてくだされば、 一つずつ進んでいけるのではと思いますよ。 あと、特にUNIXの知識なんて必要ないような気がしますが。

hooma
質問者

お礼

お礼ではのですが、補足をしたくても 入れる場所がないのでこちらで失礼します。 いろいろ試して、ようやく読み込んだCSVデータを配列に入れてsplitをかけて、細切れにすることはできました。(ただし、1行だけ) そこで、教えていただきたいのですが、全行を多次元配列などにしてsplitをかけるにはどうしたらいいでしょうか。 foreachなどで試しましたが、うまくいきません。

hooma
質問者

補足

あたたかいお言葉ありがとうございます。 他の補足でも説明しましたが、 http://www.niigata-megumi.co.jp/rdn/ 「取扱品目」のページのようなレイアウトで 表はCSVで流し込みをするということです。 とあるシステム系の会社のサイト構築を頼まれて、デザインを主にやってます。 そのなかで、CGIがたくさん絡んできており、ほとんどが外注に出して出来上がってますが、クライアントは一方ついてから、今回のようなスクリプトを用意してくれと言ってきたのでGW前に納品しないといけないので切羽詰っています。 今、私が自分で確認してできているスクリプトは 表(中身は空)をHTMLに書き出すCGIだけです。 CSVを読み込んで、配列にいれて細切れにして、データの種別」を判断し、テーブルに書きだすというものが 使い慣れていないのでアドバイスをいただいても「あーそうか!」と言って実行に移せないのです。 こわがっているのかもしれません。 でも、明日は1日perlと闘えそうなので、じっくり取り組んでみます。

関連するQ&A

  • 変動するリンクデータを読み取って、毎回変わるHTMLテーブルに流し込む方法

    はじめまして CGIを学んで1ヶ月の者です。 実は、仕事で少し面倒な依頼を受けて困っております。 内容はCSV形式のデータをPerlで読み取ってそれを HTMLのテーブルに流し込むスクリプトなのですが、 慣れていないので思考停止をして進みません。 具体的なCSVデータの例ですが、 10,果物,りんご,ringo.html,ぶどう,budou.html,ばなな,banana.html,10,野菜,かぼちゃ,kabotya.html,なす,nasu.html,きゅうり,kyuri.html,魚,まぐろ,maguro.html,さけ,sake.html,10,肉,牛,usi.html,麺,ラーメン,ra-men.html,そば,soba.html,うどん,udon.html まず、先頭に10があり、これは分類の区切りを示すヘッダーです。 次に果物でこれは、分類名です。 次にりんご、これは分類詳細名です。 つぎにringo.htmlでこれは分類詳細名のリンク先アドレスです。 このようなデータの並びですが、各分類と詳細項目は変動しますので このテーブルのあるWEBページを毎回読み直す必要があります。 どうのようにしたらよいのでしょうか。 お助けください。

    • ベストアンサー
    • Perl
  • .htaccessでのカノニカル指定

    大量のPDFファイルを所持するサイトを運営しています。 ディレクトリ構成は、 ■ルート(http://hogehoge.com/) index.html hoge1.html hoge2.html │ └■食べ物フォルダ   ├index.html   │   ├■果物ごフォルダ   │ ├index.html   │ │   │ ├■りんごフォルダ   │ │ ├index.html   │ │ ├ringo1.pdf   │ │ ├ringo2.pdf   │ │ ├ringo3.pdf   │ │   │ ├■みかんフォルダ   │ │ ├index.html   │ │ ├mikan1.pdf   │ │ ├mikan2.pdf   │ │ ├mikan3.pdf   │ │   │ ├■ぶどうフォルダ   │   ├index.html   │   ├budou1.pdf   │   ├budou2.pdf   │   ├budou3.pdf   │   ├■野菜フォルダ   ・   ・   ・ ルート→「食べ物」→「果物 / 野菜」→「りんご・みかん・ぶどう / キャベツ・大根・人参」 という具合で、すべてのフォルダ内にはindex.htmlと関連する 複数のpdfファイルを格納している状態です。 それぞれのpdfファイルは内容がほぼ一緒なので link rel="canonical" を設定したいんです。 ringo1.pdf + ringo2.pdf + ringo3.pdf → りんごフォルダの index.html にカノニカル指定 という具合に全てのフォルダで行いたいのですが自分なりに調べた結果、 <FilesMatch "\.pdf$"> Header set Link "<http://hogehoge.com/食べ物/果物/(りんごorみかんorぶどう)/index.html>; rel=\"canonical\"" </FilesMatch> と記入した.htaccessファイルを各フォルダに1個1個設置すれば実現できると思うのですが、 数が膨大になってしまうので、もっとスマートな方法があれば・・ と思い質問させて頂きました。 詳しい方、どうか知恵をお貸し下さい。

    • ベストアンサー
    • PHP
  • リストボックスについて

    PHPをはじめて間もないのですが、質問します DB(MySql)のテーブルを使用してリストボックスの 選択肢をさせるようにしたいのですが、 同じ1つのリストボックスで選択するようにします テーブル CodeNo 商品名   分類 0001  バナナ   果物 0002  みかん   果物 0003  ピーマン  野菜 0004  トマト   果物 0005  もも    果物 0006  にんじん  野菜 のようなデータがあるとします (1)選択肢は分類のデータを表示します    果物    野菜 (2)(1)で選択された分類の商品名を選択肢にします    果物選択したとする    バナナ    みかん    トマト    もも (3) (2)で選択されたCodeNo,商品名を表示する    トマトを選択したとする 0004  トマト がテキストボックスに表示されるようにします。 以上のようなことをPHPですべてするにはどのようにすれば よいのか、ご教授いただけませんでしょうか? よろしくお願いいたします。    

    • 締切済み
    • PHP
  • 別シートのフィールドから同一値検索、隣フィールド値取得の関数を教えてください。

    ■シート1 ---------------- □分類□名 称□ ---------------- |果物|りんご| ---------------- |果物|バナナ| ---------------- |果物|みかん| ---------------- |野菜|トマト| ---------------- |野菜|セロリ| ---------------- |野菜|レタス| ---------------- ■シート2 ---------------- □名 称□分類□ ---------------- |りんご|  | ---------------- |トマト|  | ---------------- |バナナ|  | ---------------- |セロリ|  | ---------------- |みかん|  | ---------------- |レタス|  | ---------------- シート2の名称にてシート1の名称を検索して、シート2に分類を取得することは可能でしょうか。 よろしくお願いします。

  • PHP CSVから条件にあう行を3行取りだしたい

    以下のようなCSVがあったとします。(data.csv)価格で降順にソートしてあります。 line0,line1,line2 1,ぶどう,200(円) 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) 5,みかん,50(円) ある果物を紹介するページがあったとして、 そのページには、他のオススメの果物として、csvからデータを読み込み、 その果物よりも安いもの3件を表示するという仕組みを作ろうと思っています。 ただ、安いものが3件無かった場合に、それよりも高いが、それに近い価格の果物を あわせて3件まで紹介したいと思っています。 今作っているPHPは以下の通りです。 ページに紹介されている果物=($fruits),価格=($price) です。 <?php $Data=file('/data.csv'); $j=0; for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); #表示ページの果物とCSVのline1が違い、価格が$priceよりも小さいものを3件まで表示 if($fruits != line1 and $price >= line2 and $j<3 ){     echo $line1 $line2.' </br>'; $j++; } } ?> で、価格が低いものを3件まで表示することはできました。 ぶどう200円のページであれば、 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) が表示されるようにはできました。 りんご100円のページには、 4,バナナ,80(円) 5,みかん,50(円) の2件のみが表示されています。 上記りんごのように、安いものが3件なかった場合に、 それより価格が高いが一番近いものから順に3件になるまでデータを 取りだしたいと思っています。 今回のりんごであれば、リンゴより安い、バナナ80円、みかん50円、 それに加え、リンゴより高いがリンゴの価格に一番近い、なし150円を表示させたいです。 みかんの場合には、安いものがないため、高いがみかんに近いものから3つ 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) を表示させたいです。 一体どうしたら良いのか、検討も付かず、教えて頂きたいです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • SQLでグループ化して降順表示がうまくいきません

    個人的にMysql、php環境でサイトを作っております。 そこで、素人質問で申し訳ありませんが、SQLでお伺いしたい点があります。 例えば下のようなテーブルがあります。 ▽果物テーブル 果物ID | 果物名 | 売れた日付 1 | リンゴ | 2008/11/1 2 | みかん | 2008/11/2 3 | みかん | 2008/11/3 4 | リンゴ | 2008/11/4 これを、 『最近売れた』果物順に、『グループ化』して並べ替えたいと思い、 下記のようなsqlを組みました。 $sql = "SELECT 果物名, FROM 果物テーブル GROUP BY 果物名 ORDER BY 売れた日付 DESC"; 意図としてはリンゴ、みかんの順に並べ替えたいのですが、 みかん、リンゴの順に表示されてしまいます。 想像では、グループ化したとき、古い日付の方が残ってしまい、 | リンゴ | 2008/11/1 | みかん | 2008/11/2 この部分を対象にして日付を降順にしてしまうからだと思うのですが、 これをうまく解決する方法が分かりません。 MSアクセスなどですと先に二重にクエリをかけるなどすることで 「先に降順で並べ替えたクエリを出し、その後グループ化させる」 など処理が簡単なのですが、phpではどうするのかいまひとつ分からず・・・ 申し訳ありませんがよろしくお願いします。

    • ベストアンサー
    • PHP
  • 環境PHP5 Apache2.0 SQLite

    環境PHP5 Apache2.0 SQLite データベースSQLiteに関する質問なのですが、データベース名、テーブル名のみ解っている状態からテーブルで使用されている項目の一覧などは取得できますでしょうか? データベース名 くだもの テーブル名 くだもの リンゴ バナナ イチゴ  1   3   2  このようにテーブルのみ解っている状態から中身を見ずに項目「りんご」、「バナナ」、「イチゴ」を取得したのです。SQLiteで無くとも、他のデータベースで可能でしたらご教授ください。よろしくお願い致します。

    • ベストアンサー
    • PHP
  • メールの本文にテーブルのデータを書き込む

    ご質問させて頂きます。 access2000、ADOを使用しています。 Aテーブルに以下のようなデータがあります。 1 りんご 2 バナナ 3 みかん このデータを使って 以下のようなメールをお送りしたいのです。 ----------------- 件名 果物について 本文 お世話になっています。 果物について以下の通りです。 1 りんご 2 バナナ 3 みかん ----------------- ご教授して頂けたら幸いです。

  • 初心者です。Access レポートで下記のように作成したいのですが、な

    初心者です。Access レポートで下記のように作成したいのですが、なんか重複データで引っかかってしまいました。 ※(1)作成したいレポート 分類   名前     地名    小計   合計   総合計 -------------------------------------------------- 果物   りんご   青森   100    170   1070               千葉    50               山梨   20      バナナ   千葉   450    450      みかん   栃木   300     450                     150 ---------------------------------------- ワイン   AAAA   ドイツ   500    800    1000            イタリア   300       BBBB    ドイツ   200   200 ↓↓   ↓↓   ↓↓   ↓↓   ↓↓  ↓↓ ※(2)クエリで下記のようなデータがあります。 分類   名前     地名    小計   合計   総合計 -------------------------------------------------- 果物    りんご    青森    100    170    1070 果物   りんご    千葉    50    170    1070 果物   りんご   山梨   20   170   1070 果物   バナナ   千葉   450    450    1070 果物   みかん   栃木   300   450    1070 果物   みかん    栃木   150   450    1070 -------------------------------------------------- ワイン  AAAA  ドイツ   500    800    1000 ワイン  AAAA  イタリア  300   800   1000 ワイン  BBBB  ドイツ   200   200   1000 ↓↓   ↓↓   ↓↓   ↓↓    ↓↓    ↓↓ (1)レポートで      フィールド[分類]:重複非表示 [はい]      フィールド[名前]:重複非表示 [はい]      フィールド[合計]:重複非表示 [はい]      フィールド[総合計]:重複非表示 [はい]にすると下記の様になってしまいしますが、 分類   名前     地名    小計   合計   総合計 -------------------------------------------------- 果物   りんご   青森   100    170   1070               千葉    50               山梨   20      バナナ   千葉   450    450      みかん   栃木   300                     150 ---------------------------------------- ワイン   AAAA   ドイツ   500    800    1000            イタリア   300       BBBB    ドイツ   200   200 ↓↓   ↓↓   ↓↓   ↓↓   ↓↓  ↓↓ 結果的に上記(1)の様にしたいです。名前のフィルドにバナナ、みかんなどの合計はそれぞれ450と450を表示させたいのですが、たれかその方法は教えて頂けないでしょうか。よろしくお願いします。

  • チェックボックス(複数選択可)の値をPOST送信し、

    果物テーブルの中身を入力フォームにて、チェックボックスにより選択 得られた果物コードをSELECT文により、果物名に変換して表示 保存時は好きな果物1、好きな果物2、好きな果物3、、カラムにコードを保存。 例)あなたの好きな果物は? りんご  みかん  いちご  メロン (チェックボックスにより選択) 果物テーブル: 1 りんご 2 みかん 3 いちご 4 メロン 入力フォームよりPOSTにて選択された果物のコードを送信 入力確認画面にて得られたコードより果物名に変換 選択されたコードを保存 上記のようなイメージです。 例えば、りんご、みかん、いちごを選択された場合、(1,2,3)が得られ、これを分解してSELECTする方法が分かりません。 すなわち配列の操作になるかと思われます。 (1,2,3)コードは取得出来ています。 以上、ご教授頂けたら助かります。

    • ベストアンサー
    • PHP