メシのタネ

Webプログラミング 備忘録

  • DOMをPHPで操作できたらいいよね

    そうだよね。そう思うよね。JavaScriptでやると、画面がガタついたりするもんね。そうならないようにする方法もあるかもしれないけど、僕はできませんので、サーバー側でなんとかできたらええなぁと思って挑戦したけど、できませんでしたよ。PHP標準でHTMLをDOMにできるらしい今、技[...]

    続きを読む
  • 設計書ってなんで書くの?

    設計書をなぜ書くのかから始めてかれこれ3年近くこの禅問答をやっているわけですが、いまだに答えは出ません。ただ、その禅問答をやる中で設計書に対する取り組み方は大きく変わったので、その一部でも書いていきたい。基本設計はとにもかくにも必要だと思う設計書はいらぬ!という話をよく聞くし、自分[...]

    続きを読む
  • 書ききってやる。

    久々に書いてみる。久々に文章を書くということをやってみようと思う。伝える作業を観察したいと思ったからそうしたいと考えた。情緒的な文章は基本的にゴミ箱にぽいしてきましたが、情緒的なのも自分だと思う。「文章をかくという作業は、とりもなおさず自分と自分をとりまく事物との距離を確認すること[...]

    続きを読む
  • 普通の会社で2年普通に働いて思う事

    えらい寒くなりました。文句言いながらも現職を続けて2017年12月1日にめでたく2年がたちました。分かりやすいが乱暴に言えばITドカタと呼ばれる業界に入って案件のヒエラルキーの無慈悲さを痛感しながらも、それでもしょうがないと頑張る人たちに心を打たれながら「じゃあ俺も」と頑張れない自分に挫折して、とあ[...]

    続きを読む
  • jQueryUiのDatepicker利用時にminDate設定するとバグる件

    題名の通りなんですが、DatepickerでminDate使うとバグります。また後でキャプチャ見て貰いますけど、灰色の部分が、minDateで設定した日付が反復して出るようになるんですね。こういうの気が付かない人がいるかも知れませんが、ChoromeでminDate設定してる人は気にしてみてくだ[...]

    続きを読む

PHP カレンダー作りました。

date関数の練習がてら、カレンダー作りました。
定数つけといたので、そこのパスを変更してコピペすれば使えます。
なんとか動きますが、ごり押しな部分がかなりあります。
今度はこれを改造して、スケジュール帳とか作ってみたいなぁとか思ってます。

例外上手に使えたらとか、メソッドもっとスマートにしたいとか、色々思うとこはありますが、
そういうのも次の機会までに上手になってたらいいなぁって思います。

</p>
<p>class Main_Bord<br />
{</p>
<p>	protected $tougetu;<br />
	protected $tougetu_day;<br />
	protected $prev;<br />
	protected $next;<br />
	private $flg;<br />
	const path = &quot;/test/calender_class.php&quot;; //ここのパスを変更すれば使えます。</p>
<p>	function __construct()<br />
	{<br />
   		ini_set(&quot;output_buffering&quot;, &quot;On&quot;);<br />
    	ini_set(&quot;output_handler&quot;, &quot;mb_output_handler&quot;);<br />
    	ini_set(&quot;default_charset&quot;, &quot;UTF-8&quot;);<br />
    	mb_language(&quot;Japanese&quot;);<br />
    	mb_internal_encoding (&quot;UTF-8&quot;);<br />
    	mb_http_input(&quot;auto&quot;);<br />
    	mb_http_output(&quot;UTF-8&quot;);<br />
    	mb_detect_order(&quot;auto&quot;);<br />
    	mb_substitute_character(&quot;none&quot;);<br />
    	ob_start(&quot;mb_output_handler&quot;);<br />
    	header(&quot;Content-Type: text/html; charset=UTF-8&quot;);<br />
    	session_start();<br />
	}</p>
<p>	public function main($flg=&quot;&quot;)<br />
	{<br />
		$this-&gt;f_check($flg);<br />
		if(empty($flg))<br />
		{<br />
			$this-&gt;tougetu = date('Y-m');<br />
			$this-&gt;get_Year(substr($this-&gt;tougetu,0,4));<br />
			$this-&gt;calender($this-&gt;tougetu);<br />
		} else if((isset($flg[&quot;next&quot;])) &amp;&amp; ($this-&gt;flg)) {<br />
			$this-&gt;tougetu = $flg[&quot;next&quot;];<br />
			$this-&gt;get_Year(substr($this-&gt;tougetu,0,4));<br />
			$this-&gt;calender($this-&gt;tougetu);<br />
		} else if((isset($flg[&quot;prev&quot;])) &amp;&amp; ($this-&gt;flg)) {<br />
			$this-&gt;tougetu = $flg[&quot;prev&quot;];<br />
			$this-&gt;get_Year(substr($this-&gt;tougetu,0,4));<br />
			$this-&gt;calender($this-&gt;tougetu);<br />
		} else {<br />
			echo &quot;変なフォーマットが入りました。&quot;;<br />
		}<br />
	}</p>
<p>	private function f_check($flg)<br />
	{<br />
		if(isset($flg[&quot;next&quot;]))<br />
		{<br />
			$f_flg = sprintf('%04d-%02d',substr($flg[&quot;next&quot;],0,4),substr($flg[&quot;next&quot;],5,7)) === '0000-00';<br />
			(!$f_flg) ? $this-&gt;flg = true : $this-&gt;flg = false;<br />
		} else if(isset($flg[&quot;prev&quot;])) {<br />
			$f_flg = sprintf('%04d-%02d',substr($flg[&quot;prev&quot;],0,4),substr($flg[&quot;prev&quot;],5,7)) === '0000-00';<br />
			(!$f_flg) ? $this-&gt;flg = true : $this-&gt;flg = false;<br />
		}<br />
	}</p>
<p>	private function get_Year($year)<br />
	{<br />
		if($year == date('Y'))<br />
		{<br />
			$this-&gt;next = date(&quot;Y-m&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7)+1, 1, date(&quot;Y&quot;)));<br />
			$this-&gt;prev = date(&quot;Y-m&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7)-1, 1, date(&quot;Y&quot;)));<br />
			$this-&gt;tougetu_day = date(&quot;t&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7), 1, date(&quot;Y&quot;)));<br />
			$this-&gt;get_calheader();<br />
		} else if($year &gt; date('Y')) {<br />
			$i = $year - date('Y');<br />
			$this-&gt;next = date(&quot;Y-m&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7)+1, 1, date(&quot;Y&quot;)+$i));<br />
			$this-&gt;prev = date(&quot;Y-m&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7)-1, 1, date(&quot;Y&quot;)+$i));<br />
			$this-&gt;tougetu_day = date(&quot;t&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7), 1, date(&quot;Y&quot;)+$i));<br />
			$this-&gt;get_calheader();<br />
		} else if($year &lt; date('Y')) {<br />
			$i = date('Y') - $year;<br />
			$this-&gt;next = date(&quot;Y-m&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7)+1, 1, date(&quot;Y&quot;)-$i));<br />
			$this-&gt;prev = date(&quot;Y-m&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7)-1, 1, date(&quot;Y&quot;)-$i));<br />
			$this-&gt;tougetu_day = date(&quot;t&quot;, mktime(0, 0, 0, substr($this-&gt;tougetu,5,7), 1, date(&quot;Y&quot;)-$i));<br />
			$this-&gt;get_calheader();<br />
		}<br />
	}</p>
<p>	private function get_calheader()<br />
	{<br />
			echo '&lt;style&gt;<br />
			#calhead<br />
			{<br />
				width:500px;<br />
				overflow:hidden;<br />
				text-align:left;<br />
				list-style:none;<br />
			}<br />
			#calhead &gt; li<br />
			{<br />
				padding-left:75px;<br />
				float:left;<br />
			}</p>
<p>			&lt;/style&gt;'.PHP_EOL;<br />
			echo '&lt;ul id=&quot;calhead&quot;&gt;'.PHP_EOL;<br />
			echo '&lt;li&gt;'.PHP_EOL.'&lt;a href=&quot;'.self::path.'?next='.$this-&gt;next.'&quot;&gt;翌月&lt;/a&gt;'.PHP_EOL.'&lt;/li&gt;'.PHP_EOL;<br />
			echo '&lt;li&gt;'.$this-&gt;tougetu.'&lt;/li&gt;'.PHP_EOL;<br />
			echo '&lt;li&gt;'.PHP_EOL.'&lt;a href=&quot;'.self::path.'?prev='.$this-&gt;prev.'&quot;&gt;先月&lt;/a&gt;'.PHP_EOL.'&lt;/li&gt;'.PHP_EOL;<br />
			echo '&lt;/ul&gt;'.PHP_EOL;<br />
	}</p>
<p>	private function calender($str)<br />
	{</p>
<p>		if($str == date(&quot;Y-m&quot;))<br />
		{<br />
			$days = array(date(&quot;t&quot;,time()),date(&quot;Y-m&quot;));<br />
			$this-&gt;calout($days);<br />
		} else if (($str == $this-&gt;tougetu) &amp;&amp; ($str &gt; date(&quot;Y-m&quot;))) {<br />
			$days = array($this-&gt;tougetu_day,$this-&gt;tougetu);<br />
			$this-&gt;calout($days);<br />
			return $this-&gt;tougetu = $this-&gt;next;<br />
		} else if (($str == $this-&gt;tougetu) &amp;&amp; ($str &lt; date(&quot;Y-m&quot;))) {<br />
			$days = array($this-&gt;tougetu_day,$this-&gt;tougetu);<br />
			$this-&gt;calout($days);<br />
			return $this-&gt;tougetu = $this-&gt;prev;<br />
		}</p>
<p>	}</p>
<p>	private function calout($days)<br />
	{</p>
<p>		if(is_array($days))<br />
		{<br />
			//var_dump($this-&gt;tougetu);<br />
			$youbi = array('日','月','火','水','木','金','土');</p>
<p>			if($days[1] === date('Y-m'))<br />
			{<br />
				$nen = date('Y');<br />
				$tuki = date('m');<br />
				$start_w = date(&quot;w&quot;, mktime(0, 0, 0,$tuki,1, $nen));<br />
			} else if($days[1] === $this-&gt;tougetu) {<br />
				$nen = substr($this-&gt;tougetu,0,4);<br />
				$tuki = substr($this-&gt;tougetu,5,7);<br />
				$start_w = date(&quot;w&quot;, mktime(0, 0, 0,$tuki,1, $nen));<br />
			} else if($days[1] === $this-&gt;prev) {<br />
				$nen = substr($this-&gt;prev,0,4);<br />
				$tuki = substr($this-&gt;prev,5,7);<br />
				$start_w = date(&quot;w&quot;, mktime(0, 0, 0,$tuki,1, $nen));<br />
			}</p>
<p>			echo '&lt;style&gt;<br />
			#calcon_youbi<br />
			{<br />
				overflow:hidden;<br />
				list-style:none;<br />
				width:500px;<br />
			}<br />
			#calcon_youbi &gt; li<br />
			{<br />
				float:left;<br />
				width:71px;<br />
				padding:10px 0px 10px 0px;<br />
			}</p>
<p>			#calcon_date<br />
			{<br />
				overflow:hidden;<br />
				width:500px;<br />
				list-style:none;<br />
			}<br />
			#calcon_date &gt; li<br />
			{<br />
				float:left;<br />
				width:71px;<br />
				padding:10px 0px 10px 0px;<br />
			}<br />
			&lt;/style&gt;'.PHP_EOL;</p>
<p>			echo '&lt;ul id=&quot;calcon_youbi&quot;&gt;'.PHP_EOL;<br />
			for($c = 0; $c &lt; count($youbi); $c++)<br />
			{<br />
				($c &gt;= 40) ? exit : true;<br />
				echo '&lt;li&gt;'.$youbi[$c].'&lt;/li&gt;'.PHP_EOL;<br />
			}<br />
			echo '&lt;/ul&gt;'.PHP_EOL;</p>
<p>			echo '&lt;ul id=&quot;calcon_date&quot;&gt;'.PHP_EOL;<br />
			for($i = 1; $i &lt;= $start_w; $i++)<br />
			{<br />
				($i &gt;= 40) ? exit : true;<br />
				echo '&lt;li&gt;&amp;nbsp;&lt;/li&gt;'.PHP_EOL;<br />
			}</p>
<p>			for($n = 1; $n &lt;= $days[0]; $n++)<br />
			{<br />
				($n &gt;= 40) ? exit : true;<br />
				echo '&lt;li&gt;'.$n.'&lt;/li&gt;'.PHP_EOL;<br />
			}<br />
			echo '&lt;/ul&gt;';<br />
		}<br />
	}</p>
<p>}</p>
<p>$bord = new Main_Bord;<br />
if(empty($_GET))<br />
{<br />
	$bord-&gt;main();<br />
} else {<br />
	$bord-&gt;main($_GET);<br />
}</p>
<p>

デモはこちら

関連記事

  1. PHPサムネイル
  2. PHPサムネイル
  3. 2012.09.07

    【PHP】mb_substr

コメントをお待ちしております