如何解决while循环中if语句混乱
| 在过去的四天内,这一直是我的不懈努力。我真的希望能够解决这个问题,而不必在这里询问,因为它包含很多代码,但是我恐怕已经尝试并尝试减少问题的发生,就像我一样。追着我的尾巴。我已经尽我所能消除了很多代码-我可能已经消除了比我应该轻松了解正在发生的事情多得多的代码,请随时提出澄清。 内容提要: 我正在从Google日历中提取日历供稿,并填充自己的日历。我的日历添加了一些功能,其中有一个“时间轴事件”数据库,该数据库类似于从常规事件发生一定天数(DaysFromEvent
)的待办事项。
该Cron提取了供稿,并在Google日历上搜索了任何新事件,并将它们添加到数据库中。 (这部分似乎正在按预期方式工作)。 cron还会查看“ 1”字段,以查看事件是否已修改,如果已修改,则它将更新数据库中的事件。这似乎也可行。问题是如果修改了主事件,那么我还需要查看数据库并提取与主事件相关的任何时间轴事件,并根据StartTime + DaysFromEvent
更改其开始时间。
我想我几乎是用这个脚本来做的,但是我似乎在with4ѭ语句内部的my3ѭ循环中遇到了麻烦。
当我通过脚本运行修改后的事件时,只会回显到::5ѭ
我应该从while循环中得到回声,但我不是。对于冗长的单词,我深表歉意,对于冗长的代码,我深表歉意。我是这个新手,请保持温柔。 :)
我准备放弃并聘请某人为我完成此任务,因为我是音乐家,而不是程序员!
if((int)$Feed->totalResults>0) { //checking if at least one event is there in this date range
foreach ($Feed as $event) { //iterating through all events and pulling all the info to assign the variables below.
$UserID= \"42\";
$eventDatabase = \"events\";
//Setting startDate and startTime and endDate and endTime
$startDate = $event->when[0]->startTime;
$date = strtotime($startDate);
$startDate = date(\'Y-m-d H:i:s\',$date);
$startArray = explode(\' \',$startDate);
$startTime = $startArray[1];
$EndDate = $event->when[0]->endTime;
$date = strtotime($EndDate);
$EndDate = date(\'Y-m-d H:i:s\',$date);
$Endarray = explode(\' \',$EndDate);
$EndTime = $Endarray[1];
$ModifiedInGoogle = $event->updated->text;
$GoogleID = $event->id;
$EventName = stripslashes($event->title);
$PromotionalTimeLine = \"0\";
$ParentEventID = \"NULL\";
$DaysFromEvent = \"\";
//We are seeing if the Event is already in the database by looking for the googleID
$query = \"SELECT * FROM \".$eventDatabase. \" WHERE GoogleID=\'$GoogleID\'\";
$result = MysqL_query($query);
$row = MysqL_fetch_array($result,MysqL_ASSOC);
//This loop UPDATES events if ModifiedInGoogle string is different than what is already in the database
if($ModifiedInGoogle != $row[\'ModifiedInGoogle\']){
//Variables for modifying the timeline start time
$ModifiedEventStartTime = $row[\'StartTime\'];
$tempParentEventID = $tempEventID = $row[\'EventID\'];
$tempTimelineID = $row[\'PromotionalTimeLine\'];
//THIS ECHOS AS I EXPECT IT SHOULD
echo \"Event ID: \".$tempEventID. \",Promotional Time Line: \".$tempTimelineID.\",Parent Event ID: \".$tempParentEventID.\"<br>\";
//Updates main event when modified in google:
MysqL_query(\"UPDATE \".$eventDatabase.\" SET
EventName = \'$EventName\',StartDate = \'$startDate\',StartTime = \'$startTime\',EndTime = \'$EndTime\',EndDate = \'$EndDate\',Description = \'$Description\',AllDay = \'$AllDay\',CreatedOn = \'$CreatedOn\',GoogleID = \'$GoogleID\',ModifiedInGoogle = \'$ModifiedInGoogle\'
WHERE GoogleID=\'$GoogleID\' \");
//Query to select the timeline events that have the same ParentEvenID-this is where everything seems to start falling apart...
$query = \"SELECT * FROM events WHERE ParentEventID=\'.$tempParentEventID.\' AND GoogleID IS NULL\";
$tempresult = MysqL_query($query);
while($row = MysqL_fetch_array($tempresult,MysqL_ASSOC)){
$tempEventID = $row[\'EventID\'];
$tempDaysFromEvent = $row[\'DaysFromEvent\'];
$tempStartDate = $row[\'StartDate\'];
//THIS LINE IS NOT ECHOING
echo \"EventID: \".$tempEventID.\",Start Date: \".$tempStartDate.\",Days From Event: \".$tempDaysFromEvent.\",Parent Event ID: \".$row[\'ParentEventID\'].\"<br>\";
//IF STARTDATE IS DIFFERENT FROM HOW IT USED TO BE,UPDATE IT.
list($year,$month,$day) = explode(\"-\",$tempStartDate);
$tempStartDate = $tempEndDate = date(\"Y-m-d\",mktime (0,$day+$tempDaysFromEvent,$year));
echo \"TempStart Date:\".$tempStartDate.\"<br>\";
//Query to update the startdate of the events
MysqL_query(\"UPDATE\".$eventDatabase.\" SET
StartDate = \'$tempStartDate\'
WHERE EventID = $tempEventID
\");
} //Closes While loop
} //This closes the update if modified if statement
//This loop adds NEW EVENTS
if (!MysqL_num_rows($result)) {
//Insert NEW EVENTS
}
} //ends main event loop
} else {
echo \"No event found\";
}
解决方法
线内
$query = \"SELECT * FROM events WHERE ParentEventID=\'.$tempParentEventID.\' AND GoogleID IS NULL\";
您包括单引号而不是双引号。你是说有
$query = \"SELECT * FROM events WHERE ParentEventID=\".$tempParentEventID.\" AND GoogleID IS NULL\";
或可能没有点(如果要保留定界符)
$query = \"SELECT * FROM events WHERE ParentEventID=\'$tempParentEventID\' AND GoogleID IS NULL\";
, 好吧,跳到我身上的第一件事是while循环:
while($ row = mysql_fetch_array($ tempresult,MYSQL_ASSOC))
为了使while循环继续进行,该参数必须为\“ true \”。我对php不太熟悉,某些语言接受大于0的任何整数都不为假,但这可能是错误的来源。
, 它说:
while($row = mysql_fetch_array($tempresult,MYSQL_ASSOC)){
不应该是:
while($row == mysql_fetch_array($tempresult,MYSQL_ASSOC)){
如果这不是目的,那么似乎有些可疑,因为您无法从操作中获得正确的值,因此您将需要某种查询。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。