現在、自主制作にてカレンダーの中にデータを出力するアプリを作っています。
カレンダーをforeachにて回しているのですが、そのカレンダーの日付ごとにデータを一つずつ出力したいです。
php
1<?php 2//カレンダー 3 //現在時刻の設定 4 date_default_timezone_get('Asia/Tokyo'); 5 6 $year=date('Y'); 7 $month=date('m'); 8 9 //月末日を取得 10 $end_month=date('t',strtotime($year.$month.'01')); 11 12 //月初めの曜日を取得 13 $first_week=date('w',strtotime($year.$month.'01')); 14 15 //月末の曜日を取得 16 $last_week=date('w',strtotime($year.$month. 17 $end_month)); 18 19 $calender=[]; 20 $j=0; 21 22 //1日が始まるまでの穴埋め 23 for($i=0; $i<$first_week; $i++){ 24 $calender[$j][]=''; 25 } 26 27 //1日から月末までループ 28 for($i=1;$i<=$end_month;$i++){ 29 //日曜日まで進んだら改行 30 if(isset($calender[$j]) && count($calender[$j]) === 7){ 31 $j++; 32 } 33 $calender[$j][]=$i; 34 } 35 36 //月末曜日までの穴埋め 37 for($i = count($calender[$j]);$i<7;$i++){ 38 $calender[$j][]=''; 39 } 40 41 $aryweek=['日','月','火','水','木','金','土']; 42?>
php
1//出力したいデータカラム 2 //ログイン者のdataカラムを取り出す 3 $datas=$db->prepare('SELECT data FROM post WHERE member_id=:member_id'); 4 5 //バインド 6 $datas->bindParam(':member_id',$mem['member_id'],PDO::PARAM_STR); 7 8 //実行 9 $datas->execute(); 10 $data=$datas->fetchAll(); 11 12 //ログイン者のcreatedカラムを取り出す 13 $createds=$db->prepare('SELECT created FROM post WHERE member_id=:member_id'); 14 15 //バインド 16 $createds->bindParam(':member_id',$mem['member_id'],PDO::PARAM_STR); 17 18 //実行 19 $createds->execute(); 20 $created=$createds->fetchAll();
html
1<!--カレンダー--> 2<table border="5"> 3 <tr> 4 <?php foreach($aryweek as $week){;?> 5 <th> 6 <?php echo $week;?> 7 </th> 8 <?php };?> 9 </tr> 10 11 <!-- カレンダーのマスを成形する--> 12 <?php foreach($calender as $tr){;?> 13 <tr> 14 <?php foreach($tr as $td){;?> 15 16 <?php if($td !=date('j')){;?> 17 <td> 18 <?php 19 //日付出力 20 echo $td 21 ;?> 22 </td> 23 <?php }else{?> 24 <td class="today"> 25 <!--todayに色付け--> 26 </td> 27 <?php };?> 28 <?php };?> 29 </tr> 30 <?php };?> 31 </table>
試したこと
下記コードを//日付出力の箇所で試してみました。
結果は$td一つに対して$dataの全データが出力されている状況です。
for($i=0;$i<=$end_month;$i++){ if($created[$i]['created']==date('Y-m'.'-'.$td)){ echo $data[$i]['data']; } }
###お願いします
今回の質問では、「foreachの中に配列のデータを1つずつ出力したい」ことなのですが
自分で考えて作ったものなので、気になる点やもっと効率のいいコードがあったら教えてほしいです。
回答1件
あなたの回答
tips
プレビュー