2011-08-08 15 views
0

イベントでカレンダーを構築する。カレンダーを作成して、対応する日付にイベントを追加しようとしています。whileループでは、PHPの

$dayName = "Monday"; 
$mo = date($m); 

    for($day = 1; $day <=7; $day++) 
    { 
    $timestamp = mktime(1,1,1,$mo,$day,$yr); 
    if(date('l', $timestamp) == $dayName) 
    { 


if(date('d', $timestamp) == 1){ 
    $num = cal_days_in_month(CAL_GREGORIAN, $m, $yr); 

    for($date = 1; $date <=$num; $date++){ 
     if ($date == 1){ 
     print "<tr>"; 
     } 
     print "<td";if($mo == date("m")){ if($date == date("d")){ if($yr == date("y")){ print " style=\"background:#97d2fd;\"";}}}print " onClick=\"location.href = '?v=dd&id=$m&y=$yr&mid=$mm&my=$myr&d=$date';\" height=\"80\">". $date."<br/>"; 

      $wqry = mysql_query("SELECT * FROM events")or die(mysql_error()); 

      if (mysql_num_rows($wqry) > 0){ 
       //need to be a while loop 
       $wrow = mysql_fetch_array($wqry, MYSQL_ASSOC) or die(mysql_error()); 
       $alldate = $date."/".$mo."/".$yr; 

       if($alldate == $wrow['sdate']){ 


        if($wrow['type'] == "1"){ 
         print"<div id=\"hight\">"; 
        }print $wrow['title']."</div><br/>"; 

       } 

      } 


     print"</td> "; 
     if ($date == 7){ 
     print "</tr><tr>"; 
     } 
     if ($date == 14){ 
     print "</tr><tr>"; 
     } 
     if ($date == 21){ 
     print "</tr><tr>"; 
     } 
     if ($date == 28){ 
     print "</tr>"; 
     } 


    } 

} 

    break; 
    print" 
    </tbody> 
    </table> 
    </div> 

</div> 


</div> 


    "; 
     } 

     } 

イベントが右側の表に表示されるようにしてください。これまでのところ、このコードはただ1つのイベントを示しています。問題を推測するImはforループをforに入れています。私が行うときのように:

(はmysql_num_rows($のwqry)> 0){

   while($wrow = mysql_fetch_array($wqry, MYSQL_ASSOC) or 

ダイ(mysql_error())){ $ alldate = $日付であれば "/" $ MO。 "/"。$ yr;

   if($alldate == $wrow['sdate']){ 


        if($wrow['type'] == "1"){ 
         print"<div id=\"hight\">"; 
        }print $wrow['title']."</div><br/>"; 

       } 

      } 
      } 

それはちょうど、月の最初の日付が表示されます。それはforループを止めなければならないという意味です。

答えて

2

そのはちょうどその月にそれぞれの日のためのループとしてデータベースから毎回最初の行を返す、あなたのようなもので、クエリを交換する必要があるためです:

$wqry = mysql_query("SELECT * FROM events WHERE sdate='$alldate'")