使用foreach()和$ _POST []无法获取id

时间:2014-09-13 16:30:21

标签: php mysql

好的朋友,

我有两张桌子

第一张表:social_networks

social_networks table

第二张桌子:members_social_accounts

members_social_accounts table

在用户控制面板中,我有一个页面包含form,其中列出了所有社交网络;在每个人的前面都有一个input文本框。

当会员打开该页面时,他会看到列出的所有社交网络,如果他之前在任何社交网络中添加了他的帐户,那么他将在文本框中看到它,否则,文本框将为空。我使用了以下代码:

$s = mysqli_query($link, "SELECT social_networks.network_id, social_networks.network_name, members_social_accounts.member_account FROM social_networks LEFT JOIN members_social_accounts ON social_networks.network_id = members_social_accounts.network_id AND members_social_accounts.member_id = '$member_id' ORDER BY social_networks.network_id");
while($i = mysqli_fetch_assoc($s)){
    $network_id       = $i['network_id'];
    $network_name     = $i['network_name'];
    $member_account   = $i['member_account'];
}

,输入框为:

<?=$network_name;?> = <input type="text" name="ids[<?=$network_id;?>]" id="<?=$network_id;?>" value="<?=$member_account;?>" /><br />

现在,我要做的是当用户更新页面(提交表单)时,我希望代码通过以下步骤更新数据库:

  1. If该成员(例如$member_id =1)已将其帐户添加到该网络(例如$network_id = 1)然后,我们将UPDATE members_social_accounts表使用会员网络帐户(例如$member_account = 1111111111)。因此,我不要为相同的member_id和相同的network_id 添加具有不同帐户值的新记录。
  2. 所以,数据库表将是这样的:

    members_social_accounts after update

    1. else如果该成员(例如$member_id=1)正在向网络添加新帐户(例如$member_account = 2222222222)(例如$network_id = 3),那么我想INSERT 1}}将members_social_accounts表作为新记录,表格将如下所示:
    2. members_social_accounts after insert

      到目前为止我尝试的是以下内容:

      <?php
      if(isset($_POST))
      {
        foreach($_POST['ids'] AS $ids)
        {
             $s = mysqli_query($link, "SELECT * FROM members_social_accounts WHERE network_id = '{$ids}' AND member_id = '$member_id'");
             echo $n = mysqli_num_rows($s);
             if($n == 1)
             {
                  // UPDATE the members_social_accounts table
             }
             else
             {
                  // INSERT a new record in members_social_accounts table
             }
        }
      } 
      ?>
      

      但我遇到的问题是$_POST[ids] AS $ids正在获取member_account(例如aaaaaaaaaabbbbbbbbbb)而不是获得netword_id(例如{{} 1}}和1)。因此,我无法在2表格中updateinsert

      感谢您帮助我指出我的代码或逻辑有什么问题。

      提前致谢

      P.S。您可以从以下链接下载文件和数据库的副本: sample files and db

1 个答案:

答案 0 :(得分:0)

这是因为输入的实际值是member_account字段。

<input type="text" name="ids[<?=$network_id;?>]" id="<?=$network_id;?>" value="<?=$member_account;?>" /> 

查看已从value变量分配回来的$member_account

你可以这样做:

<input type="hidden" name="nid" value="<?=$network_id;?>"/> 

然后,您可以$_POST['nid']获取network id的真实价值。