PHPを使って表示文字が変わる構文を実装する方法

このQ&Aのポイント
  • PHPの含まれた会社のホームページで、担当者が体調不良のため急遽変更が必要です。HTMLの知識が少ないため質問します。
  • 6時~11時59分は「おはようございます」と表示し、12時~17時50分は「こんにちは」と表示し、18時~翌朝5時59分は「こんばんは」と表示する構文を実装したいです。
  • 現在は「おみくじ」が表示されるようになっており、それを上記の「あいさつ」に変更したいです。
回答を見る
  • ベストアンサー

時間が経つと表示文字が変わる構文

PHPの含まれた会社のホームページで、 急遽変更しなくてはならない部分が出たのですが、 担当する人が体調を崩してしまいました。 そこで、少々HTMLをかじった程度の素人である私が 対応しなくてはいけなくなったのですが、 マニュアルを見ても記述方法を見つける事が出来ない為、 こちらで質問させて頂きました。 行いたいのは下記のような表示方法です。 ・6時~11時59分は「おはようございます」と表示 ・12時~17時50分は「こんにちは」と表示 ・18時~翌朝5時59分は「こんばんは」と表示 現在は、「おみくじ」が表示されるようになっています。 ここを、上記の表示方法に変えたいのですが。 記述方法は下記の通りです。 <?php srand ((float) microtime() * 10000000); $omikuji = array ( "大吉", "中吉", "吉", "凶" ); $rand_keys = array_rand($omikuji, 2); ?> <input name="omikujifield" type="text" value=<? echo $omikuji[$rand_keys[0]] ?> size="50"> これを、上記の「あいさつ」に変更したいです。 それでは何卒宜しくお願い申し上げます。

  • PHP
  • 回答数4
  • ありがとう数5

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

  • ベストアンサー
  • wp_
  • ベストアンサー率54% (132/242)
回答No.2

微妙に作業依頼っぽいですが。 >マニュアルを見ても記述方法を見つける事が出来ない為、 http://jp.php.net/manual/ja/ref.datetime.php あと10回は読み返しましょう・・・といいたいところですが 専門職でない場合はしょうがない部分もあるかもしれません^^; //朝しきい値 6:00 $sikii_oha = mktime(6,0,0); //昼しきい値 12:00 $sikii_tiwa = mktime(12,0,0); //夕しきい値 17:50 $sikii_bawa = mktime(17,50,0); $ret = ''; if($sikii_oha < time() and time() < $sikii_tiwa) {  $ret = 'おは'; } else if($sikii_tiwa <= time() and time() < $sikii_bawa) {  $ret = 'ちわ'; } else {  $ret = 'ばわ'; } echo $ret; 精査してないので不具合が起きた場合は適時直してください。

di-keichu
質問者

お礼

ご回答ありがとうございます。 こちらの構文で無事求めていた作業を行う事が出来ました。 ありがとうございます。

その他の回答 (3)

  • wp_
  • ベストアンサー率54% (132/242)
回答No.4

あー。いや別に気は悪くしてないので気にしないでください^^; 仕事としてやる以上は責任を持ちましょう、そのための努力を惜しむことは避けて 出来ることは全てしましょう、ただし丸投げは努力放棄に等しいですよ、 ということを強調したかっただけなので。。 もし不具合が起きた場合は休んだコーディング担当者の責任になるわけですしね。 誰かに聞くということは責任が答えた人に及ぶこともありえるわけで、 こういったpublicな場で聞くのは責任放棄だということです。 // 不具合の責任の所在が宙ぶらりんになり、最悪の場合は代理記述した質問者様に矛先が来ます。 それを避けるためには多少なりとも知識を蓄えた上で質問した方がいいですよ、ということで。

di-keichu
質問者

お礼

おっしゃる通りです。肝に銘じます。 この度はありがとうございました。 感謝の気持ちを込めてお礼ポイントを 入れさせて頂きますね。本当にありがとうございました。

  • wp_
  • ベストアンサー率54% (132/242)
回答No.3

>   $CheckHour = date("H",microtime());//時間を取得(00~23) >   $CheckMinutes = date("i",microtime());//分を取得(00~59) >ただ、今教えて頂いた通りのコードを入れてみたのですが、 >現在22:57ですが、「おはようございます」と表示されました。 当たり前です。 http://jp2.php.net/date http://jp2.php.net/microtime date()の第二引数はintです。microtime()は文字列かfloatしか返しません。 やるならば date('H',time()); か date('H'); の間違いでしょう。 ですがシステム的な面から見ますと、date()を使用し時と分を分けて考えるのはナンセンスです。 コーディング担当者が見たらブチ切れるでしょう。私ならば書いた奴を殴ります。 その人の負担を少しでも減らしたいのであればもう少し勉強するか、そうでないなら見捨てた方がお互いのためと思われます。 社命ならば血反吐はくまで勉強してください。

di-keichu
質問者

お礼

緊急を要した為、こちらに質問させて頂きました。 お気を悪くしてしまい、申し訳ございませんでした。

  • swqamy
  • ベストアンサー率37% (11/29)
回答No.1

記載されているプログラムでは難しそうですよ。 記載プログラムはこのようになっていますが <?php srand ((float) microtime() * 10000000);//現在の Unix タイムスタンプをマイクロ秒まででランダム値を作成 //表示内容を配列に格納 $omikuji = array ( "大吉", "中吉", "吉", "凶" ); $rand_keys = array_rand($omikuji, 2);//配列から一つ以上の要素をランダムに取得する ?> <!-- テキストボックスに表示 --> <input name="omikujifield" type="text" value=<? echo $omikuji[$rand_keys[0]] ?> size="50"> ランダム値で判断しているので「固定の条件」では難しいと思います。 代わりにこんなプログラムを作りました。 <?php    $CheckHour = date("H",microtime());//時間を取得(00~23)    $CheckMinutes = date("i",microtime());//分を取得(00~59)   /************************************************************************    Debug用    どのように取得されているか見たかったらコメントをはずして下さい    必要ないので消してもらって構いません     ************************************************************************/    //print $CheckHour."<br>\r\n";    //print $CheckMinutes."<br>\r\n";    /***********************************************************************/    $Greeting = "";    if(6 <= $CheckHour && 11 >= $CheckHour){//6時~11時59分       $Greeting = "おはようございます";    }elseif(12 <= $CheckHour && 16 >= $CheckHour){//12時~16時       $Greeting = "こんにちは";    }elseif($CheckHour==17){//17時50分       if($CheckMinutes <= 50){          $Greeting = "こんにちは";       }    }elseif(18 <= $CheckHour && 23 >= $CheckHour){//18時~翌朝5時59分       $Greeting = "こんばんは";    }elseif(0 <= $CheckHour && 5 >= $CheckHour){       $Greeting = "こんばんは";    }else{       //17持51分~17時59分の処理    } ?> <html> <head></head> <body>    <form>    <!-- テキストボックスに表示 -->    <input name="omikujifield" type="text" value=<? echo $Greeting ?> size="50">    </form> </body> </html>

di-keichu
質問者

お礼

ご回答ありがとうございます!助かります。 ただ、今教えて頂いた通りのコードを入れてみたのですが、 現在22:57ですが、「おはようございます」と表示されました。 何か私の方で誤ってますかね?コピペをしたのですが・・・

関連するQ&A

  • 画像読み込みとランダム表示について。。。

    (まえおき)PHPを最近始めましたがちんぷんかんぷんで非常に困っています!とりあえずやってみよう!と分からないなりに進めてきましたが限界があり、脳細胞が溶けて死んでしまいそうなので質問させて頂きます。 (本題)Dream Weaverで簡単なウェブページを作成中です。画像を3枚ぐらいをランダム表示させようと進めています。 (疑問1)SQLが使えないのでDream Weaver内の同列に画像ファイルを作り、そこから読み込めるようにしようと考えましたが、可能なのでしょうか? (疑問2)<?php srand((float) microtime() * 10000000); $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); $rand_keys = array_rand($input, 2); echo $input[$rand_keys[0]] . "\n"; echo $input[$rand_keys[1]] . "\n"; ?> ↑上記のサンプルを手にいれたので $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank"); のNeo Morpheus Trinity Cypher Tank の箇所に画像を入れたらいけるのでは?と思い image/photo.jpg.... と記入していきましたがエラーになってしまいました。どうやったらテキストの代わりに画像入れられるのでしょうか?? (締め)基本をあまり理解していませんのでとんでもなく意味不明な質問なのかもしれませんが、どうぞお助けください。お願いします。。。 

    • ベストアンサー
    • PHP
  • よく使われてるPHPランダム広告について。

    よく使われてる(ネット上で見かける)PHPランダム広告についてですが、 // 初期化 srand((double)microtime()*1000000); $ad_list1 = file($absolute_path."/modules/ads/ads_01.txt"); $ad_key1 = array_rand($ad_list1, 2); // 広告の表示 $ad1 = $ad_list1[$ad_key1[0]]; 1.現在でも、srand関数を使う必要がありますか? 2.広告の表示は1つなのですが、array_rand($ad_list1, 2);の変数以外の部分の引数を1もしくは、何も書かない場合は広告が表示しないのは、何故なのでしょうか。2を書かないとだめで。。。 ちなみに、ads_01.txtの内容は、2行。 <a href=""><img src="" alt="" /></a> <a href=""><img src="" alt="" /></a> (""の内容は省略しています。) 色々調べたり、試しましたが、Xでした。。。 みなさん、ご回答いただければと思います。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 解説お願いします。

    知り合いからソースをもらったtxtファイルのランダム取得なのですが どういう動きをしているのかさっぱりなので誰か解説をお願いします。 このソースをくれた人に聞けば早いのですが連絡が取れなくなってしまったので^^; //index側のソース //ランダム表示 $sorce_dir = './hide_pc/rand_index_top'; @include_once('./hide_pc/randam_k.php'); } //./hide_pc/randam_k.php側のソース <?php //$sorce_dir ソースの入ったディレクトリ mt_srand((int)(microtime() * 10000)); $rand_text = array(); $i = 1; if ($handlerDir = opendir($sorce_dir)){ while ($filename = readdir( $handlerDir )){ if ( $filename != "." && $filename != ".."){ array_push($rand_text,$filename); $i++; } } } $rand = mt_rand(0,(count($rand_text) - 1)); $randam_sorce = file_get_contents($sorce_dir.'/'.$rand_text[$rand]); ?> このソースを用意して./hide_pc/rand_index_topのディレクトリにtxtファイルをアップすれば<?=$randam_sorce ?>と指定したところに表示されます 解説よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPの配列の出力について

    $loop = 5; $count = 0; while($count < $loop){ mt_srand(microtime() * 100000); $rand_key = rand(0,9); if (in_array($rand_key, $yomi)){ $count--; continue; } echo $yomi[$rand_key]\n; } 配列($yomi)に格納されたひらがなから5つ重複させずに選び出したいのですが、 randで選出された「りんご」が2度選び出された場合、これでやり直しされますか? 現在出力出来る環境がありません… 初心者ですので指摘やアドバイス等いただけると嬉しいです。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • テキストをランダムで表示するには?

    PHP初心者です。教えて下さいm(__)m (例) $data[0] = '晴れ; $data[1] = '雨';   :   : があり、(本当はもっと長い文章で変更の可能性もあるような文章です) <A href="data.php">お天気</A> を選択すると $data[0] = '晴れ; $data[0] = '雨';    :    : の中からランダムに表示させたいと思っています。 <? $data[0] = '晴れ; $data[0] = '雨';    : $length = count($data) - 1; srand( (double)microtime()*1000000 ); $num=round( rand(0,$length) ); print("$data[$num]"); ?> でうまく表示されたのですが、データがあまりにもいっぱいある為、ファイルがいっぱいになってしまいます。 もっと簡単に出来るようにしたいのですが、いい方法ありませんか? データがいっぱいあるというのは、 同じようにランダムに表示させたいものが複数あり、$dataの名前をそれぞれ変えて、 $dataならこのファイルから$testならこのファイルから文章を取得するといった感じです。 一つ一つに上のようなソースを書くと手間がかかるのですが、もっと簡単に出来る方法がありませんか? 文章下手なので、うまく説明でききていないと思うのですが・・・宜しくお願い致します。

    • ベストアンサー
    • PHP
  • Perl内でPHPの出力結果を表示したい

    Perl製のCGI内で、PHP製のランダムバナー表示CGIを呼ぼうとしたのですが、下記のようなエラーが出てしまいました。 いろいろ試行錯誤したのですが、お手上げです。 どのように修正したらよいでしょうか? なお、ランダムバナー表示CGI 単体だけを実行したときは、正常に表示されています。 [index.cgi]  #!/usr/local/bin/perl  print "Content-type: text/html\n\n";  print "<HTML>\n<BODY>\n\n";  $ImgFileName="./ad.php";  open(IN, "$ImgFileName |");  while (<IN>) {    $str=$str.$_;  }  close(IN);  print $str; [ad.php]  <?php  $_1 = ('<img src="http://example.jp/a.gif">');  $_2 = ('<img src="http://example.jp/b.gif">');  $img_arry = array("$_1","$_2");  srand((double)microtime()*1000000);  $num =array_rand($img_arry);  $image = $img_arry[$num];  echo "$image";  ?> [表示された内容] ./ad.php: ?php: No such file or directory ./ad.php: line 2: syntax error near unexpected token `('' ./ad.php: line 2: `$_1 = ('【a.gifの画像】);'

  • ランダム関数による抽出について

    現在 $id には抽選される対象のID $del_id 当選した人や除外対象のID こちらの2つは配列に格納されています。 現在下記のようにプログラムを作成しましたが、 同じIDが登録されてしまいます。 何かよい手はないでしょうか? $rand_keys = array_rand($id,3); for($k=0;$k<count($rand_keys);$k++){ //当選した人は除く処理 for($a=0;$a<count($del_id);$a++){ while($del_id[$a] == $id[$rand_keys[$k]]){ $rand_keys = array_rand($id,3); } } }

    • ベストアンサー
    • PHP
  • array_rand関数

    現在、ランダム関数を使用して、配列にある値の中から ランダムにいくつかの配列を抜き出す処理を行っています。 $rand_keys = array_rand($id,2); for($k=0;$k<count($rand_keys);$k++){  $rand_id[$i][$k]=$id[$rand_keys[$k]]; } ただし、この関数では一つだけ取り出したい場合には使えません。 何かよい方法はありませんか??

    • ベストアンサー
    • PHP
  • array_randで要素が数字の場合の処理方法

    PHPのarray_randについて教えて下さい。 下記のようなソースを作りましたが思った通りの結果になりません。 //(A) $test=array(3,5,8,11,14,24,26,28); print_r($test); foreach ($test as $val) { echo $val.'<br>'; } //(B) $keys = array_rand($test, 5);//決められた数を抽出 print_r($keys).'<br><br>'; foreach ($keys as $val) { echo $val.'<br>'; } Aの部分の結果は Array ( [0] => 3 [1] => 5 [2] => 8 [3] => 11 [4] => 14 [5] => 24 [6] => 26 [7] => 28 ) foreachの部分の出力↓ 3 5 8 11 14 24 26 28 となりこれは特に問題ありません。 Bの部分でAの配列から5つランダムで取り出したいのですが、結果は Array ( [0] => 0 [1] => 3 [2] => 5 [3] => 6 [4] => 7 ) 0 foreachの部分の出力↓ 0 3 5 6 7 となってしまい、Aの配列の添え字の中から5つの数字が選ばれるようになってしまいます。 Aの添え字ではなく「3,5,8,11,14,24,26,28」の数字から5つランダムで取り出すにはどのような書き方をすればよいのでしょうか? ご回答よろしくお願い致します。

    • ベストアンサー
    • PHP
  • 'orderby' => 'rand'が効かない

    wordpressにて特定の投稿タイプの記事をランダムで2件表示させたいのですが、 'orderby' => 'rand'が全く効きません。 <?php $test = array( 'post_type' => 'ポストタイプ名', 'showposts' => 2, 'orderby' => 'rand' ); ?> <?php query_posts($test); ?> ・ ・ ・ 上記のように記述しているのですが、ランダムではなく、新しい順に記事が2件出てしまいます。 ランダムで2件抽出したい場合は他に何か記述が必要なのでしょうか? ご回答の程宜しくお願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう