2013-03-26 115 views
0

假設我有這樣的事情:PHP:在的forEach,當達到停止執行的條件,但後來繼續

$count = 0; 
foreach($CourseDetails as $course_line) { 
    print "<tr><td>{$course_line['class_code']}</td> 
      <td>{$course_line['class_name']}</td> 
      <td>{$course_line['class_unit']}</td> 
      <td>{$course_line['class_description']}</td> 
      <td>{$course_line['class_instructors']}</td>"; 
    $count = $count + 1 
    if ($count = 10); 
     $count = 0; 
     // code that stops script and makes a "Continue?" button pop up on the webpage under the already outputed details 
     // if the client presses the "Continue?" button, allow the script to continue (jump back into the foreach loop) 
} 

我試圖找到一種方法來阻止腳本,然後讓一個按鈕說「繼續?」。如果客戶端按下按鈕,我希望腳本繼續停下來。 PHP是否有任何允許這樣的功能?

+0

數據是否來自數據庫?如果我理解正確,你正試圖實現某種'分頁'功能 – thaJeztah 2013-03-26 21:26:08

回答

1

簡答:不!

這是更多的工作流程設計問題。我會建議創建一個項目列表來執行。然後嘗試執行它們(因爲它們已成功處理,將它們標記爲完整),如果發生錯誤,則停止執行並讓用戶知道。如果用戶希望繼續,請重新加載頁面,然後從初始列表繼續執行尚未完成的項目。

+0

在Javascript中怎麼樣? – 2013-03-26 21:08:58

+0

在Javascript中怎麼樣?在服務器端PHP完成執行並將頁面交付給瀏覽器之後,Javascript僅在瀏覽器端執行。要將用戶輸入返回到PHP,您需要執行頁面重新加載。或者,進一步重新設計您的設計,加載您的PHP頁面,然後執行一系列從Javascript返回到PHP的AJAX調用,並逐個執行您的列表。此時,您將能夠停止在Javascript中執行循環,並要求用戶輸入。 – DragonZero 2013-03-26 21:22:23

0

一旦在瀏覽器中加載頁面,就無法停止腳本。您只能在腳本內創建一箇中斷條件。頁面之間「記憶」的兩種方式是傳遞一個URL變量,例如, start = 20,或者使用$ _SESSION變量來記住中斷的最後一個點。最好通過URL傳遞變量,以便頁面可單獨訪問。

然後,在您的循環中,只需評估這些條目是否具有高於最後一箇中斷的數字。以下假設你的課程是一個數字索引數組,在這種情況下$ count是多餘的。如果您要從數據庫中提取數據,請採用完全不同的方法...

$start = !empty($_GET['start']) ? $_GET['start'] : 0; 
$offset = 10; 

foreach($CourseDetails as $course_num => $course_line) { 

    if ($course_num < $start) continue; // These were already seen. 

    if ($course_num >= $start + $offset) { 
     // Interrupt and make a button that links to ?start=$start+$offset. 
     break; 
    } 

    // Here display stuff. 
}