我正在用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的初学者,所以我现在不擅长
有人可以帮我吗?
如果您需要更多信息,请随时询问。
提前谢谢! 克里斯
答案 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