Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 从多个复选框和文本字段插入值_Php_Mysql_Checkbox_Insert_Textfield - Fatal编程技术网

Php 从多个复选框和文本字段插入值

Php 从多个复选框和文本字段插入值,php,mysql,checkbox,insert,textfield,Php,Mysql,Checkbox,Insert,Textfield,我是PHP的初学者。我遇到了一个问题。我的想法是,我必须为选定的电影指定演员,并为每部电影添加一个角色。我需要从列表中选择几个值,并为每个字段添加描述。我的代码将所有选中的值添加到数据库中,但它会将文本字段中的值弄乱,选中的值与描述不匹配。我将非常感谢你的帮助! 我的代码: 表格: 使用mysql\u escape\u字符串($\u POST[''])而不是mysqlquery中的每个字段$\u POST[''']。未选中的值不会提交,复选框数量与文本框不相同。 您应该为输入名称数组指定相同的键

我是PHP的初学者。我遇到了一个问题。我的想法是,我必须为选定的电影指定演员,并为每部电影添加一个角色。我需要从列表中选择几个值,并为每个字段添加描述。我的代码将所有选中的值添加到数据库中,但它会将文本字段中的值弄乱,选中的值与描述不匹配。我将非常感谢你的帮助! 我的代码: 表格:


使用
mysql\u escape\u字符串($\u POST[''])
而不是mysqlquery中的每个字段
$\u POST[''']

未选中的值不会提交,
复选框
数量与
文本框
不相同。 您应该为输入名称数组指定相同的键:

$i = 0;
while($sqlRow = mysqli_fetch_array($result, MYSQL_ASSOC)) {
    echo "<tr>";
    echo "<td>";
    echo "<input type=\"checkbox\" name=\"checkbox[".$i."]\" value=\"" . $sqlRow['artistId'] . "\"/> " . $sqlRow['firstname'] . " " . $sqlRow['lastname'] . "</td><td><input type=\"text\" name=\"textbox[".$i."]\"/></td>";
    echo "</tr>";
    $i++;
}
如以下文件所述:

提交表单时,只有“开”复选框控件可以成为

换言之,浏览器将只提交那些已“选中”的复选框控件,但将提交每个文本框控件,而不管您希望它与之关联的复选框控件的状态如何

因此,除非选中所有复选框控件,否则PHP从表单提交中创建的数组
$\u POST['checkbox']
$\u POST['textbox']
将包含不同数量的元素,因此,具有任何给定索引的元素可能不匹配

有两种方法可以解决此问题:

  • 如果未选中相应的复选框,则可以使用:这将阻止浏览器提交文本框,相应地,PHP中的数组将再次对齐(但是请注意,此解决方案取决于客户端脚本的可用性,您必须测试并处理此类脚本不可用的情况); 或

  • 可以为控件提供显式索引,以确保它们始终对齐

  • 您还应该仔细阅读正确的字符串转义(以及如果不这样做,您的应用程序将如何暴露于bug和常见的攻击向量):我完全推荐@的博客文章


    特别是,正如他在文章中所描述的,您应该确保在传输到浏览器之前转义变量中的任何HTML(为了防止输出的文本包含在HTML中具有特殊含义的字符时出现错误,例如
    ,不要建议使用弃用的。使用mysqli\u*try
    if($\u POST){var_dump($_POST);/…
    并在问题中添加结果没有意义结束
    打印“”;
    内部
    if($_POST)
    @Paul“dghhd”[“checkbox”]=>array(3){[0]=>string(2)“15”[1]=>string(1)“8”[2]=>string(2)“11”}[“textbox”=>array(15){[0]=>string(7)“sfgsdfg”[1]=>string(7)”asd”=>string(8)“asd”=>dfas”as8[3] =>字符串(0)”“[4]=>字符串(0)”“[5]=>字符串(0)”“[6]=>字符串(0)”“[7]=>字符串(0)”“[8]=>字符串(0)”“[9]=>字符串(0)”“[10]=>字符串(0)”“[11]=>字符串(0)”“[12]=>字符串(0)”[13]=>字符串(0)”“[14]=>字符串(0)”}[“提交”=>字符串(3)“添加”}错误:键“PRIMARY”的重复条目“11-14”这给了我一个错误:未定义的偏移量:0;未定义的偏移量:0;未定义的偏移量:1行上未定义的偏移量:3:$query=“插入$movies(movieCode,title,dateofisue,category,description,image)值(“.”“$\u POST['movieCode']”,“,“$\u POST['title']”,“,“$\u POST.”['dateofissue']。”、“$”邮政['category']。”、“$”邮政['desc']。”、“$”邮政['image1']。”)”;
    if($_POST) {
            $checkbox = $_POST['checkbox'];
            $txt = $_POST['textbox'];
            $len = sizeof($checkbox);
            for($i = 0; $i < $len; $i++) {
                $sqlqr = "INSERT INTO $role (artistId, movieCode, Description) VALUES ('" . $checkbox[$i] . "', '" . $_POST['moviecode'] . "', '" . $txt[$i] . "')";
                mysqli_query($connect, $sqlqr);
            }
            $query = "INSERT INTO $movies(movieCode, title, dateOfIssue,category, description, image) VALUES ('" . $_POST['moviecode'] . "', '" . $_POST['title'] . "', '" . $_POST['dateofissue'] . "','" . $_POST['category'] . "', '" . $_POST['desc'] . "', '" . $_POST['image1'] . "')";
            mysqli_query($connect, $query);
            if(mysqli_query($connect, $query) || mysqli_query($connect, $sqlqr)) {
                echo "<h4>1 record added</h4>";
    
            }
            else {
                die('Error: ' . mysqli_error($connect));
            }
            print '</form>';
        }
    
    $i = 0;
    while($sqlRow = mysqli_fetch_array($result, MYSQL_ASSOC)) {
        echo "<tr>";
        echo "<td>";
        echo "<input type=\"checkbox\" name=\"checkbox[".$i."]\" value=\"" . $sqlRow['artistId'] . "\"/> " . $sqlRow['firstname'] . " " . $sqlRow['lastname'] . "</td><td><input type=\"text\" name=\"textbox[".$i."]\"/></td>";
        echo "</tr>";
        $i++;
    }
    
    $checkbox = $_POST['checkbox'];
    $txt = $_POST['textbox'];
    foreach ($checkbox as $key => $value)
        $sqlqr = "INSERT INTO $role (artistId, movieCode, Description) VALUES ('" . $value . "', '" . $_POST['moviecode'] . "', '" . $txt[$key] . "')";
        mysqli_query($connect, $sqlqr);
    }