for循环在php中无法正常工作

时间:2015-03-24 11:41:32

标签: php mysql

这是我的for循环。我想更新那些隐藏的designMasterId记录,但它会自动更新所有记录..

通过这个隐藏的文本框,我尝试传递designmasterId:

<input type="hidden" name="designMasterId[]" value="{$designArray[sec].designMasterId}">

Php代码:

   if(isset($_POST['Submit']))
      {
        $recDate       = $_POST['rDtYear']."-".$_POST['rDtMonth']."-".$_POST['rDtDay'];
        $lastProcess   = isset($_POST['processId']) ? $_POST['processId'] : 0;
        $nextProcessId = isset($_POST['nextProcessId']) ? $_POST['nextProcessId'] : 0;

        for($i=0; $i< count($_POST['designMasterId']); $i++)
        {
          $processId       = isset($_POST['processId'][$i]) ? $_POST['processId'][$i] : 0;
          $reciveWet       = isset($_POST['reciveWet'][$i]) ? $_POST['reciveWet'][$i] : 0;
          $designMasterId  = isset($_POST['designMasterId'][$i]) ? $_POST['designMasterId'][$i] : 0;

          $updatePro = "UPDATE process 
                          SET rDate = '".$recDate."',
                              reciveWet = '".$reciveWet."',
                              nextProcessId   = ".$nextProcessId.",
                              processMasterId = ".$nextProcessId.",
                              status = 'I'
                         WHERE designMasterId = ".$designMasterId;
         $updateProRes = mysql_query($updatePro);
         if(!$updateProRes)
          {
            echo "Recive Fail";
          }
          else
          {
            header("Location:processRecive.php");
          }
        }
      }

3 个答案:

答案 0 :(得分:0)

我已更新您的代码检查是否适用于您..

if(isset($_POST['Submit']))
    {
        $recDate       = $_POST['rDtYear']."-".$_POST['rDtMonth']."-".$_POST['rDtDay'];
        $lastProcess   = isset($_POST['processId']) ? $_POST['processId'] : 0;
        $nextProcessId = isset($_POST['nextProcessId']) ? $_POST['nextProcessId'] : 0;
    for($i=0; $i< count($_POST['designMasterId']); $i++)
    {
      $processId       = (isset($_POST['processId'][$i]) && !empty($_POST['processId'][$i])) ? $_POST['processId'][$i] : 0;
      $reciveWet       = (isset($_POST['reciveWet'][$i]) && !empty($_POST['reciveWet'][$i])) ? $_POST['reciveWet'][$i] : 0;
      $designMasterId  = (isset($_POST['designMasterId'][$i]) && !empty($_POST['designMasterId'][$i])) ? $_POST['designMasterId'][$i] : 0;

      if(isset($designMasterId) && !empty($designMasterId)){
      $updatePro = "UPDATE process 
                      SET rDate = '".$recDate."',
                          reciveWet = '".$reciveWet."',
                          nextProcessId   = ".$nextProcessId.",
                          processMasterId = ".$nextProcessId.",
                          status = 'I'
                     WHERE designMasterId = ".$designMasterId;
     $updateProRes = mysqli_query($updatePro);
     if(!$updateProRes)
      {
        echo "Recive Fail";
      }
      else
      {
        header("Location:processRecive.php");
      }
      }else{
        continue;
      }
        }
      }

答案 1 :(得分:0)

试试这个会对你有用

if(isset($_POST['Submit'])) {

$recDate = $_POST['rDtYear']."-".$_POST['rDtMonth']."-".$_POST['rDtDay']; $lastProcess = isset($_POST['processId']) ? $_POST['processId'] : 0; $nextProcessId = isset($_POST['nextProcessId']) ? $_POST['nextProcessId'] : 0;
for($i=0; $i< count($_POST['designMasterId']); $i++)
{
  $processId       = (isset($_POST['processId'][$i]) && !empty($_POST['processId'][$i])) ? $_POST['processId'][$i] : 0;
  $reciveWet       = (isset($_POST['reciveWet'][$i]) && !empty($_POST['reciveWet'][$i])) ? $_POST['reciveWet'][$i] : 0;
  $designMasterId  = (isset($_POST['designMasterId'][$i]) && !empty($_POST['designMasterId'][$i])) ? $_POST['designMasterId'][$i] : 0;

  if(isset($designMasterId) && !empty($designMasterId)){
  $updatePro = "UPDATE process 
                  SET rDate = '".$recDate."',
                      reciveWet = '".$reciveWet."',
                      nextProcessId   = ".$nextProcessId.",
                      processMasterId = ".$nextProcessId.",
                      status = 'I'
                 WHERE designMasterId = ".$designMasterId;
 $updateProRes = mysqli_query($updatePro);
 if(!$updateProRes)
  {
    echo "Recive Fail";
  }
  else
  {
    header("Location:processRecive.php");
  }
  }else{
    continue;
  }
    }
  }

答案 2 :(得分:0)

  

在计数记录中使用array_filter进行循环

<?PHP
if(isset($_POST['Submit']))
      {
        $recDate       = $_POST['rDtYear']."-".$_POST['rDtMonth']."-".$_POST['rDtDay'];
        $lastProcess   = isset($_POST['processId']) ? $_POST['processId'] : 0;
        $nextProcessId = isset($_POST['nextProcessId']) ? $_POST['nextProcessId'] : 0;

        for($i=0; $i< count(array_filter($_POST['designMasterId'])); $i++)
        {
          $processId       = isset($_POST['processId'][$i]) ? $_POST['processId'][$i] : 0;
          $reciveWet       = isset($_POST['reciveWet'][$i]) ? $_POST['reciveWet'][$i] : 0;
          $designMasterId  = isset($_POST['designMasterId'][$i]) ? $_POST['designMasterId'][$i] : 0;

          $updatePro = "UPDATE process 
                          SET rDate = '".$recDate."',
                              reciveWet = '".$reciveWet."',
                              nextProcessId   = ".$nextProcessId.",
                              processMasterId = ".$nextProcessId.",
                              status = 'I'
                         WHERE designMasterId = ".$designMasterId;
         $updateProRes = mysql_query($updatePro);
         if(!$updateProRes)
          {
            echo "Recive Fail";
          }
          else
          {
            header("Location:processRecive.php");
          }
        }
      }
?>