2012-07-30 55 views
0

我正在使用庫存控制系統,我想編輯分配給商店的用戶。用戶可以分配到一個或多個商店。我正在使用多個選擇選項。我的問題是,在編輯用戶頁面中,我想要顯示分配給商店的用戶爲選中狀態。但是,當我要這樣做時,我得到這個錯誤(無效的參數爲第194行的foreach()提供)只有當用戶沒有分配給所有商店。偶爾錯誤>>>爲foreach提供的無效參數()

e.g.-說,有3家店稱爲A,B和C

1)如果我要編輯分配給三個店面誰的用戶,我不會得到任何錯誤。
2.)如果我要編輯分配給2個商店的用戶,我將得到兩次以上的錯誤。
3.)如果我要編輯只分配給一個商店的用戶,我將只收到一次以上錯誤。

請幫我解決這個問題。

這是我的代碼

$emp_id = $_GET['emp_id']; 
$result1 = mysql_query("Select * 
          from members 
          JOIN store_employee on members.emp_id = store_employee.emp_id 
          JOIN stores on store_employee.store_id = stores.store_id 
          where members.emp_id=$emp_id") 
       or die(mysql_error()); 
$query="SELECT * FROM stores"; 
     $dropdown = "<select name='store_id[]' multiple='multiple' style='height:80px;' size='5' id='store'>"; 
     $result2 = mysql_query ($query); 
     while($row2 = mysql_fetch_array($result2)) 
     { 

    $dropdown .= "\r\n<option value='{$row2['store_id']}'"; 

      foreach(mysql_fetch_array($result1) as $row1)  //this is line 194 
       { 
       if(($row1['store_id'])==($row2['store_id'])) 
        { 
         $dropdown .=" selected='selected'"; 
        } 

      } 
    $dropdown .= ">{$row2['store_name']}</option>"; 
     } 
     $dropdown .= "\r\n</select>"; 
     echo $dropdown; 
+0

請不要使用'mysql_ *'函數來編寫新代碼。他們不再維護,社區已經開始[棄用程序](http://goo.gl/KJveJ)。請參閱* [紅盒子](http://goo.gl/GPmFd)*?相反,您應該瞭解[準備好的語句](http://goo.gl/vn8zQ)並使用[PDO](http://php.net/pdo)或[MySQLi](http://php.net/ mysqli的)。如果你不能決定哪些,[這篇文章](http://goo.gl/3gqF9)會幫助你。如果你選擇PDO,[這裏是很好的教程](http://goo.gl/vFWnC)。 – 2012-07-30 21:14:00

+0

Thanku for u reply。這是一個大學迷你項目,直到現在我已經使用了mysql_函數,並且我很急於在死亡線之前完成這個任務,所以不能去mysqli或者PDO可悲地沒有時間。 – viddz 2012-07-30 21:20:19

+1

這不是理由。從長遠來看,「沒有時間」會回來並咬你。我只是說。 ** [對錯誤的代碼沒有任何理由!](http://vimeo.com/13439458)** – 2012-07-30 21:23:00

回答

1

mysql_fetch_array最絕對不會以這種方式使用的,尤其是考慮到它的,你知道,一個功能,而不是一個數組,即使它返回一個。

你需要的是這樣的:

$user_stores; 
while ($rows = mysql_fetch_array($result1)) { 
    $user_stores[] = $rows; 
} 
while ($rows2... 
    //... 
    foreach ($user_stores as $row1) { 
     //... 
    } 
} 

如果你做其他mysql_fetch_arraymysql_fetch_array,你可以最終通過在$row1值可能匹配$row2以後的條目。這應該有助於解決問題。

另外,mysql_*函數很快就會被棄用。不要在新代碼中使用它們(實際上,您應該考慮從全部代碼中刪除它們)。改爲使用mysqliPDO。如果你是一個懶惰的屁股(像我一樣),你可以使用mysqli的程序風格,這與原來的mysql_*函數幾乎相同。

+0

編輯>>>>>謝謝你的回覆。我試過hile($ rows = mysql_fetch_array($ result1)){ 而不是foreach。但它不顯示所有選定的項目。它只顯示一個選定的項目。數據我是用這種方式得到結果的。這是一個大學迷你項目,我使用了mysql_函數,直到現在,我非常急於在死亡線之前完成這個任務,所以不能去mysqli或PDO可悲的是沒有時間 – viddz 2012-07-30 21:04:40

+0

@viddz請參閱編輯。 – Palladium 2012-07-30 21:11:54

+0

我試過你的解決方案,但它不工作。任何方式thanku – viddz 2012-07-30 22:05:59

相關問題