2014年2月9日日曜日

phpを使ってページの文章を切り替える方法

 前の投稿(phpとJapascriptを使ってページの文章を切り替える方法)では致命的な弱点があった。改行が入っていたらエラーが起きるのだ!

 どうも改行の認識に問題があるらしい。変数を使ったりして上手にすれば回避できるらしいのだけど、そこまでするのも面倒! という人には、phpを使った方法があったので、ここに書いておく。

  • ファイル名:index.php
//*ページの一番上で変数を宣言
<?php
 $inc = 1;
?>


//*いろいろとコンテンツを書く


<a href="index.php?inc=3">ざっと見る</a>
<br>
<a href="index.php?inc=2">もっと見る</a>
<br>
<a href="index.php?inc=1">戻る</a>


//*条件式で変数に応じて読み込むphpファイルを変える
<?php
if($_GET['inc'] == 2){
    require 'motto.php';
}elseif($_GET['inc'] == 3){
    require 'zatto.php';
}else{
    require 'default.php';
    exit(0);
}
?>

リンクを押すとincに変数が入る設定になっている。

変数によってrequireするphpファイルを変える。
何も押してない状態だとdefault.phpが読み込まれる。
incに2が入るとmotto.phpを、3が入るとzatto.phpを読み込む。

これで改行が入ってあっても大丈夫!

問題は、$_GETを使っているのでurlが汚くなっちゃうことだな。

2014年2月8日土曜日

phpとJapascriptを使ってページの文章を切り替える方法

 phpを使ってページを作っている。

 htmlフレームと同じで、画面をいくつかに分けて、小さなコンテンツを組み合わせた大きなページを作ることが可能なので、phpは好きだ。

 フレームだと簡単だけどphpじゃ難しいことが一つある。ページ全体を再読み込みせずに、小さなコンテンツの表示だけ、文章だけを切り替えることだ。

例:2ちゃんねる

このページは左のメニューをクリックすると右のフレームに掲示板が表示される仕組みになっている。左のメニュー画面は再読み込みされない。

 こういう仕組みを、phpでも作りたいと思った。だけど出来ない。



 JavaScriptを使えばいけることがわかったので、書いていく。(リンク先サイトを超参照した。すべてのphpは文字コードをutf-8にして保存すること。)


<head>

<script type="text/javascript">
<!--
var txt1 = "<?php require 'red.php' ?>";
var txt2 = "<?php require 'blue.php' ?>";
var txt3 = "<?php require 'yellow.php' ?>";

function ChangeTxt(txt) {
    document.getElementById("text").innerHTML=txt;
}
-->
</script>

</head>

<body>
<div id="text">ここの文章を変える</div>
<ul>
    <li><a href="javascript:void(0)" onclick="ChangeTxt(txt1); return false;">赤</a></li>
    <li><a href="javascript:void(0)" onclick="ChangeTxt(txt2); return false;">青</a></li>
    <li><a href="javascript:void(0)" onclick="ChangeTxt(txt3); return false;">黄色</a></li>
</ul>
</body>



 <head>~</head>の間にJavaScriptの記述を書く。txt1~txt3のそれぞれの変数の中にphpの命令を入れる。php requireは当該phpのページの中に別のphpのデータを持ってくる命令だ。別のphpの中身は以下のとおり。一文だけ書いて、文字コードutf-8でそれぞれの名称で保存するだけ。



red.php| 赤は英語で<strong>red</strong>です。
blue.php| 青は英語で<strong>blue</strong>です。
yellow.php| 黄色は英語で<strong>yellow</strong>です。


 phpファイルのファイル名を変えたらtxt1~3で読み込むphp requireのファイル名を変えればいいだけ。クリックする文字を変えたかったら、<li>~</li>の中の文字を変えればいい。

 とっても簡単。これで出来上がり。

 しかし大きな問題があった。requireしたphpに改行があるとうまく読み込んでくれないのだ。上手に変数でなんとかすると出来るみたいだけどややこしい。やっぱりJavascriptはあきらめて、phpでやったほうがはやそうなので、phpでやってみた。

→phpを使ってページの文章を切り替える方法


2013年12月1日日曜日

Bootstrap 3でのaffix指定方法

 ブログのテーマとは関係ないけど備忘録。

 Bootstrap 3を使ってウェブサイトをつくっている。左のメニューバーを固定するaffixが使いたかったけどうまくいかない。Bootstrap 3での説明は日本語では見当たらない。ときて、困っていた。



スクロールしてもずっとついてきてくれるこの赤い囲いところがaffix


 基本的には2.1のときと同じ方法で指定すればいいことがわかったので、備忘録的に書いておく。

改変個所

いくつか手直しをしないといけない箇所があった。


オリジナル
     <script type="text/javascript">
     $('#myAffix').affix({

    offset: {
      top: 100
    , bottom: function () {
        return (this.bottom = $('.bs-footer').outerHeight(true))
      }
 
    }
  })

 
  </script>
改変
    <script type="text/javascript">
      $(function(){
      $('.affix').affix({
    }
  });
  });
    </script>
bootstrap.jsを読みこませた上、「<script type="text/jacascript">~</script>」をaffixを入れるページのどこかに書いておく。

なぜかoffsetが効かないのでぼくは割愛。「#myAffix」という変数部分は「.affix」に書き換える。ピリオドを忘れないように。bootstrap.jsのデフォルトの設定ではaffixという名前じゃないと効かないようになっている。

オリジナル
<div data-spy="affix" data-offset-top="200">...</div>
改変
<div data-spy="affix" data-offset-top="0px" style="min-width:21%;margin-top:10px;">
効かなかったoffsetはhtmlで暫定的に記述。data-offset-topでは、どれだけスクロールしたらaffixが作動するかを設定する。ここに書いてあったからjacascriptで効かなかったのかな。

なぜかメニューのdivの幅が文字列の幅に合わせられてしまうので、無理やりstyleにmin-widthを入れて、これ以上細くなるなよ、と設定した。なぜこうなるかは謎。

重要
<div style="background-color:#fff;">
メイン(スクロールさせる方、上の画像の青い囲み)のdivに背景色を設定しないといけない。さもないと、ディスプレイ幅を細くした場合、メインのdivの裏にメニュー(affixさせる方、上の画像の赤い囲み)のdivが透けて見えてしまう。bootstrap本家のページでも、背景色を#eeeに設定している。

以上で出来上がり! めんどう!

できたページは以下の通り。

Gogax(ゴガックス)【語学習得支援サイト】

参照リンク

2013年8月16日金曜日

バムとアルゲ・バム

※ バムを含むケルマーン州に行ったのはアクシデントであり、行くことを推奨するものでは決してありません。もしアクシデントで行かれた場合は、安全対策を講じた上、できるだけ早く安全な地域に行ってください。


 マシュハドからヤズドに行くつもりが、ケルマーンに着いてしまった。

 ケルマーンのホテルに投宿し、向かいにあった旅行代理店で早速帰りの列車の切符を買った。明日の18時発の列車だった。まだ1日半ある。

 ホテルのオーナーにその旨を告げると、是非観光に行くといい、バムやライヤン、マハンとツアーしてきたらいいと言う。タクシーをチャーターして140万リアル(44ドル)ぐらいだという。

 おすすめならば仕方ない、バムに行こう。

 ケルマーンからバムまでは片道150キロの長旅だ。日本でいうと東京-静岡、名古屋-大阪を往復することになる。

 ホテルで腹ごしらえをして、朝9時過ぎに出発した。



アジア・ハイウェイを抜けて、


だんだん車線も減ってきて、


着いた!!

アルゲバム。入場料は高め。10ドルぐらいだったかな。

 アルゲ・バムは2003年の大地震で崩壊してしまい、それまで暫定リストにも載っていなかったのが、一気に世界遺産認定された。同時に危機にひんした世界遺産にもなってしまい、世界から注目を浴びた。イランの復興にかける努力が実って、今年(2013年)5月、無事に危機遺産からはずれ、れっきとした世界遺産になった。





 修復されたところはとてもきれいなんだけど、修復しきれてないものはまだまだ地震の爪痕が見受けられる。



 つっかえ棒があったり、シールが貼ってあって、まだ作業途中なのがよくわかる。10年でこれだと、作業が終わるのはいつになるんだろう?

修復作業員のおじさんたち。彼らの日々の仕事が危機遺産から外れるまでに至らしめた。

 暑い中の作業は大変だろうに、暑そうなぼくをみて「ここの水道で顔を洗うと気持ちいいよ」とジェスチャーで勧めてくれた。40度の砂漠地帯では水道の水もすっかりお湯だったけど、すぐに乾いて気持ちよかった。

 イラン南部の昼日中(正午を挟んだ1時間)だったこともあって、観光客はほとんどいなかった。数名、カップルや家族連れを見かけたけど、僕よりあとに来て先に帰った。だって暑いもん。

 でも内部にはイランの他の街やバザール同様、無料の水飲み器もトイレもあるのでご安心を。

アルゲバム全景

 本当にイランの片田舎といった風情で、のんびりした雰囲気の町の郊外に悠然と構えているアルゲバム。そしてその奥は砂漠。何もない砂漠にいきなりこんなものがあるとビックリする。ペルゼポリスもそうだった。

 ここが2007年に日本人旅行者の誘拐された町なんだけど、確かにこんな田舎にイスラム過激派がいて、外国人を誘拐し、政府同士が話しあうような国際的に大きな事件が起こるとは到底思えない。そういう意味では危険だ。

復興された(?)バム市街
危ないのでそうそうにバムを去る。次に向かった先は、世界遺産でもないけどイランで一番感動した遺跡だった。

ぼくがケルマーンに行ったわけ

※ ケルマーンに行ったのはアクシデントであり、行くことを推奨するものでは決してありません。もしアクシデントで行かれた場合は、安全対策を講じた上、できるだけ早く安全な地域に行ってください。

「危険地域」ケルマーン市内中心部にあるロータリー。地球儀の周りを白いハトが飛んでいるモニュメントが憎い。


 イラン南東部ケルマーン州は行った当時(2013年8月)、外務省から「退避勧告」が出ていた。どれぐらい危険かというと内戦中のマリやシリア、各地で自爆テロが起きているアフガニスタンやイエメン、行政機能が失われているソマリアと同じ危険度、イラクの一部地域の方が安全なぐらいだ。

 ちなみにイエメンの最近の旅行記を調べると「首都サヌアの新市街ではこの間、外国人が誘拐されたらしいから旧市街に泊まる方がいい」と、それっていいって言わないんじゃねーの、とツッコミたくなる斬新なことを書いてあるブログも見受けられる。それと同じぐらいやばいらしい。

●シスタン・バルチスタン州,ケルマーン州
    :「 退避を勧告します。渡航は延期してください。」(継続)

1 概況
(4) イランの南東部地域等においては,依然としてアフガニスタンからの武装麻薬密売組織等の流入やこれを取り締まる治安部隊との衝突のほか,過激派組織による爆弾テロが発生しています。また、イラクの不安定な治安情勢が同国との国境付近の治安に悪影響を及ぼす可能性があります。

(5) イラン南東部ケルマーン州では,過去に外国人誘拐事件が発生しており,2007年10月には日本人旅行者誘拐事件が発生しました(同人は2008年6月に無事解放)。同地域においては,治安情勢が好転しておらず,今後も類似の事件が発生する可能性があります。

2 地域情勢
(1)シスタン・バルチスタン州及びケルマーン州
  :「 退避を勧告します。渡航は延期してください。」

ア シスタン・バルチスタン州
  イラン当局がこれらの地域を含むイラン東部地域で大規模な麻薬掃討作戦を展開し,特に同州では,治安部隊と麻薬密輸組織との衝突及びテロ組織との交戦が発生しています。

  ○2013年 1月 治安部隊が破壊活動を計画していた反革命組織の要員2人を逮捕。
  ○2013年 1月 治安部隊と麻薬密売組織との間で交戦が発生。麻薬密売人数人を逮捕。
  ○2013年 2月 治安部隊と麻薬密輸グループとの間で交戦が発生。密輸人2人が死亡。
  ○2013年 2月 治安当局と麻薬密輸組織との間で交戦が発生。
  ○2013年 4月 治安当局と麻薬密輸グループの間で武装抗争発生。密輸人2人が死亡。

イ ケルマーン州
  ケルマーン州においても,シスタン・バルチスタン州と同様,治安部隊と麻薬密輸組織との武装衝突が発生しているほか,2012年1月には,イラン人の子どもが誘拐される事件が発生しています。また,過去には,外国人旅行者が誘拐される事件が度々発生しており、2007年には日本人旅行者の誘拐事件が発生しました。同地域においては治安情勢が好転しておらず,今後も類似の事件が発生する可能性があります。

  ○2013年1月 ジロフト市において,治安部隊と麻薬密輸グループとの間で武装抗争が発生。警官1人が死亡。
  ○2013年 3月 過去1年間で,25の麻薬密輸グループを摘発。治安部隊との交戦により密輸人18人が死亡。
  ○2013年 4月 治安当局と麻薬密輸グループの間で武装交戦が発生。警察官1名が死亡,麻薬類1,347kgを押収。
  ○2013年 4月 同州ジロフト地区で治安当局と麻薬密輸グループの間で武装抗争が発生。警官1人及び密輸人3人が死亡,アヘン1,500kgを押収。

  このように,両州は依然として治安情勢が不安定であることに加え,過去数年,イラン外務省からも在イラン日本国大使館に対し,日本人観光客等の同地域への入境について治安上の観点から自粛を求めるよう,強い要請が寄せられています。

  ついては,シスタン・バルチスタン州及びケルマーン州に既に滞在されている方は,十分な安全対策を講じた上で安全な地域あるいは国外へ退避されるよう強く勧告します。また,両州への渡航は,どのような目的であっても延期してください。


イランに行くにあたって、もちろんこの情報はあらかじめ手に入れていた。『地球の歩き方 イラン(2012~2013年版)』にも1ページだけ南東部の危険情報に触れた項目があるし、Lonely Planetにも言及がある(Zahedanのページ)。Lonely Planetに書いてあることをまとめると以下の通り。
  • この辺りの旅する時は治安面に気をつけること
  • 目だないようにし、一人で行動しないこと
  • かつて脱獄囚が3回外国人を誘拐した
  • 全員最後は無事に解放されている
  • 2007年の日本人誘拐が今のところイランで最後に起こった外国人誘拐事件
  • 今のところ外国人がターゲットになっているわけではない
  • 情勢は変わるから、最新の情報を手に入れること
治安面で不安はあって気をつけたほうがいいものの、そこまで危険じゃないみたい。イランの人にも何度か聞いたけど、以下のようなリアクションが帰ってきた。
  • バムは安全!(ペルゼポリスで案内してくれたソラーイヤさん)
  • あの辺りは何か違うね(エスファハンでじゅうたんを売っていたお兄さん)
  • バムは大丈夫よ(テヘラン・イマーム・ホメイニー空港のインフォメーションのお姉さん)
  • バムにテロリストがいるって? 超ウケるwww(マシュハドのタクシー運転手のおじさん)
  • アフガニスタンにはテロリストがいるけど、イランは大丈夫(列車の中で知り合った少年)
イラン人にとっては安全らしい。

 退避勧告が出てる以上、もし誘拐されたら救出にかかる費用は自己負担か家族負担になる可能性が高い。政府が退避勧告を出している以上、そんな危険地域に行った旅行者の全責任となるわけだ。行くのは超ハイリスク、全然オススメしない。

 じゃあなんで行くことになったのか? イラン北東部のマシュハドからは中部の古都、ヤズドに行く予定だった。その旨を伝えて旅行代理店で列車の切符を買ったのだけど、渡されたのは危険地域のケルマーン行きの切符。

「この列車は途中でヤズドに止まるから。まわりの人に、ヤズドについたら教えてね、お願いするんだよ」

とのことだった。列車に乗って、周りの人にお願いした。

「この列車はヤズドに行かないよ、ケルマーン行きだよ?」

なんてこと! 列車内の地図を見せてもらった。マシュハドを出た列車はそのまま一直線に南下し、途中、Bafq(Bafgh)という駅で北西に上ればヤズドだけど、この列車は南東に行ってケルマーンへと行くらしい。Bafq到着は深夜0時ごろ、ケルマーンへは早朝4時ごろ。(英語版WikipediaのIslamic Republic of Iran Railwaysの地図を参照)

 『地球の歩き方』にも載ってないBafqの街に深夜降り立つか、Lonely Planetには載っているケルマーンの街に早朝4時に降り立つか。究極の選択である。が、もうこの時点で答えは決まったものである。だが、念のためという言葉もある。

「どっちの方がいいのでしょう?」

とコンパートメントのおじさんたち3人に相談した。おじさんたちは、さっそく検討をしてくれて、ケルマーンに行く方がいい、と結論を出してくれた。こちらの持っている情報量からして、確かにそっちの方が賢明に思う。

 こうして僕は「退避勧告」の出ている危険地域、ケルマーンに行くことになった。

 地球の歩き方には「行くな」とは書いてあるくせに、こんな風にアクシデントで行ってしまった場合、どうしたらいいか書いてない。ので、僕が書いておこう。

  1. 駅に着いたらタクシーでAkhavan Hotelに行く
    (満室でも向かいに少し安めのホテルがある)
  2. タクシー代は駅からホテルまで4ドルぐらい、宿泊費は一泊40~45ドルぐらいでwi-fi、二食つき
  3. 営業時間になったら、ホテル斜め向かいの旅行代理店で列車のチケットを買う

これで何とかなるはず。ホテルから出歩かなければ、トラブルに巻き込まれる心配もないはず。各地を結ぶ交通事情は以下の状況だった。 (2013年8月現在)
  • 飛行機は週2~3便テヘラン行きが飛んでいる
  • 列車は毎日一往復ヤズドまではある(多分テヘラン行)。ヤズドまで一等車で片道6ドルほど。
  • ヤズドまでのバスは頻繁に運行している
  • ヤズドまでタクシーをチャーターした場合は片道45ドルぐらい

2013年8月11日日曜日

イラン、テヘラン、聞かせてバラライカ(2013年8月11日)

 昨日夜のマハン航空のフライトで無事テヘランにつきました。1年間に2度もくることになるとは。

 日本でビザを申請していたからよかったものの、空港でアライバルビザが取れるかどうか、入国管理官に聞いたところ「知らないね」とにべもなく返されて、危ういところでした。

 今日はこれから市内をぶらぶらして、トルクメニスタン大使館でビザを申請してきます。その後は安宿を探すか、ヤズド行きのバスを探すかします。

 今からホテルの朝ごはんを食べにいってこよう。

2013年8月2日金曜日

イランからトルクメニスタン経由ウズベキスタン行きの計画

 またイランに行くことになった。

 本当の目的はトルクメニスタンで、もうすでにイランビザも手配した。ウズベキスタンビザも手配した。あとは間のトルクメニスタンの通過ビザを手に入れれば完璧だ。

 ウズベキスタンよりイランの方が通過ビザは取りやすいらしい。だからタシケントじゃなくてテヘランに行く。

 今年は知恵をつけて、skyscannerというサイトで値段を調べてみた。バンコクからテヘランの往復で、割と安めなのがドーハ経由。それでも9万円ぐらいする。もしやと思ってメールをしたら、やっぱりイランのMahan Air(マハン航空、マーハーン航空)が一番安く、28000バーツ(8万円)ほどだった。

旅程は決まった。

  • 成田-バンコク-テヘラン(-マシュハド-アシガバード-サマルカンド-タシケント-ソウル)-成田

これが理想だ。