0

我正在开发库存控制系统,我想编辑分配给商店的用户。可以将用户分配到一个或多个商店。我正在使用多项选择选项。我的问题是,在编辑用户页面中,我想将分配给商店的用户显示为选定的。但是,当我要这样做时,仅当未为所有商店分配用户时,我才收到此错误(第 194 行为 foreach() 提供的参数无效) 。

例如,有 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;  
4

1 回答 1

1

mysql_fetch_array绝对不会以这种方式使用,特别是考虑到它是一个函数而不是数组,即使它返回一个。

你想要的是这样的:

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

如果你mysql_fetch_array在另一个里面做mysql_fetch_array,你最终可以传递一个值,$row1这个值可以匹配后面的条目$row2。这应该有助于解决问题。

此外,mysql_*功能很快就会被弃用。不要在新代码中使用它们(实际上,您应该考虑从所有代码中删除它们)。使用mysqliPDO代替。如果你是一个懒惰的流浪汉(像我一样),你可以考虑使用's 的程序风格,这与原始功能mysqli几乎相同。mysql_*

于 2012-07-30T20:49:09.953 回答