- 締切済み
現時刻とjson(オブジェクト形式)内比較抽出
色々悩んで解決策が見つからず、皆様のご教授を頂きたくよろしくお願いいたします。 【目的】 <Webトップページに現在放映している番組をテキスト表示し、次の番組は、リンク情報無でその下に並べて表示したい> 放映番組表を作成しました、作成時、元となる番組情報をjsonオブジェクト形式データにて作成し、javascritにて、HTML側で取込み表示を行いました。ここまでは、問題なく表示までできました。 色々な方(異動などで変更する場合がある)が、メンテナンスする事を考え、現データを選択しました。 【課題】 元となるjsonデータ内には、ID,開始年月日時分情報,終了年月日時分情報,番組名称(リンク付) などがあります、それを元にして、今現在の時刻で放映している番組テキストをWebトップページ内のdiv要素内にリアルタイムで表示させたいのです。 【参考までに、番組表は、dhtmlxScheduler_v40_stdをベースに構築しています。】 <サンプルコードを下記に記します> [{"id":14010501,"start_date":"2014-01-05 06:30","end_date":"2014-01-05 07:00","text":"<a href=\"http://www.yahoo.co.jp/\">番組1</a>","details":"新番組"}, {"id":14010502,"start_date":"2014-01-05 07:00","end_date":"2014-01-05 07:30","text":"<a href=\"http://www.yahoo.co.jp/\">番組2</a>","details":"新番組"}, … {"id":14010517,"start_date":"2014-01-05 22:00","end_date":"2014-01-05 23:00","text":"<a href=\"http://www.yahoo.co.jp/\">番組11</a>","details":"新番組"}, {"id":14010518,"start_date":"2014-01-05 23:00","end_date":"2014-01-05 23:30","text":"<a href=\"http://www.yahoo.co.jp/\">番組12</a>","details":"新番組"}, {"id":14010519,"start_date":"2014-01-05 23:30","end_date":"2014-01-05 24:00","text":"<a href=\"http://www.yahoo.co.jp/\">番組13</a>","details":"新番組"}, {"id":14010601,"start_date":"2014-01-06 06:30","end_date":"2014-01-06 07:00","text":"<a href=\"http://www.yahoo.co.jp/\">番組14</a>","details":"新番組"}, {"id":14010602,"start_date":"2014-01-06 07:00","end_date":"2014-01-06 07:30","text":"<a href=\"http://www.yahoo.co.jp/\">番組15</a>","details":"新番組"}, {"id":14010603,"start_date":"2014-01-06 07:30","end_date":"2014-01-06 08:00","text":"<a href=\"http://www.yahoo.co.jp/\">番組16</a>","details":"新番組"}, …] (例) 今現在の年月日時分とjson内を比較検索して、該当の番組情報があったら、そのデータを抽出したいのです。抽出情報としましては下記の情報になります。 1 "start_date":"2014-01-06 07:30", 2 "end_date":"2014-01-06 08:00", 3 "text":"<a href=\"http://www.yahoo.co.jp/\">番組16</a>", の部分、実際には下記のデータを抽出できればと思います。 1 start_date (放映開始時間)の 07:30 2 end_date (放映終了時間)の 08:00 3 text リンク情報付き番組内容の <a href=\"http://www.yahoo.co.jp/\">番組16</a> データしては下記のイメージになります。 ↓現在放映中の番組 07:30 ~ 08:00 番組16(リンク付) ↓次の放映番組 08:00 ~ 9:00 番組17(リンク無) となるようにしたいのです。(表示方法は、CSSで対応するつもりです) このような説明でお分かりいただけますでしょうか。 どうかご教授の程よろしくお願い致します。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- shockatz
- ベストアンサー率80% (153/191)
あまり漠然とした回答も無責任な話ですが。 【質問主様へ】 質問の範囲が広いので、まず、どの部分がわからないのか明確にしてください。 具体的な話はそれからに。 1.json文字列パースによるのObject配列への変換(Ajax使っているならOKみたいですが) 2.現在時刻の文字列整形(抽出比較のため) 3.効率的な抽出処理 4.3をさらに掘り下げた処理(指定時刻に現番組、次番組がない場合など) 5.取得したObject配列要素の出力形式への整形 6.出力要素への反映(これは誰でもわかるかwww) どの部分?
- askaaska
- ベストアンサー率35% (1455/4149)
この【~】てきっとその時によって数が変わる? だとすると 【~】だけじゃなく それを囲う<div>も動的に埋め込むしかないの まずしなくちゃいけないことは ・JSONをオブジェクトに変える 次はその中のデータの数だけ繰り返す そして文字列として ・start_date、end_dateを取り出して【~】を作る ・textを取り出して【~】を作る ・それをdivで囲う を作ってdocument.writeなりで出力すればいいと思うわ
お礼
本当に何度も申し訳ありません、ソースでの具体的なご教授は可能でしょうか?難しい場合、一から見直したいと思います。ありがとうございます。何卒、引き続き、ご教授の程よろしくお願い申し上げます。
補足
全体の流れは理解できていたつもりでしたが、さて、実行しようとすると、とまってしまって、本当に何度も申し訳ありません、ソースでの具体的なご教授は可能でしょうか? 何度も何度もすいません、可能でしたらで結構です。私の知識不足にお付き合い頂きましてありがとうございます。
- askaaska
- ベストアンサー率35% (1455/4149)
どこがわからないのかを教えてくれれば そこのヒントを提供することはできると思うの
お礼
たびたび、申し訳ありません。 何卒、ご教授のほど、よろしくおねがいいたします。
補足
重ね重ねご連絡ありがとうございます。 下記にトップページに埋め込むもとになるソースを記載いたしました。この形で解決策をご教授可能でしょうか? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <!-- saved from url=(0014)about:internet --> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>トップページに表示用</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body bgcolor="#ffffff"> <div style="position: relative; width: 199px;"> <img name="画像名称" src="画像名" width="199" height="267" id="画像名称" alt="******" /> <div id="schedule" style="position: absolute; top: 140px; left: 9px; width: 180px;"> <div style="background-color: #FFF; padding-top: 3px; padding-bottom: 3px; height: 55px;"> <div class="dhx_event_move dhx_title" style="font-size: 15px; font-family: 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'メイリオ', Meiryo, Osaka, 'MS Pゴシック', 'MS PGothic', sans-serif; padding-left: 5px; font-weight: bold;"> 【07:30 ~ 08:00】 </div> <div class="dhx_body" style="font-size: 15px; width: 170px; padding-left: 5px; padding-right: 5px; font-weight: bold;"> 【<a href="http://www.*******.co.jp/">番組16</a>】 </div></div> <div style="background-color:#ccc; padding-top: 3px; padding-bottom: 3px; height: 35px;"> <div class="dhx_event_move dhx_title" style="font-size: 12px; font-family: 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'メイリオ', Meiryo, Osaka, 'MS Pゴシック', 'MS PGothic', sans-serif; padding-left: 5px; color: #666;"> 【08:00 ~ 09:00】 </div> <div class="dhx_body" style="font-family: 'ヒラギノ角ゴ Pro W3', 'Hiragino Kaku Gothic Pro', 'メイリオ', Meiryo, Osaka, 'MS Pゴシック', 'MS PGothic', sans-serif; padding-left: 5px; padding-right: 5px; font-size: 12px; width: 170px; color: #666;"> 【番組名17】 </div> </div> </div> </div> </body> </html> 【】の部分に現在時刻と比較した結果を返したいと思っているんです。 上記の内容でご理解いただけますでしょうか? どうか、ご教授のほどよろしくお願いいたします。
- askaaska
- ベストアンサー率35% (1455/4149)
JSONをJavaScriptのオブジェクトに変換後 for文で回して 現在時刻とstart_date、end_dateを比較するだけ だと思うんだけど 何か問題なの? それともそれが面倒だと言いたいの?
お礼
お忙しい中お返事をありがとうございます。 なかなか自分の思い通りにできない事にあたった時、 良い解決策が見つからないのが現実で。 本当に申し訳ありません、可能な限りで結構です、ソースなど具体的なご教授頂けると大変助かります。 何卒、引き続き、ご教授のお願い致したいところです。 無理を承知でのお願いになります。
補足
ご連絡ありがとうございます。 お返事遅れまして申し訳ありませんでした。 厳しいお言葉を受けて、再度チャレンジしてみたいと思っています。しかし、実際に構築しようと止まってしまっていました。全体の流れを今一度ご教授頂けると助かります。可能でしょうか?
お礼
お時間のお忙しい中、お付き合い頂きましてありがとうございました。もっと、技術を高めたいと思っております。重ねて、ありがとうございました。自分でも、サクッと答えられるようになるように頑張ります。
補足
ご連絡ありがとうございます。 ソースコードを記載頂きたく下記のご回答につきましては、 全てお願いしたいのですが、お恥ずかしいところではございますが本音でございました。 1.json文字列パースによるのObject配列への変換(Ajax使っているならOKみたいですが) 2.現在時刻の文字列整形(抽出比較のため) 3.効率的な抽出処理 4.3をさらに掘り下げた処理(指定時刻に現番組、次番組がない場合など) 5.取得したObject配列要素の出力形式への整形 6.出力要素への反映(これは誰でもわかるかwww) 何度もお手数をおかけしてしまいましたが、もう一度、自分で何とかしてみます。ありがとうございました。