2013-10-10 16 views
0

我從來沒有使用以前的會話,我試圖找出處理的最佳方式。基本上,我正在嘗試做的事:如何使用本地會話和MySQL的加入信息

1步選擇服務

2步選擇時間

3步審查和書

我能得到它的工作使用mysql沒有問題。我通常會做的是在每一步之後將信息保存到數據庫中,當我到達審查部分時,我將保存所有信息並確定。

不過,我不認爲這是解決這個的最佳方式,並可能導致在路上(如果他們停止在步驟2等等等等什麼的)問題

我決定嘗試Laravel 4屆,它非常容易保存會議並進入下一步。但是,當我到達最後一步時,我需要加入mysql表格以充分顯示有關其預訂的信息。我可以使用會話信息來加入信息嗎?我可以使用會話數據庫來保存這些信息嗎?或者使用不同的表格?

我控制器審查信息後郵編:

public function getReview() { 

//sets id of user 
$user = User::find(Auth::user()->id); 

//gets the time and date that they booked from @getSchedule  
$scheduler = Session::get('schedule'); 

//formats time to put in db 
$date = strtotime($scheduler['date']); 

//same thing as the line above 
$dateFormat = date('Y-m-d',$date);  

//model to save the schedule 
$schedule = new Schedule(); 

$schedule->userID = $user->id; 
$schedule->date = $dateFormat; 
$schedule->block = $scheduler['timeslot']; 
$schedule->status = "1"; 

$schedule->save(); 

//gets the services the user picked from @getServices 
$service = Session::get('service'); 

//saves the services as individual rows in db table 
foreach($service as $services) 
{   
    if(!empty($services)) { 
     $service = new Service(); 

     $service->userID = $user->id; 
     $service->services = $services; 

     $service->save(); 
    } 
} 



     return Redirect::to('dashboard'); 
} 

這是GET瀏覽頁面(其中我有所有的加入問題)

public function showReview() { 
$user = User::find(Auth::user()->id);   
//show the information and confirm that they want all this crap...if they do..save it and return them to their dashboard  

$time = DB::table('bk_schedule') 
     ->leftJoin('bk_timeslot', 'bk_schedule.block', '=', 'bk_timeslot.id') 
     ->where('bk_schedule.id', Auth::user()->id)->first();  

$date = strtotime($time->date); 

$dateFormat = date('D: F d, Y',$date); 

$service = Session::get('service');  

$serviceSummary = DB::table('bk_service') 
     ->leftJoin('pr_service', 'pr_service.id', '=', 'bk_service.services') 
     ->where('bk_service.userID', Auth::user()->id) 
     ->get(); 

$total = DB::table('bk_service') 
     ->leftJoin('pr_service', 'pr_service.id', '=', 'bk_service.services') 
     ->where('bk_service.userID', Auth::user()->id) 
     ->sum('pr_service.price');  

return View::make('book.review', array('pageTitle' => 'Booking Appointment Review and Finalize', 'service' => $service, 'date' => $dateFormat, 
    'time' => $time, 'email' => $user->email, 'serviceSummary' => $serviceSummary, 'total' => $total)); 
} 

是否有可能如果他們不提交給POST,將信息保存在GET處並將其刪除?我可以使用我的會話數據並使用我的MySQL查詢嗎?

回答

0

你不明白的會議是什麼,與你接近的用戶將無法同時填補幾種形式(在幾個選項卡中打開)。

所以,要做到這一點的一般方法是:

  1. 第一頁顯示只是某些字段
  2. 用戶選擇他們,POST數據傳回服務器的HTML代碼
  3. Server驗證的數據並打開另一個HTML與新的領域和頁面增加了幾個「隱藏」字段在步驟1中選定的值(當然,服務器可以呈現第1頁,錯誤消息)
  4. 用戶帖子這種形式下,服務器可以開型的第三形式,其中新可見光領域和所有以前的字段存儲在隱藏的輸入
  5. 最後,用戶帖子形成最後一頁,其中包含所有先前頁面的所有數據。

只是要注意:另一種方法是存儲在會話「臨時」的數據,爲此,你需要獲得第二步一些生成的ID,並通過它通過網頁像以前

+0

以及問題描述我我是在發佈timeblock的ID ..它然後加入到時間塊表並加入該ID與實際時間段。所以當用戶進入評論頁時,它的POST ID是1,這是10am,它會顯示他們10am而不是id .. how可以在你的例子中工作嗎? – Lynx

+0

你將擁有ID,所以你將不得不從數據庫中獲取數據來顯示這個ID的標題/文本,或者在步驟2/4中,你不僅可以傳遞id,而且可以傳遞文本 - 這不是很好的做法,因爲沒用交通 –

相關問題