0

我正在用 php/css/javascript/html 制作日历计划器。

我正在尝试将每个月的每一天都设置为“日”类。我尝试使用以下内容:

**PHP CODE**
error_reporting(E_ALL);
ini_set('display_errors', '1');

include "scripts/connect_to_mysql.php";
$jobNameValue ='';
$monthDays = '';
$monthname = '';
$days = '';
//getting values for job names

$sql_job_name = mysql_query("SELECT * FROM jobs");
$num_job_name = mysql_num_rows($sql_job_name);
if($num_job_name >0) {
    while ($row = mysql_fetch_array($sql_job_name)) {
        $job_name = $row["job_name"];
        $job_short_name = $row["job_short_name"];
        $jobNameValue .= '<option value="' . $job_short_name . '">' . $job_name . '</option>';
    }
} else {
    $jobNameValue .= '<option value="NULL">No job listed</option>';
}
//getting values for months days
$sql_month_days = mysql_query("SELECT * FROM months");
$num_month_days = mysql_num_rows($sql_month_days);
if($sql_month_days > 0) {
    while($row = mysql_fetch_array($sql_month_days)) {
        $month_id = $row["id"];
        $name = $row["name"]; 
        $num_days = $row["num_days"];if($num_days === "31") {
   for($i=1; $i <=31; $i++) { 
      $days .= '<span class="day">' . $i . '</span>';
   }
} else { 
    if($num_days === "30") {
       for($i=1; $i <=30; $i++) { 
          $days .= '<span class="day">' . $i . '</span>';
       }
     } else { 
         if($num_days === "29") {
           for($i=1; $i <=29; $i++) { 
             $days .= '<span class="day">' . $i . '</span>';
           }
         }
       }
  }
    $monthDays .= '<div id="monthContainer">
                        <span class="monthName">'. $name .'</span>
                        <div class="monthDaysContainter">
                            '. $days.'
                        </div>
                   </div>';
}

}


**HTML CODE**
<div id="container">
    <div ="newJob">
        <form action="<?php $_SERVER['PHP_SELF'] ?>" id="newJobForm">
            <label for="jobName">Job Name:</label>
                <select id="jobName">
                    <?php echo $jobNameValue; ?>
                </select>
            <input type="date">
            <input type="submit" id="submit">
        </form>
    </div>
    <div id="calander">
        <?php echo $monthDays; ?>
    </div>
</div>

它不能正常工作,它每个月都在重复,我不知道如何正确地纠正 php 以达到预期的目的。

我只是 php 的初学者,所以我目前并不擅长

谁能帮我解决这个问题?

如果您需要更多信息,请随时询问。

先感谢您!克里斯

4

4 回答 4

3

尝试这样做并查看是否可以解决它,您不需要所有这些if语句

for($i=1; $i <= $num_days; $i++) { 
   $days .= '<span class="day">' . $i . '</span>';
}
于 2013-05-07T00:46:24.217 回答
1

不知道为什么我不能在答案中添加评论,但我个人喜欢@unasAquila 的答案,它完全符合要求并减少了所需的代码,并且具有可重用的优势。我不明白为什么它会被否决,但在我看来这是最好的解决方案。

于 2013-05-07T09:46:21.070 回答
0

不要使用===,使用==,也许你$num_days是整数

于 2013-05-07T01:23:19.317 回答
-1

这是实现目标的一种方法。

function calNumDays($numberOfDays){
    $num_days = $numberOfDays;
    $days = '';

    if($num_days == "31" || $num_days == "30" || $num_days == "29") {
        $num = $num_days;

        for($i=1; $i <=$num; $i++) { 
            $days .= '<span class="day">' . $i . '</span>';
        }

       //removed foreach
    } 
}

更新
道歉功能很好我只是错过了您的问题中的一些内容。(这解释了反对票。

您的问题是您正在 while 循环中创建整个内容,因此上次调用附加的日期也将附加到下一个输出中。

更新

更新了上面的 calNumDays 函数(删除了数组输出)
,下面是现在应该根据需要执行的代码。

$tmpArray = array();
if($sql_month_days > 0) {
    while($row = mysql_fetch_array($sql_month_days)) {
        array_push($tmpArray, $row);
    }
}
foreach($tmpArray as $k){
    $monthDays .= '<div id="monthContainer"><span class="monthName">'. $k['name'] .'</span><div class="monthDaysContainter">'. calNumDays($k['num_days']).'</div></div>';
} 

更新
如果你想保留你已经拥有的东西——(我可能把它复杂化了)——

if($num_days === "31") {
    $days = '';
    for($i=1; $i <=31; $i++) {
        $days .= '<span class="day">' . $i . '</span>';
    }
} else { 
if($num_days === "30") {
    $days = '';
   for($i=1; $i <=30; $i++) { 
      $days .= '<span class="day">' . $i . '</span>';
   }
 } else { 
     if($num_days === "29") {
         $days = '';
       for($i=1; $i <=29; $i++) { 
         $days .= '<span class="day">' . $i . '</span>';
       }
     }
   }
}

你只需要$days在每个for之后重新初始化之前if

于 2013-05-07T01:45:09.023 回答