PHP为数据库获取一个月的日子

时间:2013-05-07 00:41:02

标签: php html css for-loop

我正在用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 个答案:

答案 0 :(得分:3)

尝试执行此操作并查看是否修复了此问题,您不需要所有这些if语句

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

答案 1 :(得分:1)

不确定为什么我无法在答案中添加评论,但我个人非常喜欢@ unasAquila的答案,它确实完成了所需的操作并减少了所需的代码并具有可重用的优势。 我不明白为什么它会得到一次投票,但在我看来这是最好的解决方案。

答案 2 :(得分:0)

不要使用===,请使用==,也许您的$num_days是整数

答案 3 :(得分:-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