我正在尝试创建一个每周日历应用程序,它是我正在设计的网页的一部分。我想实现一个编辑功能,允许管理员使用每个单元格中的textareas编辑日历内容。日历本质上只是一个表。该表是根据数据库中的用户数动态生成的。我遇到的问题是尝试正确命名每个单元格,然后从该单元格中取出文本并将其放在数据库中的正确行中
目前我正在使用循环尝试使用递增变量$ i为每个单元格动态生成名称。
for($i=0; $i < $rows; $i++){
echo "<tr>";
$q2 = mysqli_query($connect,"SELECT firstname FROM users WHERE id='".($i+1)."'");
$q3 = mysqli_query($connect,"SELECT lastname FROM users WHERE id='".($i+1)."'");
$qDays = mysqli_query($connect,"SELECT * FROM schedule WHERE id='".($i+1)."'");
$rowDays = mysqli_fetch_assoc($qDays);
$row2 = mysqli_fetch_assoc($q3);
while($row = mysqli_fetch_assoc($q2)){
$db_firstname = $row['firstname'];
$db_lastname = $row2['lastname'];
$sun = $rowDays['sun'];
$mon = $rowDays['mon'];
$tue = $rowDays['tue'];
$wed = $rowDays['wed'];
$thu = $rowDays['thu'];
$fri = $rowDays['fri'];
$sat = $rowDays['sat'];
echo "<td align='center'> $db_lastname, $db_firstname </td>";
echo "<td td height='50px' align='center'><textarea style='height:50px; resize:none; width:100%;' name='sun.($i+1)'>$sun</textarea></td>";
echo "<td td height='50px' align='center'><textarea style='height:50px; resize:none; width:100%;' name='mon.($i+1)'>$mon</textarea></td>";
echo "<td td height='50px' align='center'><textarea style='height:50px; resize:none; width:100%;' name='tue.($i+1)'>$tue</textarea></td>";
echo "<td td height='50px' align='center'><textarea style='height:50px; resize:none; width:100%;' **name='wed.($i+1)'>$wed</textarea></td>";
echo "<td td height='50px' align='center'><textarea style='height:50px; resize:none; width:100%;' name='thu.($i+1)'>$thu</textarea></td>";
echo "<td td height='50px' align='center'><textarea style='height:50px; resize:none; width:100%;' name='fri.($i+1)'>$fri</textarea></td>";
echo "<td td height='50px' align='center'><textarea style='height:50px; resize:none; width:100%;' name='sat.($i+1)'>$sat</textarea></td>";
}
在我的程序的上面的块中,我试图动态命名(通过用变量$ i + 1连接一个字符串)然后用文本框填充已经在DB中的文本。
<input style='width:100px;' type='button' value='Confirm Edit' name='edit' class="edit_button">
<?php
if(isset($_POST['edit'])){
for($j=0; $j < $srows; $j++){ --srows is the number of rows in the DB
$sun_post = @$_POST['sun.($j+1)'];
$mon_post = @$_POST['mon.($j+1)'];
$tue_post = @$_POST['tue.($j+1)'];
$wed_post = @$_POST['wed.($j+1)'];
$thu_post = @$_POST['thu.($j+1)'];
$fri_post = @$_POST['fri.($j+1)'];
$sat_post = @$_POST['sat.($j+1)'];
mysqli_query($connect, "INSERT INTO schedule WHERE id='".($j+1)."' (`id`,`mon`,`tue`,`wed`,`thu`,`fri`,`sat`,`sun`) VALUES ('','".$mon_post."','".$tue_post."','".$wed_post."','".$thu_post."','".$fri_post."','".$sat_post."','".$sun_post."')");
}
}
?>
</body>
在这个块中,我试图通过将字符串与变量$ i + 1连接并将值插入数据库来再次获取动态生成的名称。我的问题是如何正确地动态命名textareas,以便我可以从中获取数据以放入数据库,是否可能?
答案 0 :(得分:0)
多年前我解决了同样的问题。你能做的唯一可靠的事情就是使用日期。
$startDay = date('N', date('Y-m-01')); // weekdayNum of the first of this month.
// loop printing empty cells up to the first day in this month
// loop for month starts $day = numerical day this month.
$cellName = "day".$day
最终,您需要使用每月常用的名称,以简化帖子页面。那个月的第四天就像name="day04"
之类的东西。然后您的数据库ID可以是时间戳。这是可靠地执行此操作的唯一方法,并且仍然允许支持超过一年的日历(作为您当前的方法)。
为了获得该时间戳ID
,只需要存储一些额外的隐藏字段,以存储此特定条目的年份和月份。