【问题标题】:Checkbox does not for each row [duplicate]复选框不适用于每一行[重复]
【发布时间】:2019-06-27 18:06:52
【问题描述】:

我有一个 1624 个项目的列表,您可以使用复选框选择,但在表单中,它只能检测 622 个第一个项目的“打开”。如果在下面选中行,则不会返回“on”。

我显示来自数据库的片段列表,您可以通过复选框选择片段,然后更新数据库。它适用于列表顶部的所有项目,但从一行开始,如果选中该框,则不会在 php 表单中检测到。无论这件作品的顺序是什么,它仅适用于 622 首项目。我不明白问题出在哪里,因为我认为它不是来自变量。我想知道这是否是时间执行的问题,或者,如果默认情况下,它会停止从某一行查看。

我已经准备好验证算法是否检查每一行并且它确实以及所有变量是否都很好。

  $cpt = 1;
  $id_asm = (isset($_GET['id'])) ? $_GET['id'] : "";
  $SQLQuery2="(select * FROM pieces";
  $SQLResult2 = mysqli_query($MySqliConn, $SQLQuery2);
  $_html_tbStock .= '<tr>';
  // [...other information for the list...]

  while ($row2 = mysqli_fetch_array($SQLResult2, MYSQLI_ASSOC)) {            
      $idpiece = $row2['ID_PIECE'];
      $SQLQuery4 = "SELECT * from parametrage_envoi_stock where ID_ASM = '". $id_asm . "' AND ID_PIECE ='". $idpiece ."'";
      $SQLResult4 = mysqli_query($MySqliConn, $SQLQuery4);
      $row4 = mysqli_fetch_array($SQLResult4, MYSQLI_ASSOC);
      $pointee = ($row4['COCHE'] != 0) ? 'checked="checked"' : ''
      //if the piece was checked before, it is checked by default in the display, else it is not

      $_html_tbStock .= '<td><input id="parametrage_' . $cpt . '" name="parametrage_' . $cpt . '" type="checkbox" ' . $pointee . '/></td>';
      $_html_tbStock .= '</tr>';
    $cpt++;

    }

以我们得到的形式:

 $totalpiece = 1624
 $cpt = 1;
 while ($cpt <= $totalpiece) {
   if (isset($_POST['parametrage_' . $cpt])) {
        $ref = $_POST['ref_' . $cpt];
        $rev = $_POST['rev_' . $cpt];
        $nom = $_POST['nom_' . $cpt];
        var_dump($ref);
        var_dump($rev);
        var_dump($nom);

        $SQLQuery2 = "SELECT * FROM pieces WHERE REF_PIECE LIKE '%". $ref ."%' AND REV_PIECE LIKE '%". $rev ."%' AND NOM_PIECE LIKE '%". $nom ."%'";
        $SQLResult2 = mysqli_query($MySqliConn, $SQLQuery2) or die('Erreur2<br />' . mysqli_error($MySqliConn));
        $cnt = 1;
        while ($row2 = mysqli_fetch_array($SQLResult2, MYSQLI_ASSOC)) {
            $id_piece = $row2['ID_PIECE'];
            $SQLQuery2 = "INSERT INTO parametrage_envoi_stock (ID_ASM, ID_PIECE,COCHE) VALUES ('$idasm','$id_piece','1')";
            mysqli_query($MySqliConn, $SQLQuery2) or die('Erreur 1<br />' . mysqli_error($MySqliConn));
            var_dump($SQLQuery2);
            $cnt++;
        }
     }

    }

显示所有项目和复选框的列表。我们可以点击所有我们想要的复选框。

【问题讨论】:

  • 你看错误日志了吗??
  • 查看您的php.ini 文件中的一个名为max_input_vars 的参数,并告诉我们它的设置。它可能需要增加,因为按照正常标准,这似乎是一个相当大的形式
  • 这么多输入对于任何人来说似乎都有点过度,也许“解决方案”是找到更好的方法,例如分页作为一种可能性。
  • 最后我们没有对错误进行微调,max_input_vars 为 2500,但我们通过改变表格找到了另一种解决方案,以减少数据量。感谢您的帮助!

标签: php database checkbox


【解决方案1】:

尝试检查并更改 php ini 设置:ma​​x_input_vars

您可以在此处查看更多信息:

https://www.php.net/manual/en/info.configuration.php#ini.max-input-vars

您也可以在 php.ini 和 .htaccess 文件中进行更改

【讨论】:

  • 感谢您的信息!我们检查并更改了 php.ini 设置,但我们遇到了其他问题,但我们还是找到了解决方案。
猜你喜欢
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 2013-06-18
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 1970-01-01
相关资源
最近更新 更多