PHP数组使用Foreach中的多个文本框发布到数据库中

PHP数组使用Foreach中的多个文本框发布到数据库中,php,sql,arrays,foreach,Php,Sql,Arrays,Foreach,我对PHP非常陌生,对数组和Foreach有点糊涂 我目前正在从事一个项目,我们有许多团队,每个团队都有一定数量的人员,我们在数据库中得到了这些人员 我有一个foreach设置,用户可以在其中选择一个团队,它将在一行中显示团队中的每个用户,并在一周中的每一天显示一个文本框 <?php foreach ($aTeam AS $iUserId => $aAgent){ ?> <tbody> <tr class="<?php ech

我对PHP非常陌生,对数组和Foreach有点糊涂

我目前正在从事一个项目,我们有许多团队,每个团队都有一定数量的人员,我们在数据库中得到了这些人员

我有一个foreach设置,用户可以在其中选择一个团队,它将在一行中显示团队中的每个用户,并在一周中的每一天显示一个文本框

<?php  foreach ($aTeam AS $iUserId => $aAgent){ ?>
<tbody>
    <tr class="<?php 
        echo $aAgent['iStatusId']==0?'low_light':
        'high_light';
        ?>">
        <td><?php  echo FilterOut::HTML($aAgent['sName']); ?></td>
<td style="display: none;"><input width="0px" type="hidden" name="iUserId[]" value="<?php  echo $aAgent['iUserId']; ?>" /></td>
<td><input id="iMonMins" name="iMonMins[]" type="text" value="<?php  echo $aAgent['iMon']   ?>" /></td>
<td><input id="iTuesMins" name="iTueMins[]" type="text" value="<?php  echo $aAgent['iTues']    ?>" /></td>
<td><input id="iWedMins" name="iWedMins[]" type="text" value="<?php  echo $aAgent['iWed']    ?>" /></td>
<td><input id="iThursMins" name="iThurMins[]" type="text" value="<?php  echo $aAgent['iThurs']    ?>" /></td>
<td><input id="iFriMins" name="iFriMins[]" type="text" value="<?php  echo $aAgent['iFri']    ?>" /></td>
<td><input id="iSatMins" name="iSatMins[]" type="text" value="<?php  echo $aAgent['iSat']    ?>" /></td>
<td><input id="iSunMins" name="iSunMins[]" type="text" value="<?php  echo $aAgent['iSun']    ?>" /></td>
<?php  var_dump($aForm) ?>
</tr>
</tbody>
iMonMins的数组如下所示

  'iMonMins' => 
    array (size=2)
      0 => string '99' (length=2)
      1 => string '18' (length=2)
  'iTueMins' => 
    array (size=2)
      0 => string '300' (length=1)
      1 => string '324' (length=1)
iTunesMins的数组如下所示

  'iMonMins' => 
    array (size=2)
      0 => string '99' (length=2)
      1 => string '18' (length=2)
  'iTueMins' => 
    array (size=2)
      0 => string '300' (length=1)
      1 => string '324' (length=1)
我不会把它们全部打印出来,因为你可能已经知道了

然后,我把每一个都放到一个数组中

$oUser->Update_AgentHours($aForm['iUserId'], $aForm['iMonMins'], $aForm['iTueMins'], $aForm['iWedMins'], $aForm['iThurMins'], $aForm['iFriMins'], $aForm['iSatMins'], $aForm['iSunMins']);
然后在函数中调用该函数以上载到数据库

function Update_AgentHours($iUserId, $iMonMins, $iTueMins, $iWedMins, $iThurMins, $iFriMins, $iSatMins, $iSunMins) {
    {
        $sSql = 'UPDATE cfg_users SET `iMon` = \''.$iMonMins.'\', `iTues` = \''.$iTueMins.'\', `iWed` = \''.$iWedMins.'\', `iThurs` = \''.$iThurMins.'\', `iFri` = \''.$iFriMins.'\', `iSat` = \''.$iSatMins.'\', `iSun` = \''.$iSunMins.'\'  WHERE `iUserId` = \''.$iUserId.'\';';
        $this->oDb->query($sSql);   
        }
    }
起初,我没有将每个文本框作为一个数组,所以它只是上传最后一行文本框,我读到我需要将每个文本框放入一个数组中,这样我就可以循环并上传它们

我只是不明白每个数组是如何相互链接的

我真的想说:

UPDATE "mydatabase" SET iMon = $aForm[iMonMins[0]], iTue = $aForm[iTueMins[0]] WHERE iUserId = $aForm[iUserId[0]]
UPDATE "mydatabase" SET iMon = $aForm[iMonMins[1]], iTue = $aForm[iTueMins[1]]  WHERE iUserId = $aForm[iUserId[1]]
但是我不明白我怎么能说第一个用户ID[0]应该有每分钟的第一个[0],然后第二个[1]应该有每分钟的第二个[1]

我希望我已经解释得足够清楚了

谢谢

更新:(我无法将[代码]添加到注释部分,所以我想我只需更新此部分.)

我在理解“$idx=>$iUserId”部分时有点困难

我按照你的建议添加了这篇文章,这是最上面的部分(因为我不能全部添加,它太大了)


所以$idx是[0],所以在[iMonMins][$idx]=0的帖子中,这将处理附加到该用户ID上的值?

我想我有一个解决方案,您可以尝试一下,让我知道它是否适合您

在你的php中,你用一个for-each循环你的用户,我想你知道怎么做,然后你在for循环外面有一个变量,它在for循环中每次递增,你可以让你的用户拥有与他们相关的每一行。就像user1有每天的第一行,user2第二行…usern第n行。类似于这个

$i = 0;
foreach($aForm[iUserId] as $user)
{
    UPDATE "mydatabase" SET iMon = $aForm[iMonMins][$i], iTue = $aForm[iTueMins][$i] WHERE iUserId = $user;
$i++;
}

试用希望它能工作,在发布之前会试用,但是这里有一个项目很忙。

好的,首先将此代码放在脚本的顶部,这样您就可以可视化$\u POST数组,然后运行页面并点击提交按钮

echo '<pre>POST ARRAY' . print_r($_POST,true) . '</pre>';
大音符
我没有对$\u POST数组进行任何清理。您必须确保在尝试将此数据放入数据库之前完成清理。

Riggsfolly,但我发布的答案是否错误…这与您发布的内容大致相同,为什么您必须投票否决我的答案…很简单,您创建了一个索引
$I
,您就知道了在你的循环中增加了索引
$i++
。但是你实际上没有用它来寻址数组。所以代码不起作用。谢谢你,但是你应该知道那是个错误,不知道我没有用,现在想你可以投票支持我了。已经说过我正忙着做一个项目,只是在百忙之中挤出时间。谢谢gsFolly,我已经更新了我的原始帖子,因为我认为这会更容易。它的概念与您编写的foreach循环相同,用于生成html以显示给用户。如果您对代码不确定,请更改您的
Update\u AgentHours
函数,以仅回显sql,而不实际提交查询hh,好的。谢谢RigssFolly.Im在那里,日复一日:)。谢谢你的帮助,我会投赞成票的,但我没有足够的代表权。不必担心,一滴血就够了。
foreach( $_POST['iUserid'] as $idx => $iUserid ) {

    //  now we will get one iUserid each time round the loop 
    //  and a idx identifying which occurance of the array we are on
    //  so now collect the day information for that user

    // First you must ensure you sanitize the data in the $_POST array
    // if its not already being done

    $oUser->Update_AgentHours(
                      $iUserId, 
                      $_POST['iMonMins'][$idx], 
                      $_POST['iTuesMins'][$idx], 
                      $_POST['iWedMins'][$idx], 
                      $_POST['iThurMins'][$idx], 
                      $_POST['iFriMins'][$idx], 
                      $_POST['iSatMins'][$idx], 
                      $_POST['iSunMins'][$idx]);

}