質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

2回答

1607閲覧

地域を選択したらその地域にあるお店の情報をカード状に並べて表示したい

mokkun0102

総合スコア11

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/11/17 05:53

###前提・実現したいこと
Webサイトの地域検索機能についての質問です。

日本全国にある、あるジャンルのお店の情報を、選択した地域のものだけ表示させるようにしたいと考えています。
そこで、HTMLには以下のようなプルダウンを設置しました。

###プルダウンのソースコード

HTML

1<FORM name="form"> 2<SELECT NAME="select"> 3<option SELECTED> ▼ 地域を選択 </option> 4<option value="hokkaido">北海道</option> 5<option value="aomori">青森県</option> 6<option value="iwate">岩手県</option> 78910</SELECT> 11<INPUT type="button" onclick="if(document.form.select.value){location.href=document.form.select.value;}" value="検索"> 12</FORM>

途中省略しましたが、47都道府県分です。

始め47つの固定ページを作り、そのリンクをvalueに設定することで実現しようと思っていましたが、あまり内容のないコンテンツをたくさん作りたくないので、他の方法を考えています。
※地域分のタグを作り、そのタグページを表示するというものも、同じ理由でNGとします。

そこで次に考えたのが、店舗ごとの情報をカード状にまとめ、id属性をつけて、そのidとプルダウンのvalueがイコールの時だけカードを並べて表示するような処理ができないかと考えました。
カードの例は下のような感じです。

###プルダウンのソースコード

HTML

1<div class="area-card" id="hokkaido"> 2<img href="#" /> 3〇〇 北海道店 4住所:△△ 5電話:000-000-0000 6</div>

表示する場所については、同一ページ内のプルダウンの下がベストですが、難しければ他の専用ページへの表示でも構いません。

プログラミング初心者なのでできるかどうか、またできるとしたらどのような記述が必要なのかがわからず困っています。
PHPでできるのか、javascriptを使わなければできないのかも分かりません。

どなたか分かりやすく教えていただけると幸いです。

###補足情報(言語/FW/ツール等のバージョンなど)
WordPress:バージョン4.9
サーバー:Xserver

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

抽出条件が地域だけなら、各都道府県ごとにファイルをつくって
jsonデータをいれておき、ajaxで受け取るのがシンプルです
さまざなな検索条件が必要ならやはりRDBの導入を検討下さい

sample

  • main.htm

html

1<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script> 2<script> 3$(function(){ 4 $('#search').on('click',function(){ 5 var num=$(this).siblings('[name=pref]').val(); 6 $('#view').text(''); 7 if(num!==""){ 8 $.ajax({ 9 url:'pref'+num+'.txt', 10 dataType:'json', 11 }).done(function(data){ 12 data.map(function(x){ 13 $('#view').append($('<div><img src="'+x.img+'"><div>'+x.name+'</div><div>'+x.address+'</div><div>'+x.tel+'</div></div>')); 14 }); 15 }).fail(function(xhr,err){ 16 if(xhr.status==404){ 17 $('#view').text('ファイルが見つかりません'); 18 } 19 console.log(err); 20 }); 21 } 22 }); 23}); 24</script> 25 26<form> 27<select name="pref"> 28<option value=""> ▼ 地域を選択 </option> 29<option value="01">北海道</option> 30<option value="02">青森県</option> 31<option value="03">岩手県</option> 32</select> 33<input type="button" value="検索" id="search"> 34</form> 35<div id="view"></div>
  • pref01.txt

main.htmと同じディレクトリに置く

json

1[ 2{"img":"hokkaido_hoge.htm","name":"〇〇 北海道hoge店","address":"△△","tel":"000-000-0000"}, 3{"img":"hokkaido_fuga.htm","name":"〇〇 北海道fuga店","address":"△△","tel":"000-000-0000"} 4]

投稿2017/11/17 06:24

編集2017/11/17 07:16
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mokkun0102

2017/11/17 06:43

回答ありがとうございます! すみません、無知なものでjsonもajaxもRDBも聞いたことがありません>_< プルダウンの選択肢は都道府県のみですが、都道府県ごとのjsonファイル?を作るということでしょうか? 何もわからなくてすみません...。
yambejp

2017/11/17 07:17

簡単なサンプル付けときました、できる範囲で試してみて下さい
mokkun0102

2017/11/17 09:42

すみません、お手数おかけしました! 本当にありがとうございます! あまりに知識がなさすぎてサンプルいただいても苦戦しています...。
yambejp

2017/11/17 12:28

所定の名称でファイルを2つ作ってWEB上の適当のなディレクトリに置くだけですが うまくうごきませんか?
mokkun0102

2017/11/17 13:35

WordPressでのmain.htmの場所が分かりませんでした^ ^; せっかくサンプルまで作ってくださったのに、自分が無知すぎて上手く動作させられず申し訳ありません...。 他の方の回答でなんとか動きそうなので、今回はそっちの方法で試してみようと思います。 ありがとうございました!!
yambejp

2017/11/17 13:38

他の方の回答で解決したようならよかったです ちなみにmain.htmは自分で書く前提だったのですが 既存のhtmlがあるならそれに追記するだけで動いたはずなんですけどね・・・
mokkun0102

2017/11/17 13:43

なるほどです! ただ聞いた話なので詳細はわかりませんが、WordPressはページのリクエストを受けた時に、データベースに格納されたデータをPHPにて組み立てることで、ページを表示しているそうです。 なので、htmlファイル自体が存在しないとかなんとか...。 間違っていたらすみません^ ^; htmlファイルがあれば上の内容で動くんですね! 勉強になります>_<
guest

0

ベストアンサー

県ごとのページを作りたくないということですと、wordpressの枠内でやるなら一つのページに書くしかないですよね。
全部のカードをHTMLにベタ書きし、javascriptで制御する、というのはいかがですか。

サンプル

javascript

1document.getElementById('search').addEventListener('click',function(e){ 2 const pref = document.getElementById('pref').value; 3 document.querySelectorAll( `.area-card.show` ).forEach( e => e.classList.remove('show') ); 4 document.querySelectorAll( `.${pref}` ).forEach( e => e.classList.add('show') ); 5});

投稿2017/11/17 12:42

Lhankor_Mhy

総合スコア36115

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mokkun0102

2017/11/17 13:32

回答ありがとうございます! Lhankor_Mhyさんのやり方を試してみたところ、上手く動作しました! とりあえずこれでやっていってまた壁にぶつかったら質問させてください!! 助かりました^ ^
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問