이것은 나를위한 학습 프로젝트이며 이미이 사이트에서 몇 가지 질문을 해주었습니다. 그러나 "스위치"루틴에 문제가있어 내가 소집 할 수있는 지침을 알려 주시면 감사하겠습니다. 이 스위치 루틴은 제안 이었지만 오류가 발생했습니다. 나는 꽤 많은 연구를 해왔으나이 과정을 어떻게 성취 할 수 있는지 아직 알 수 없다. 나는 또한 "@"이 "date_create ("@ $ qucls ")"에서 무엇을 의미하는지 이해하지 못한다. 그것은 그것이 존재하는지 아닌지는 중요하지 않지만 이것이 루틴과 함께 제안되었습니다.오류없이 스위치 루틴을 추가 할 수 없음
질의는 내가 생산하고 싶은 것을 얻는 한 체크 아웃하지만 일단 시간 문자열을 업데이트하려고 시도하면 쿼리가 중단됩니다. 오류는 "date_format()은 매개 변수 1이 DateTime이 될 것으로 예상하고 부울은 ...을 지정합니다". 내가 아는 한 $ qucls는 참/거짓이 아닌 숫자의 문자열이어야합니다. 이 테이블 필드에는 int 형식의 숫자 문자열이 있습니다.
다른 게시물을 반복해서 사용하면 머리를 쓰지 않고 데이터베이스를 변경할 수 없습니다. 캘린더 프로그램에서 이메일 알리미를 만들기 위해 정보를 가져와야합니다. 테이블은 비정상적인 형태와 날짜/시간 문자열로 복잡하게 뒤얽혀 있으므로 여기에 표시되는 것보다이 스크립트에 훨씬 더 많은 부분이 있습니다. 내 과정에서, 이것은 내가 알아 내고있는 곳이며 중부 유럽인에게도 그렇게 나쁘지 않습니다. 올바른 결과를 얻는 프로세스를 파악한 후에 정리를 위해 갈 것입니다.
다음은 스크립트의 해당 부분이다 :
date_default_timezone_set('UTC');
$today = date("Ymd");
mysql_select_db($dbname);
$querydel = "SELECT cal_entry_id, cal_type FROM webcal_entry_log WHERE cal_type = 'D'";
$delqu = mysql_query($querydel);
$i = 0;
while ($row = mysql_fetch_array($delqu, MYSQL_NUM)) {
$qudel[$i] = $row[0];
}
$query1 = "SELECT cal_id, cal_name, cal_date, cal_time, cal_type, cal_description FROM webcal_entry WHERE cal_type = 'M' AND cal_date != ' . $today . ' AND cal_id != " . $qudel[$i];
$wequ1 = mysql_query($query1);
while ($row = mysql_fetch_array($wequ1, MYSQL_NUM)) {
$quid1[$i] = $row[0];
$quname[$i] = $row[1];
$qutime[$i] = $row[3];
$qudesc[$i] = $row[5];
$query2 = "SELECT cal_id, cal_type FROM webcal_entry_repeats WHERE cal_id = " . $quid1[$i];
$wer1 = mysql_query($query2);
if ($row = mysql_fetch_array($wer1, MYSQL_NUM)) {
$qutype[$i] = $row[1];
}
$query3 = "SELECT cal_id, cal_last_sent FROM webcal_reminders WHERE cal_id = " . $quid1[$i];
$wer2 = mysql_query($query3);
if ($row = mysql_fetch_array($wer2, MYSQL_NUM)) {
$qucls[$i++] = $row[1];
}
}
for ($j = 0; $j < $i; $j++) {
}
// date calculations - switch routine
$dateObj = date_create("@$qucls");
switch($qutype) {
case "daily":
date_add($dateObj, date_interval_create_from_date_string("1 day"));
break;
case "weekly":
date_add($dateObj, date_interval_create_from_date_string("1 week"));
break;
case "monthly":
date_add($dateObj, date_interval_create_from_date_string("1 month"));
break;
case "yearly":
date_add($dateObj, date_interval_create_from_date_string("1 year"));
break;
}
$qucls = date_format($dateObj, "U");
감사합니다!
편집 : $ qucls는 쿼리 루프가 끝난 후 Unix 시간 스탬프 배열을 int() 유형으로 출력합니다. 일단 encouters - $ dateObj = date_create ("@ $ qucls"), $ dateObj false를 반환합니다. 트릭을 찾을 수없는 것 같습니다.
감사 dleiftah. $ qutype은 스위치 케이스, 매일, 매주 등의 단어 배열입니다.이 필드는 실제 단어입니다. – defacto7
죄송합니다. 편집을 마치기 전에 시간이 초과되었습니다. 고마워 dleiftah. $ qutype은 스위치 케이스에서 "일일", "주간"등의 단어입니다. 그들은 현장에서 실제 단어입니다. 쿼리 후, $ qucls는 datetime 유형이 아니고 날짜 만 나타내는 숫자 배열입니다. $ qucls의 정보는 그 시점에서 정확합니다.스위치 루틴이 끝나면 위에서 언급 한 오류가 발생합니다. $ qutype에있는 단어를 기반으로 $ qucls의 날짜 배열에 일 또는 주 등을 추가하는 것입니다. – defacto7
값을 반복하고 각각의 작업을 수행해야하는 것처럼 들리지만 ... 내 대답을 제안으로 편집했습니다 ... – keithhatfield