重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

ただ今簡単な検索機能を作ろうと思っております。
javascript,php,flashなどかなり浅めの知識しかもっておらず、困っております。

概要は、
1.検索ボタンをクリック
2.検索ウィンドウが別ウィンドウで表示
3.表示された大分類一覧から任意の項目を選択
4.選択した項目に対する小分類一覧が表示
5.小分類一覧から目的の項目を選択
です。

大分類も小分類も変動するデータなので、外部ファイルから読み込みたいと考えております。
大分類が30項目ほど、小分類が合計600件ほどです。

イメージとしては、下記のサイトの住所一覧検索のような感じを考えております。
1.http://chizu-route-susumu.jp/
2.http://map.doko.jp/

参考サイトのようにphpなどを使用したデータベースを用いたものでな
く、xmlやcsvを用いた簡易的なもので作成できればと思っております。
ページ遷移も大分類→小分類までで構いません。
外部ウィンドウでも、内部ウィンドウでもどちらでも構いません。

どのように構築するべきでしょうか?
お手数ですが、ご回答よろしくお願い致します。

A 回答 (3件)

補足ね~。

Ajax使いました
prototype.js が一般的なのかと思って
http://www.prototypejs.org/download

Ajaxは適当に調べてみてください。使い慣れると便利!
裏でごちょごちょ通信してデータを得ています

必要なデータをPHPでもいいので、吐き出させます。
それをセレクトフォームなり、<a>タグでくくるなりして
表示するだけです。

最近書いたので実用で使えるかどうかわかりませんが
読み込んだデータをフォームのエレメントに
設定する関数です。
//フォームのエレメントに値を代入する
function setValue( na, val ){
var objs = [];
if( document.getElementById( na ).id == na ) objs[0] = document.getElementById( na );
else objs = document.getElementsByName( na );
if( !objs.length ) return;
for(var i=0,mx=objs.length; i<mx; i++){
var obj = objs[i];
switch( obj.type ){
case 'text': case 'textarea': case 'button': case 'reset': case 'submit': case 'hidden':
obj.value = val; break;
case 'checkbox': obj.checked = (val !=0 || val==true)? true:(!val)? false :''; break;
case 'radio': obj.checked = (obj.value == val); break;
case 'select-one': for(var j=0,mx2=obj.options.length;j<mx2;j++)
obj.options[j].selected = (obj.options[j].value == val); break;
}
}
}
    • good
    • 0
この回答へのお礼

>PHPで吐き出して、<a>タグでくくる

この方法でやってみました。
目的のものに近づきました。
まだWeb製作に慣れてないため、思いつきませんでした。

頂いたスクリプトは、現在解読しているところです。
これが分かればもう少し本格的なところができそうです。

ありがとうございました。

お礼日時:2008/10/31 14:06

<html>


<body>
<form>
<input type="text" id="t1">
<input type="radio" name="sex" value="otoko">男
<input type="radio" name="sex" value="onna" >女<br>

<select id="gengo">
<option value="">---</option>
<option value="Javascript">Javascript</option>
<option value="BASIC">BASIC</option>
<option value="PHP">PHP</option>
</select>
<input type="checkbox" name="pro">プロ
<input type="checkbox" name="car">車所有<br>
</form>
<script>

//phpで以下のデータを得たとする
var tmp="t1=yamada.taro|sex=onna|gengo=BASIC|pro=1|car=1";
var dt=tmp.split("|");//文字列を区切る
for(i in dt){
var buf=dt[i].split("=");
setValue( buf[0], buf[1] );
}

function setValue( na, val ){
var objs = [];
if( document.getElementById( na ).id == na ) objs[0] = document.getElementById( na );
else objs = document.getElementsByName( na );
if( !objs.length ) return;
for(var i=0,mx=objs.length; i<mx; i++){
var obj = objs[i];
switch( obj.type ){
case 'text': case 'textarea': case 'button': case 'reset': case 'submit': case 'hidden':
obj.value = val; break;
case 'checkbox': obj.checked = (val !=0 || val==true)? true:(!val)? false :''; break;
case 'radio': obj.checked = (obj.value == val); break;
case 'select-one': for(var j=0,mx2=obj.options.length;j<mx2;j++)
obj.options[j].selected = (obj.options[j].value == val); break;
}
}
}

</script>
    • good
    • 0
この回答へのお礼

>pipi様

追加スクリプトありがとうございます。
まだ前回の解読中ですが、こちらも合わせてやらせて頂きます。

ありがとうございました。

お礼日時:2008/11/04 15:03

<html>


<head>
<script type="text/javascript" src="prototype.js"></script>
</head>
<body>
<input type="text" id="e">
<input type="button" value="検索" id="a" onClick="viewMenu()">
<form id="b" style="display:none;position:absolute;left:100px;top=100;width:300px;height:100px;border:2px outset;">
<div>
1:<select id="c" onChange="shou(this.value)"></select><br>
2:<select id="d" onChange="modoru(this.value)"></select>
</div>
</form>
<script>
function viewMenu(){
document.getElementById('b').style.display='block';
var txt=[],val=[];
var dt = CSV('test.csv').split('\n');
for(i=0,m=dt.length;i<m;i++){
var buf = dt[i].split('\t');
val.push( buf[0] );
txt.push( buf[1] );
}
setSelectOption('c',txt,val,0,0);
}
function shou(key){
var txt=[],val=[];
var dt = CSV('test2.csv').split('\n');
for(i=0,m=dt.length;i<m;i++){
var buf = dt[i].split('\t');
if(buf[0]==key){
val.push( buf[0] );
txt.push( buf[1] );
}
}
setSelectOption('d',txt,val,0,0);
}
function modoru(val){
document.getElementById('e').value =val;
document.getElementById('b').style.display='none';

}
function CSV(fname){
var ret = '';
new Ajax.Request( fname+'?d='+(new Date).getTime(), { method:"get", asynchronous : false, onSuccess:function(o){ret=o.responseText;}});
return ret;
}
function setSelectOption(id_name ,text_array, value_array, default_value, select_value){
var o = document.getElementById( id_name );
while( o.hasChildNodes() ) o.removeChild( o.lastChild );//子ノードを削除する
for(var i=0, n, mx = text_array.length; i<mx; i++){
var n = new Option( text_array[i], value_array[i],(default_value==value_array[i]),(select_value==value_array[i]));
try{ o.add( n, null) } catch( ex ){ o.add( n ); }
}
}
</script>
----------
test.csv(区切りはtab)
0---
1一目でわかる
2じっくり検討してわかる
3ぐぐったらわかった
4どうしようか迷う
5もっと説明する人を待つ
6無視する
-----------
test2.csv(区切りはtab)
0---
1あほかこのレベル!
1くだらなすぎる!
1ふ~ん。そうか
2ふむふむ
2見栄はって知ったかぶり
2ためになったなぁ~
3世の中わからないことばかり
3ややこしや~
4なんだこれ
4さらに質問しようか?
4愚問だったらどうしよう?
5こいつは無視だ!
5あ~早くだれか教えてくれ~!
6ひたすら待つ
6違う板をみつけてそちらに聞く

この回答への補足

ありがとうございます。

今簡単にサーバーにアップして試してみたのですが、うまく表示されず(</body></html>は付け足しました)、補足で質問したいのですが、まだプログラミングを初めたばかりなので、どこに問題があるのか分かりません。
prototype.jsのファイルがないな、というレベルなのです。

なので、一度自分でソースをじっくり解読して考えてみます。
そこで、構築法を理解できれば、あとは何とかなりそう、かなと思っております。

ありがとうございます。

補足日時:2008/10/29 21:52
    • good
    • 0

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