【问题标题】:while loop in a for phpfor php 中的 while 循环
【发布时间】:2011-08-08 11:30:36
【问题描述】:

构建包含事件的日历。我已经建立了日历,现在尝试将事件添加到相应的日期。

$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>


    ";
        } 

      } 

试图使事件显示在右表中。到目前为止,此代码仅显示一个事件。我猜问题是在for中放置了一个while循环。就像我做的那样:

如果 (mysql_num_rows($wqry) > 0){

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

死(mysql_error())){ $alldate = $date."/".$mo."/".$yr;

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


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

              }

          }
          }

它只显示当月的第一个日期。这意味着它必须停止 for 循环。

【问题讨论】:

    标签: php loops calendar for-loop while-loop


    【解决方案1】:

    这是因为它每次只是从数据库中返回第一行作为每月每一天的循环,您需要将查询替换为:

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

    【讨论】:

      猜你喜欢
      • 2013-06-12
      • 1970-01-01
      • 2011-02-11
      • 1970-01-01
      • 2012-10-02
      • 2020-05-15
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多