2012-12-20 30 views
-1

所以,我有這個問題。我正在盡我所能來練習面向對象編程,並且我已經開始使用這個半OOP腳本。它是如何工作的,我有一個名爲portal_robot_error的表包含所有機器人錯誤。然後我有另一個主表portal_robot_service女巫是服務的最高級別。連接到這張表我還有2個與portal_robot_service錶鏈接。這些稱爲portal_service_robot_errorservice,portal_service_robot_changeservice witch包含服務的詳細信息。我希望我已經設法解釋這個部分夠好了!PHP面向對象編程多個查詢

這就是我想要做的。當用戶搜索機器人時,所有錯誤和所有服務都應按照按日期排序的列表結束。

示例: 用戶搜索機器人21. 結果: 錯誤1 - 日期,機器人,位置,錯誤代碼等 錯誤2 - 日期,機器人,位置,錯誤代碼等 服務1 - 日期,機器人,服務類型等 錯誤3 - 日期,機器人,位置,錯誤代碼等 錯誤4 - 日期,機器人,位置,錯誤代碼等 等...

作爲腳本現在只有它顯示錯誤,我如何顯示列表中的服務?

在此先感謝!

<?php 
elseif(!empty($query) && empty($inDate) && empty($id) && empty($dateLike)) { 
$arr = array(); 
$q  = mysql_query("SELECT * FROM portal_robot_error WHERE robot = '$robot'"); 

while($r = mysql_fetch_object($q)) { 

    $m = "Robot ".$r->robot; 
    $s = mysql_query("SELECT * FROM portal_service WHERE service_date >= '$this->lastService' AND service_date <= '$r->date' AND service_module = '$m' AND service_id > '$this->lastId' LIMIT 1"); 

    if(mysql_num_rows($s) > 0) { 
     echo "SELECT * FROM portal_service WHERE service_date >= '$this->lastService' AND service_date <= '$r->date' AND service_module = '$m' AND service_id > '$this->lastId' LIMIT 1<br />"; 
     $z    = mysql_fetch_object($s); 
     $this->lastId = $z->service_id; 

     if($z->service_type == "Errorservice") { 
      $e      = mysql_query("SELECT * FROM portal_service_robot_errorservice WHERE service_id = '$z->service_id'"); 
      $f      = mysql_fetch_object($e); 
      $errorservice_track  = $f->tracksensor; 
      $errorservice_gripper = $f->gripper; 
      $errorservice_cover  = $f->cover; 
      $errorservice_wheel  = $f->wheel; 
      $service_text   = "Errorservice HIHIHIHI".$this->lastId; 
      $service    = new Error($this->lastId, $z->service_date, "", "", $z->service_module, "", "", $z->service_type, $z->service_comment, $service_text, "", $z->service_user); 
      array_push($arr, $service);      
     } 
     elseif($z->service_type == "Changeservice") { 
      $e      = mysql_query("SELECT * FROM portal_service_robot_changeservice WHERE service_id = '$z->service_id'"); 
      $f      = mysql_fetch_object($e); 
      $service_text   = "Changeservice HIHIHIHI".$this->lastId; 
      $service    = new Error($this->lastId, $z->service_date, "", "", $z->service_module, "", "", $z->service_type, $z->service_comment, $service_text, "", $z->service_user); 
      array_push($arr, $service); 
     } 
    } 
    else { 
     $n = new Error($r->error_id, $r->date, $r->stoptime, $r->starttime, $r->robot, $r->rob_status, $r->position, $r->error_code, $r->observation, $r->solution, $r->downtime, $r->user); 
     array_push($arr, $n); 
     $this->lastService = $r->date; 
    } 

} 
return $arr; 
} 
?> 
+0

這裏很難給出建議,因爲我們不知道太多關於plentyfull讀了你在這裏使用的變量....究竟失敗了什麼?如果您總是得到最後一種情況的結果,請檢查您的查詢是否存在'$ s' ... else調試您的'Error'構造函數並檢查哪些值插入哪個參數 – cypherabe

+1

[**請勿使用'新代碼中的mysql_ *函數**](http://bit.ly/phpmsql)。他們不再被維護[並被正式棄用](https://wiki.php.net/rfc/mysql_deprecation)。看到[**紅框**](http://j.mp/Te9zIL)?學習[*準備的語句*](http://j.mp/T9hLWi),並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli) - [這篇文章](http://j.mp/QEx8IB)將幫助你決定哪個。如果你選擇PDO,[這裏是一個很好的教程](http://j.mp/PoWehJ)。 – DaveRandom

回答

0

好的,我找到了解決方案。當我們將數據導入數據庫時​​出錯了,並在所有內容的末尾添加了\ r。我的問題是,如果($ z-> service_type ==「Changeservice」)沒有擊中。這是因爲,沒有人看到到底\ r的...

我將PDO和庫MySQLi :)