• ベストアンサー

文字列や画像のurlをhtmlに代入したい

美容室のウェブサイトを作成しています。 スタッフは全員プログラミングができないのですが、 デザインとxhtmlのコーディングくらいはできるので 自分たちで作ることになりました。 ですがその中に1つ難題がありまして、それがphpなのかJavaScriptなのか、 はたまた何らかのcgiを探すべきなのか皆目見当もつかないので、 調べようにも抽象的にしか検索できず困っています。 作りたいのは美容師の出席簿のようなものなんですが、 店長がスタッフのスケジュールをxmlで書いてアップするので そのxmlを読み込んで表示してほしいというのです。 サイトは男性向けと女性向けと2パターン作るのですが 店自体は同じなので出勤する美容師も同じ、ということで 1つのファイルで同時に2サイトを更新したいとのこと。 ちょうど外注で作成中のFlashサイトがそういう造りになっているので 同じ要領で更新できると便利なのだそうです。 ページ構成は当日、翌日、翌々日の3ページで、やりたいことは、 1.仮に3ページをtoday.html、tomorrow.html、da_tomorrow.htmlとすると  それぞれ日付が変わったら1日づつ内容もずれて、da_tomorrow.htmlとtomorrow.htmlの内容がtomorrow.htmlとtoday.htmlに置き換わり、  さらにもう翌日の予定がda_tomorrow.htmlに表示されるようにしたい 2.写真に枠(背景画像で表現)をつけ、横1列あたり4~5人で人数分並べたい 3.xmlから引っ張りたいのは、 ・日付 ・その日に出勤する美容師の写真(url)、名前(文字列)、予約の空いている時間帯(文字列) です。 xmlはテキストエディタで更新するので、その程度の知識はあるようです。 必要によってはtxtでも、さらに言えばcsvでもたぶん大丈夫です。 汎用のものや、掲示板の応用などで使えそうなcgiがあるのであれば もちろんそれでも結構です。(設置はわたしができます) ただ、デザイン(テンプレ)は数人で作成することと、 デザインとコーディングをやる子たちは本当にそれしかできないので できればhtml側を複雑にしたくありません。理想としては、 <hN><!-- 日付 -->出勤美容師一覧</hN> <!-- 人数分繰り返し ここから --> <div style="background:url(xx.gif); float:left;"> <img src="<!-- 美容師の写真画像 url -->" style="margin:5px;" /> <!-- 美容師の名前 --><br /><!-- 出勤時間 --> </div> <!-- 人数分繰り返し ここまで --> というイメージで(伝わりますか?)、 何らかの短いプログラムか独自タグのようなもののコピペでもって、 html側に「ここですよ~」と指定するだけにしたいのです。 (※わかりやすいよう、例ではスタイルをインライン指定しています) これを実現するためにはどうしたらいいでしょうか? もしご説明の足りない部分がありましたらご指摘ください。 どうぞよろしくお願いいたします。

  • XML
  • 回答数4
  • ありがとう数13

質問者が選んだベストアンサー

  • ベストアンサー
  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.4

訂正、XMLからのテーブル書き換えはこちら↓ http://allabout.co.jp/internet/javascript/closeup/CU20051030A/index.htm でした。

f_stream
質問者

お礼

その節はお世話になりました。 色々調べまして、結局 Adobe Spry を利用して実装しようと思います。 デザイナー目線でいくと一番簡単そうでしたので…(^-^;) 詳しく教えていただいたおかげで、今まで何となく見過ごしていた JavaScriptライブラリというものを、具体的に知ることができました。 Spryに慣れてきたらjQueryやprototype.jsにも挑戦してみようと思います。 ご回答ありがとうございました!

f_stream
質問者

補足

重ね重ね、ありがとうございます。 お礼が遅くなりましてすみません。 たぶん、もう1歩手前から調べないといけないようで、 悲しいほどにわからないので、まだ格闘しています(;_;) もう少し頑張ってみて、またご報告します!

その他の回答 (3)

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.3

「上に挙げたような目的のためのTIPS」 ↓はどうでしょう。動的にXMLデータから<TABLE>の中身を書き換えています。 http://allabout.co.jp/internet/javascript/closeup/CU20050630A/index.htm

  • yyr446
  • ベストアンサー率65% (870/1330)
回答No.2

javascriptの知識があるなら、xmlからデータを取得するのはそんなに難しくないと思います。AJAXという技術を使ってXMLファイルからデータを読み込み中身をパース(解析)して、必要なデータを、DOM操作関数でhtmlの要素にセットするだけですね。 prototype.jsとかJqueryとかを使えば、必要な機能が関数(クラス)化されているので、適時にアレンジするだけです。  ページの見栄えを良くするデザインの方がよっぽど難しいです。 さらに、サーバーサイドのプログラム(PHP)で、予めデザインされた ページ(テンプレ)に、XMLを読み込んだデータをセットして出力するようにすれば、応用範囲が広がります。 XMLのアップデート機能や、個人別スケジュールの取得、ダウンロード なんかも出来ます。 基本的な機能だけなら、難易度は低いです。従業員数名ならDBにする必要も無くXMLがよい選択だと思います。

f_stream
質問者

お礼

丁寧なご回答ありがとうございます。 XMLがよい選択だと言っていただけてホッとしました。 方向性は間違っていないのですね。 PHPのほうが後々の使い勝手は良さそうですが、 自分でガリガリ書けないので5000円程度で探しているところです。 HTMLスキン式アイコン日記帳なんていうものがあれば応用できそうだと思うんですけど… これがなかなか見つかりません・゜・(>_<)・゜・ Javascriptに関しても同じで、配布されているソースを応用するとか DWで書ける程度の簡単なものなら使ったことはあるんですが、 1からは書けないのが困りものです。 で、「DOM操作関数」「prototype.js」「Jquery」について今少し検索してみました。 慣れるまではデバッグでつまづくかもしれませんが、面白そうですしJqueryあたりはじっくり見ていけば何とかなりそうな気もします。 上に挙げたような目的のためのTIPSが載っていたり、 または易しめの解説サイトでお勧めなどがありましたら、ご紹介いただけると嬉しいです。

  • Wingwrong
  • ベストアンサー率38% (5/13)
回答No.1

私も別件で探していたのですが、「会議室予約」の仕組みを使えば、フリーのCGIでいけないでしょうか。会議室名の代わりに、従業員名を入力することでできそうな気がします。 おそらく自分でXMLを表示させるプログラムを作るというのは、相当難しいと思いますよ。

f_stream
質問者

お礼

会議室予約CGI、探してじっくり拝見してみました。 オンライン予約の必要がないので今回は使用を見送りましたが、たしかに応用できそうです。 教えてくださってありがとうございました!

関連するQ&A

  • 【関数】B列の日付がA1より5日前なら文字色変更

    エクセルの関数について教えてください。 条件付き書式でもよいです。 A1に「=today()」で日付を表示させています。 B列は、手入力で任意の日付を入力しています。 C列には人数を入力しています。 何日(B列)は何人(C列)という表です。 たとえば、 B2の日付が、A1の日付より5日前なら、 B2、C2の文字色を赤色にする ということはできますか?

  • あるセルにデータが入力された日を表示

    A列(A1)のセルにデータが入った場合、D列(D1)にそのセルに データが入力された日付を表示させたいのですが、どのように やったらいいでしょうか?TODAY関数を使うと毎回更新されて しまいます。 TEXT関数+TODAY関数で出来るかな?と思ったのですが、 =TODAY()を使うとセルに入力された日でなくて、ファイルを開いた 日付に毎回更新されてしまいます。 A列のセルにデータが入った時にD列にその入力日を表示させたい のです。こういう事は簡単に関数を使って出来ませんか?わかる方 がいれば教えてください。

  • .NET .ADO でのSQL文でEXCELファイルのUPDATEで時刻の列に文字があると時刻が正しく入力されません。

    文字が含まれない列の時刻は正しく更新されるのですが、文字が含まれる列は通常は右寄せのはずが左寄せになってしまい、表示形式は「h:mm」なのですがセルを選択すると上のバー?に出るはずの秒が出ません・・・書式設定は一応、時刻になっているのですが・・・たぶん文字列になってしまっているような感じです。 EXCELファイルの形式は下記のようになっています。書式設定は、A列はすべて日付、BとC列はすべて時刻になっています。問題の「休」のセルも時刻のままです。 ........A.........B........C..... 1......日付......出勤.....退勤 2....2010/1/1....7:54....18:24 3....2010/1/2....休........ 4....2010/1/3....7:48....18:28 5....2010/1/4....7:56....18:33 日付と退勤の列はうまく更新できるのですが、B列の出勤列に「休」と書かれている行があるとB列の更新がうまくいきません。 ソースは、下記のようになっています。 con.ConnectionString = _ "Provider=Microsoft.ACE.OLEDB.12.0; " & _ "Data Source=" & _ "C:\DATE\タイムカード.xls;" & _ "Extended Properties=""Excel 12.0;HDR=YES;""" Dim cmd As New OleDbCommand() cmd.Connection = con con.Open() cmd.CommandText = "UPDATE [Sheet1$] SET 日付 = @hiduke, 出勤 = @jikoku, 退勤 = @nijikoku WHERE 日付 = 40203" cmd.Parameters.Add("@hiduke", OleDbType.Variant).SourceColumn = "日付" cmd.Parameters("@hiduke").Value = Format(DateValue("2010/1/21"), "yyyy/MM/dd") cmd.Parameters.Add("@jikoku", OleDbType.Variant).SourceColumn = "出勤" cmd.Parameters("@jikoku").Value = Format(TimeValue("2:40"), "H:mm") cmd.Parameters.Add("@nijikoku", OleDbType.VarChar).SourceColumn = "退勤" cmd.Parameters("@nijikoku").Value = Format(TimeValue("15:2"), "H:mm") cmd.ExecuteNonQuery() .NET自体初めてなのでおかしなところもあると思いますが、色々試しても結局どうにもならず現在は上記のような状態です。 上記の出勤と退勤のOleDbTypeが違いますが色々試しましたがすべてダメでした・・・ 試したのは下記になります Variant VarChar VarChar, 255 Char DBTime どのようにすればうまくいくでしょうか?

  • index.php から外部関数に飛び、文字列を返してきてindex.

    index.php から外部関数に飛び、文字列を返してきてindex.phpで XML形式で表示するプログラムはどのように書けばいいんでしょうか? /* ---func1.php--- */ function func1($aa,$bb){ $xml_code = "<func1>\n"; $xml_code .= "<aaa>".$aaa."</aaa>\n"; $xml_code .= "<bbb>".$bbb."</bbb>\n"; $xml_code .= "</func1>\n"; return ($xml_code); } /* ---func2.php--- */ function func2($cc,$dd){ //DBからデータを取得して $sql = "SELECT ccc, ddd, eee, tel FROM tbl_a WHERE id = ".$id; $moji_db = ""; $result = mysql_query($sql); while ($row = mysql_fetch_assoc($result)){ $xml_code = "<func2>\n"; $xml_code .= "<ccc>".$row['ccc']."</ccc>\n"; $xml_code .= "<ddd>".$row['ddd']."</ddd>\n"; $xml_code .= "<eee>".$row['eee']."</eee>\n"; $xml_code .= "</func2>\n"; } return ($xml_code); } index.php で 両方の$xml_codeを出力する 以上のようなプログラムなんですけど、 index.phpでのxmlでの表示の仕方がわかりません。 /* ---index.php--- */ <?php // require func1.phpとfunc2.php function xml_make(&$xml ){ // DB 接続 // XML Header生成 echo "<?xml version=\"1.0\" encoding=\"utf-8\"?>"."\n"; echo func1(); echo func2(); // XML Footer生成 // DB 切断 } ?> としてindex.phpを実行するとIEで以下のエラーが出ます。 (firefoxではでません。両ブラウザ共、ソースを表示するとXML形式にはなっていますが・・) 「XML ページを表示できません XSL スタイル シートを使用した XML 入力は表示できません。 エラーを訂正してください。 [更新] ボタンをクリックするか、または後でやり直してください。 -------------------------------------------------------------------------------- XML ドキュメント内では最上位の要素に限り、使用できます。 」 それと文字列($xml_code)をSimpleXMLで処理するにはどうしたらいいのでしょう?

    • ベストアンサー
    • PHP
  • エクセルの日付について教えてください

    現在、G・H・Iの3(統合したセル)に日付を出す為に=TODAY()と式を覚えさせています。この場合、エクセルを開いた時点で日付が更新されてしまいます、エクセルの内容を変更や訂正をした場合のみ日付を更新できる方法を教えてください。変更対象セルはC9~C28・E9~E28・H9~H28・I9~I28の範囲で変更した時に日付が更新できる方法があればいいのですが、変更対象が広範囲すぎる場合はC・E・H・Iのどれか1列でもかまいません。

  • DB情報をもとにRSS作成したい

    LAMPで作成しています。 「1つのページ」がある「テーブルの1レコード」に、一対一で対応しています。 DBの内容は、 =========================================================== ユニークな文字列(GUID) サイトのカテゴリ構造を表すために、1, 1.1, 1.2,1.2.1 のようなツリー構造をあらわす文字列(これで、何階層目にあるかもわかる) ★タイトルその1(<title>と<h1>の中に表示しています) ★タイトルその2(パンクズ上の文字列・・・これは、「その他」のようなそれだけでは意味が不明な場合もある) metaのキーワード ★そのページのサマリ(半角100バイトほど。meta descripitonとし、また、bodyタグの内側に、同じ内容を表示) ★最新更新日(いまは「2011-09-07」形式にしてるが、時間や秒まで入れるようにしてもいい) charengfreq(daily,monthlyなど・・・sitemap.xmlのためのものなので不要?) 優先度(1,2,3,...10など・・・sitemap.xmlのためのものなので不要?) です。 ●今はまだないですが、「そのページをはじめたつくったときの日時」というフィールドを追加してもOKです。 =========================================================== です。 で、ここから、 第2階層(コーナー)ごとに、RSSを手動で生成したいと思っています。 いろいろぐぐったのですが、rssの各要素の意味合いがわかりづコーディングができません。 どのようにくめばいいのでしょうか? コーディング全体をお教えいただければありがたいですが、 コーディングするときのロジック(とくに、DB上の何が、RSS上の何と対応してるか) をお教えいただいて、そこから自分でくむのでもかまいません。 以上、よろしくお願い申し上げます。

    • ベストアンサー
    • PHP
  • 関数を使った月計の出し方

    エクセルを使ってカルチャースクールの参加者名簿を作成しています。 シート1の内容は講習日の日付(TODAY()+1)と名簿です。 いつも講習前日に作成し、参加予定者には○を、欠席予定者には×を入力し、COUNTIF関数で出席者と欠席者の合計人数を出しています。 シート2の内容は、1ヶ月の参加者総数(日付ごとに)です。 シート1は毎日更新し、上書き保存しています。 (データ保存でなく、プリントアウトをして保存してるんです) シート2にはいつも手打ちで入力するのですが、関数を使って自動的に(シート2には入力しなくて良い方法で)シート1の出席者と欠席者の合計人数を入力する事は出来るのでしょうか。 Today関数とIF関数を使ってシート1の合計人数をシート2へ自動入力する方法を考えたのですが、この方法だと日付が更新される毎にシート2のデータが消えてしまいます。 コピーして値を貼り付ける事も出来るのですが、効率の良い方法は無いかと思い質問させて頂きました。 わかりづらい説明で申し訳ありませんが宜しくお願いします。

  • HTML出力のエスケープ文字を正しく表示したい

    Webブラウザからアクセスすると画面に次のように文字列が表示されます。 "\n<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"ja\" lang=\"ja\">\n <head>\n <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n <meta http-equiv=\"Content-Style-Type\" content=\"text/css\">\n <meta http-equiv=\"Content-Script-Type\" content=\"text/javascript\">\n <body><a href=\"/menu/\">\u30E1\u30CB</a> エスケープを取り除き、さらに日本語を正しく表示するにはどうすれば良いでしょうか ruby 1.9.3p374 (2013-01-15 revision 38858) 上に示したのは、以下で出力したものです。 #!/usr/local/bin/ruby # -*- encoding: utf-8 -*- html = 記事上に記載の文字列 p html.gsub(/\\u([\da-fA-F]{4})/) { [$1].pack('H*').unpack('n*').pack('U*') }

    • ベストアンサー
    • Ruby
  • Googleアシスタントを無効にしたいです。

    Google検索(LLC?)アプリを更新したら、スマホのホーム画面に「Googleアシスタントが無効です タップして続行」が非表示にできません。 タップしてみたら、「スナップショットウィジェットを使用するには、Googleアシスタントをオンにする必要があります」と表示が出ました。 オンにしたら、日付は表示されましたが、更新前とスタイル?(デザイン)が変更されていました。 スタイルは3つから選べるようですが、枠?(日付と曜日が丸く囲まれている)があります。 1、Googleアシスタントは無効には、できなくなったのでしょうか? 2、デジタルアシスタントアプリの下にある「音声入力(Google)」の横にある歯車、「音声出力をなし」にすると、アシスタントの音声がならなくなるだけですか? 3、日付のデザインですが、元には戻せませをんか? 4、日付の周りの枠?を消すことは出来ませんか? 5、ウィジェットにある時計の、デジタル時計を表示させましたが、日付が小さかったです。日付を大きくできませんか? 1つだけでもご回答頂けると有難いです!! AndroidOneS5 バージョン11です。 とにかくGoogleアシスタントが起動しないようにしたいです。ホーム画面にも表示もされないようにしたいです。 よろしくお願いします!!

  • msnのsitemap.xmlの更新の日付を変更したいのですが。

    msnにtopページだけですが今までインデックスされて いたのですが、突然消えてしまいました。 それでここで質問して sitemap.xmlの更新日付けを変更すればいいと 教えていただいたのですが そのページがみつかりません。 3・4時間探してみましたが、ダメでした。 Yahoo!のYahoo!エクスプローラや Googleのウェブマスターツールなら 見つけられたのですが。 肝心なMSNのはみつかりません。 どなたかmsnのURLでもそこにたどりつく手順でもいいです。 教えていただけませんか。 よろしくお願いします。

    • ベストアンサー
    • SEO

専門家に質問してみよう