シンプルなテーブルで、書籍のリスト表を公開していますが、これを、ボタンか何かをクリックすると題名順、作家順などで、行を並べ替えたものを表示するしたいのです(エクセルみたいに)。aspなどのプログラミングを使わないと無理ですか?(プログラミングは全然知りません。フリーで公開されているcgiを設置するくらいならできますが)
今のところは並べ替えたhtmlファイルを用意しておいてSSIで呼び出すという方法を考えているのですが、なにか他に良い方法がありましたらご教授ください。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

こんにちは、xruzです。

JavaScript(フレーム対応)で作ってみました。
Ie5.5、NN4.75で動作確認してます。

[ファイル名:sortbook0.html]
<Html>
<Head>
<Title>SortBook</Title>
</Head>
<Frameset Rows="50,*">
<Frame Src="sortbook1.html" name="head" Scrolling="no">
<Frame Src="sortbookx.html" name="book">
</Frameset>
</Html>

[ファイル名:sortbook1.html]
<Html>
<Head>
<Title>sortobj</Title>
</Head>
<Script Language="JavaScript">
<!--
var bookData=new Array(
"Name00000000000000000000000000000000000000000000000","Auth5","1987",1000,
"Name00100000000000000000000000000000000000000000000","Auth5","1987",1000,
"Name00200000000000000000000000000000000000000000000","Auth4","2001",500,
"Name00300000000000000000000000000000000000000000000","Auth3","1868",10000,
"Name00400000000000000000000000000000000000000000000","Auth2","1872",5000,
"Name00500000000000000000000000000000000000000000000","Auth1","1906",2000,
"Name00600000000000000000000000000000000000000000000","Auth5","1987",1000,
"Name00700000000000000000000000000000000000000000000","Auth4","2001",500,
"Name00800000000000000000000000000000000000000000000","Auth3","1868",10000,
"Name00900000000000000000000000000000000000000000000","Auth2","1872",5000,
"Name01000000000000000000000000000000000000000000000","Auth1","1906",2000,
"Name01100000000000000000000000000000000000000000000","Auth5","1987",1000,
"Name01200000000000000000000000000000000000000000000","Auth2","1872",5000
);
var rCnt=13; // 総件数
var cCnt=4; // 項目数
//
var books=new Array(rCnt);
var swk=new Array(rCnt);
function docWrite() {
var wk="";
for(var i=0;i<books.length;i++) {
wk=wk+"<tr>";
for(var j=0;j<cCnt;j++) wk=wk+"<td>"+books[swk[i][1]][j]+"</td>";
wk=wk+"</tr>";
}
parent.book.document.write(wk);
}
function runSort() {
for(var i=0;i<rCnt;i++) {
for(var j=1;j<rCnt;j++) {
if(swk[j-1][0]>swk[j][0]) {
var wks=new Array(swk[j-1][0],swk[j-1][1]);
swk[j-1]=swk[j];
swk[j]=wks;
}
}
}
parent.book.location.href=parent.book.location.href;
}
function setSortKey(col) {
for(var i=0;i<rCnt;i++) {
var sw=new Array(books[i][col],i)
swk[i]=sw;
}
runSort();
}
function startScript() {
for(var i=0;i<rCnt;i++) {
var be=new Array(cCnt-1);
for(var k=0;k<cCnt;k++) be[k]=bookData[cCnt*i+k];
books[i]=be;
}
setSortKey(0);
}
//-->
</Script>
<Body onLoad="startScript();">
<Form Method="post" Name="frm">
<Input Type="button" Name="sort0" Value="書名でSort" onClick="setSortKey(0);">
<Input Type="button" Name="sort1" Value="著者でSort" onClick="setSortKey(1);">
<Input Type="button" Name="sort2" Value="刊行年でSort" onClick="setSortKey(2);">
<Input Type="button" Name="sort3" Value="価格でSort" onClick="setSortKey(3);">
</Form>
</Body>
</Html>

[ファイル名:sortbookx.html]
<Html>
<Head>
</Head>
<Body>
<table border='1'>
<Script Language="JavaScript">
<!--
parent.head.docWrite();
//-->
</Script>
</table>
</Body>
</Html>

Sortロジックは単純比較です。データが多い場合はクイックソートロジックを組み込んでください。でもあまり多いと文字列領域の制限値(?)を越えて表示できないかも。
    • good
    • 0
この回答へのお礼

ひゃあああ。こんなにご丁寧に、本当にありがとうございます。
こんな、フレームまで使った立派なものを...あとは中身を上手に入れ替えるだけですね。ひたすら感謝、感謝です。

お礼日時:2001/10/15 16:58

ブラウザがIEだけに限られてしまいますが、データバインディングという機能があります。


HTML内にCSVファイルを読みこみ、これを操作できる技術です。

参考URL:http://www.interq.or.jp/guitar/kozo/dh/dhsamk075 …
    • good
    • 0
この回答へのお礼

これはすごい!こんな技術があるのですね。早速テストしてみたところすぐできました。あとは本の題名が漢字だとうまく並ばなかったりする部分を工夫して、もっと試してみたいと思います。ありがとうございました。

お礼日時:2001/10/15 16:46

1.データ量はどれくらいでしょうか?


2.プログラムなしであればエクセルファイルをサーバー上に置くことも可能です。(ブラウザ側の設定によってはダウンロードしてしまいますが。)
3.少ない量であればJabaスクリプトでも上記の処理も可能です。
4.CGIではsort命令を使えば可能です。
5.自分のパソコンでエクセルにて蔵書リストを作成し、並べ替えが違う複数のhtmlを作成し、リンクで切り替えることも可能です。
    • good
    • 0
この回答へのお礼

お礼が遅くなり申し訳ありません。
色々なやり方があるのですね。勉強のためにも全部ためしてみてみようと思っています。ありがとうございました。

お礼日時:2001/10/15 16:44

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qソート(データの並べ替え)の逆概念はシャッフル?

ソートは、データの集合を一定の規則に従って並べること。
バブルソート、シェーカーソート、コムソート、選択ソート、
挿入ソート、シェルソート、ヒープソート、マージソート、
クイックソート、バケットソート、基数ソート、
逆写像ソート、ボゴソート、奇偶転置ソート、シェアソート
などがあるそうです。

ではその逆概念の、データの集合を一定の規則に従ってバラバラにすることってなんといいますか?

トランプ(カードマジック)でよく見かけるシャッフルのことでしょうか?
ディールシャッフル、ヒンズーシャッフル、オーバーハンドシャッフル、リフルシャッフル、ファローシャッフル
などがあるそうです。

それらを数学的に扱ったものってありますか?

Aベストアンサー

#2の方の意見と同じです。
一定の規則にしたがっているならシャッフルになっていませんよね。

思うに、ソートするした結果からもとの並びは再現できませんから、不可逆な過程じゃないですか?
1,3,2という並びも3,1,2という並びも昇順にソートすれば、1,2,3で同じになります。
もともと1,3,2だったのか3,1,2だったのかとかは決められません。
ソート前とソート後が1対1で対応しないからです。
そういう意味でソートする過程で情報を捨ててしまっています。

1対1関数でなければ逆関数が定められないように、ソートにも逆の過程は定められないと思いますよ。

Qテーブルで作った表をボタン操作で50音順や価格順に並び替える

アクセスありがとうございます。
以前よりテキストメインのホームページを作成していたのですが
もう少し知的な機能も設定してみようと思いました。
そこで今まで作ってきたテーブルの表をユーザの操作により並べ替えられるようにしたいのです。
例えばボタンを押すことにより「名前順」「価格順」「発売日順」「人気順」等に並べ替えたいのです。
よろしくお願いします。
ちなみに、こないだ気合い入れてJavaスクリプトの辞典を2冊も買ってきましたが字ばっかりで、すぐ眠くなってどうしようもありません。
あと索引でも探してみたのですが並び替えのコマンドが、どうも見つかりません。

Aベストアンサー

javaScriptで実現する方法が載っているページを見つけました。

参考URL:http://tohoho.wakusei.ne.jp/wwwxx038.htm

Qファイルメーカのソート項目変更のスクリプト

ファイルメーカーProで、あるボタンを押すと、年齢でソートした一覧、あるボタンを押すとアイウエオ順でソート、あるボタンでは住所でソート、といったものを作るためのスクリプトをを考えていました。しかしソートは一度決めてしまうと、ソート設定画面を呼び出してソート項目を変えないとソート項目を変更できないように思えます。
 上記のようなソート項目の変更をスクリプトでできるでしょうか。
 

Aベストアンサー

スクリプトではソート順や検索条件などを記憶させておくことが出来ます。

スクリプト編集で「ソート」を選択すると、下にオプションとして
「ソート順を記憶する」「ダイアログなしで実行」のチェックボックスがあります。

先に「ソート順を記憶する」のみにチェックしてスクリプト実行させ、
ダイアログでスクリプト順を指定します。
そのあとで、「ダイアログなしで実行」にチェックをすれば
ご希望の動作になると思います。

Q商品の高い順&安い順の仕組み

楽天とかアマゾンで商品の高い順とか安い順をワンクリックで表示することができますが、あれはどのような仕組みなのでやってるのでしょうか?

Aベストアンサー

こうした仕組みはHTMLではなく、CGIやPHPなどの動的スクリプトで実現しています。

そういうページのURLをよく見ると途中に「?」があって、その後ろに意味不明な文字列がずらずらっと書いてありませんか?
その?以降の部分に並び替えに関する情報が含まれています。
Yahooショッピングの場合、「X=」の値で並び替え項目を判別しているようですね。

もちろんこのためには、商品情報などのデータがHTMLに直書きされていては駄目で、データ部はデータベースに別途保存されています。

Qシェルソートの順位性

 このカテゴリーのNo.137(#35189)の続きなのですが、シェルソートについてご存知の方お願いします。

 上記の質問にて、ヒープソートは完全二分割木型で、同一の値であってもその順序は保証されない、ということがわかりました。
 そこで、配列の内容をソートする処理をシェルソートで組んでみました。

 やろうとしているのは、n1、n2 の2つの配列に値を入れ、n1 が同じ値だったら n2 の値を使ってソートする、という処理です。
 しかし実際には、n3、n4と無制限に続く2次元配列なので各配列を個別にソートしなければならず、n2 を先にソートしてから n1 をソートする、という処理を入れています。
 ところがこれだと、n1 のソート時に同一の値の順序が崩れると、せっかく行った n2 のソートが無駄になってしまいます。

 シェルソートの場合、こういうことは起こるのでしょうか。
 よろしくお願いします。 

Aベストアンサー

ソートには2種類あり、
安定なソート(キーになる値が同値の場合もとの順位が保証される)と
安定でないソートがあります(元の順位が保証されない)

安定なソートでないと多分上記の用件は満たせないでしょう
ソートのアルゴリズムについてはweb上で検索するなり、その手の書籍を買えば
色々載っているでしょう

シェルソートは安定ではないので同値の順位は崩れてしまいますので
安定なソートを使う必要があると思います

参考URLに各種ソートアルゴリズムのソースコードがあります

参考URL:http://www.vector.co.jp/soft/data/prog/se002453.html

Q動的ページのSEO対策はPHP?SSI?

宜しくお願いします。現在サイト構築でTOPページはHTMLで作成(静的)、その他ページはPHPで生成しています。(動的)
SEO的に考えると、動的にPHPでデータベースから読み出している商品情報が検索に引っかかりくいのではないかと思っています。
PHPでは上部部分、下部部分はインクルードで統一ファイルを呼び出し、メインコンテンツの商品紹介ページはデータベースから読み出しています。
SEO的に効果があり、動的に生成できるPHPの利用方法をお教え願えませんでしょうか。
どうぞ宜しくお願い申し上げます。

Aベストアンサー

PHPなどの動的ページでSEOに重要なのはファイルの拡張子です。
最近のクローラはでも収集しますが、.phpや.cgiなどとなっていると価値が低く評価されるようなので、拡張子なしか、.htmlでPHPが起動するようにすると良いと思います。その意味ではSSIの方が利用価値があるでしょう。

また、最近では静的SEOだけではあまり効果がなく、まずは商品に関する情報を充実させ、その商品名を含むテキストリンクを多く貰うようにしましょう。その商品に関連するブログを漁ってトラックバックを打つのが良いと思います。

Qexcel ソート(容量大?)すると 2分割でソートされるけど解決方法は

500行25列くらいのデータを、ある列の種別順でソートすると全部の行が一度にソート出来ずに、途中まで行くとそこから再度ソートされます
(例)名前あいうえお順でソート
1 青山
2 木村

200 和田
201 青木
202 川村

500 和久
本当は1~500行まで通じてソートしたいのですが、なぜか途中でソートが分割されてしましいます。何か一度にソート出来る容量等の制限が有るのでしょうか。初心者なので出来るだけ簡単に教えてください
宜しくお願いします。

Aベストアンサー

二つに分割される理由として考えられる事

名前欄(漢字)をキーにしてソートしている場合
「ふりがな」が、有るセルと無いセルが別々にソートされます
たぶん、上のグループがふりがなが有り、下のグループにはふりがなが無いのでは?
「書式」「ふりがな」で、確認できます

Qssi includeの使用について

SSIのincludeについての質問になります。
<!--#include file="" -->


この場合、
http://www.tatoeba.com/
http://www.tatoeba.com/folder/
http://www.tatoeba.com/folder/bunrui/

などの違うフォルダの中にファイルから、
同一のメニューバーなどを読み出す場合、
やはりそれらに記載されているアンカーテキストや画像は、
絶対パスでしか入力を受け付けないんでしょうか?

大手のウェブサイトなどを見る限り、
どうみても相対パスで入力されていて、
そしてうまく機能しているように思うんですが、
自分ではどうすることも出来ません。

相対パスの場合、
http://www.tatoeba.com/index.html
を呼び出したいんですが、
http://www.tatoeba.com/folder/index.html
にいってしまったりするので、
絶対パスしかないのかな・・・と悩んでおります。

どなたか詳しいかた、
この説明でわかって頂ければ教えてください。

SSIのincludeについての質問になります。
<!--#include file="" -->


この場合、
http://www.tatoeba.com/
http://www.tatoeba.com/folder/
http://www.tatoeba.com/folder/bunrui/

などの違うフォルダの中にファイルから、
同一のメニューバーなどを読み出す場合、
やはりそれらに記載されているアンカーテキストや画像は、
絶対パスでしか入力を受け付けないんでしょうか?

大手のウェブサイトなどを見る限り、
どうみても相対パスで入力されていて、
そしてうまく機能しているように思うん...続きを読む

Aベストアンサー

ということは、要求されていることは、異なる相対パス名を、ひとつのmenu.htmlの中で書きたいということですね。

ということは、menu.htmlとして静的なテキストを書くだけでは、その要求を満たすことはできません。

環境変数や、条件に応じた制御を行う構文を用いれば、可能だと思います。
http://tohoho.wakusei.ne.jp/wwwssi.htm#Echo
http://tohoho.wakusei.ne.jp/wwwssi.htm#If

ただ、相対パスをお使いになる理由は「サーバーへの負荷が軽くなるため」なのでしょうか。相対パスを使ったからといって、サーバの負担は軽くならないような気がするのですが。相対パスは、ブラウザ側で解決されて、HTTPリクエストをブラウザからサーバに投げる段階で既に絶対パスに変換されてますので。

また、サーバの負荷を軽くするためでしたら、SSIを使わないことを最も有効だと思われます。SSIは、その名の通り、サーバ側でincludeしますので、その処理をするための負荷がサーバにかかってしまいます。

参考になれば幸いです。

参考URL:http://tohoho.wakusei.ne.jp/wwwssi.htm

ということは、要求されていることは、異なる相対パス名を、ひとつのmenu.htmlの中で書きたいということですね。

ということは、menu.htmlとして静的なテキストを書くだけでは、その要求を満たすことはできません。

環境変数や、条件に応じた制御を行う構文を用いれば、可能だと思います。
http://tohoho.wakusei.ne.jp/wwwssi.htm#Echo
http://tohoho.wakusei.ne.jp/wwwssi.htm#If

ただ、相対パスをお使いになる理由は「サーバーへの負荷が軽くなるため」なのでしょうか。相対パスを使ったからといっ...続きを読む

Qwindows7でのフォルダ内ソート順について

windows7でフォルダ内のソートをしたいのですが
例えば、1.アーティスト名、2.曲名 という風なソートはできないのでしょうか?

以前XPでは、曲名でソートしてからアーティスト名でソートを行うと
上記のような順序に並んでいたと思うのですが…

見た感じ7では開くたびに毎回ソートしているようなので
以前のソート順を覚えていないのでしょうか??

よろしくお願いします。

Aベストアンサー

まずアーティスト名でソートして、
Shiftを押しながら曲名でソートして下さい。

http://d.hatena.ne.jp/hikouseki/20120702

QSSIの表示確認について

ようやくCSSのみで構成したページが完了しました。
「完了したといってもメイン『メインスペースですね。』
ページのみは完成していません」

そこで、メインスペースが以外完了しているので、
ヘッダ・サイド・フッタの三種類をSSIに切り替えて、
サイトの効率化を図りたいと思います。

SSIに三種類を入れ替えていざ表示!と思いましたら、
なぜかSSIを認識されません。
そこで、ドリームウェバーで「デザイン」を確認したところ、
ちゃんとページが認識されました。

これはホームページスペースにアップロードすると、
ドリームウェバーのように表示されるのでしょうか?

▼現在の状況

 ・ホームページスペースは取得していません。
 ・自PCから該当するページを表示するとSSIが認識されません。
 ・ドリームウェバーの「デザイン」で確認するとSSIが認識します。

Aベストアンサー

SSI機能はサーバの機能になりますので通常の状態では自PCでブラウザで表示させてもSSI構文は認識されずにコメントとして処理されます。つまり現状は特に異常な状態ではありません。
(自PCで確認できるようにするにはサーバソフトをインストール/設定する必要があります)

ホームページスペースを取得し、アップロードさせればSSIとして認識されます。

無料のホームページスペースやプロパイダのサービスなどではSSIが使用できない場合もあります。
また、SSIを利用できる場合でもファイル名(拡張子)はshtmlにしないといけない、とか、
SSIで使用できるコマンド等の制限が付く場合もあります。
いずれにせよサービスの機能説明等を充分確認してからどちらのサービスを利用するか決定してください。


人気Q&Aランキング

おすすめ情報