Shift_ID
으로 날짜 범위를 업데이트하려고하는데 입력 한 Shift_ID
은 그 요일에 따라 다릅니다. 예를 들어, 일정 범위가있는 경우 $from = "2012-12-01"
$to = "2012-12-28"
어떤 날이 offdays
인지 나타내는 확인란 (예 : value="Fri" name = "offdays[]"
)을 선택할 수 있도록 설정하려고합니다. offdays
가 설정 한 범위의 하루와 일치하는 경우, Shift_ID = "6"
이 그렇지 않으면 희망이 모든 분에서 이해하는 작업 일 및 Shift_ID = "3"
while 루프에서 foreach 루프 문제가 발생했습니다.
, 나는 그것을 설명 할뿐만 아니라 내 최선을 다하고 있어요 유용한 변수를 제공하십시오. 내 인쇄 에코 문을 볼 때
if(isset($_POST['submit']))
{
if(isset($_POST['offdays']))
{
//$off is set through the config settings//
$shift = mysqli_real_escape_string($_POST['shift']);
$from = mysqli_real_escape_string($_POST['from']);
$to = mysqli_real_escape_string($_POST['to']);
$emp_id = mysqli_real_escape_string($_POST['emp_id']);
foreach($_POST['offdays'] as $checkbox)
{
echo "Checkbox: " . $checkbox . "<br>";//error checking
$sql = ("SELECT Date FROM schedule WHERE (Date BETWEEN '$from' AND '$to') AND (Emp_ID = '$emp_id')");
if(!$result_date_query = $mysqli->query($sql))
{
echo "INSERT ERROR 1 HERE";
}
echo "SELECT SQL: " . $sql . "<br>";//error checking
while($row = $result_date_query->fetch_assoc())
{
echo "Date: " . $row['Date'] . "<br>";//error checking
$date = date('D',strtotime($row['Date']));
if($date == $checkbox)
{
echo "MATCHED! Date: " . $date . " Checkbox: " . $checkbox . "<br>";//error checking
$sql = ("UPDATE schedule SET Shift_ID = '$off' WHERE Date = '" . $row['Date'] . "' AND Emp_ID = '$emp_id'");
if(!$result_update_offdays_query = $mysqli->query($sql))
{
echo "INSERT ERROR 2 HERE";
}
echo "UPDATE DAYS OFF SQL: " . $sql . "<br><br>";//error checking
}
else
{
echo "NOT MATCHED! Date: " . $date . " Checkbox: " . $checkbox . "<br>";//error checking
$sql = ("UPDATE schedule SET Shift_ID = '$shift' WHERE Date = '" . $row['Date'] . "' AND Emp_ID = '$emp_id'");
if(!$result_update_shift_query = $mysqli->query($sql))
{
echo "INSERT ERROR 3 HERE";
}
echo "UPDATE SHIFT SQL: " . $sql . "<br><br>";//error checking
}
}
}
}
}
는, 모든 것이 완벽 :
그래서 여기 내 코드입니다! 금요일에 날짜가 표시되면 Shift_ID = "6"
을 입력하고 다른 날은 Shift_ID = "3"
을 표시합니다. 문제는 테이블이 내 진술이 내게 말하는 것을 반영하지 않는다는 것입니다. 그들은 모두 Shift_ID = "3"
으로 업데이트됩니다.
결국 하나 이상의 offdays
을 선택할 수 있기를 원하지만 두 개 이상을 선택하면 다음 루프 중에 이전 날을 덮어 씁니다. 이는 의미가 있습니다.
나는 어떤 일이 벌어지고 있는지 전혀 알지 못합니다. 아무도 내게 단서를 줄 수 없다면 정말 감사 할 것입니다.
업데이트 : 나는이 같은 일 오프 업데이트 후 exit;
을 추가 할 때 : 그것은 그 후 일어나는 것이어야하므로
echo "UPDATE DAYS OFF SQL: " . $sql . "<br><br>";//error
exit;
그것은, Shift_ID = "6"
에 떨어져 하루를 업데이트 않습니다.
편집 : 문제는 사용자 권한에있는 것처럼 보입니다. 이유를 설명 할 수는 없지만 사용자를 삭제하고 모든 권한으로 새 사용자를 만든 후에는 모든 것이 작동하기 시작했습니다. @ andho의 답변을 선택하여 채팅 포럼에서 답변을 얻고 코드를 정리할 수있는 방법을 추가했습니다.
직접 $ shift, $ to, $ from 및 $ emp_id 항목을 $ escape = mysqli_real_escape_string ($ _ POST [ 'emp_id']); ' – Lucas
@ 루카스 네, 고마워요, 제가 할 것입니다. –
대답없이 14 시간, 나는 완전히 난처하게되고 명백하게 모두는 역시이다! –