【问题标题】:inserting checkbox data into mysql database via POST method通过POST方法将复选框数据插入mysql数据库
【发布时间】:2012-02-12 12:53:59
【问题描述】:

我在将 html 文档中复选框的值作为逗号分隔的字符串插入数据库时​​遇到问题(我知道这通常被认为是不好的样式,但在这种情况下,这是必需的)。

我这里有一个html文件的代码sn-p

<div id="page16" class="page">
            <p style="font-weight: bold; width: 55%;"><a id="q16_qtext">*</a></p>
            <p style="font-style: italic;">Vælg venligst de (højst) 3 primære årsager (i alt).</p>
            <p style="font-style: italic;">Af økonomiske årsager:</p>
            <input type="checkbox" name="q16[]" value="1" id="num161">For dyrt i forhold til udbyttet for eleverne<br>
            <input type="checkbox" name="q16[]" value="2" id="num162">For dyrt i forhold til andre omkostninger (bøger, efteruddannelse af lærere osv.)<br>
            <input type="checkbox" name="q16[]" value="4" id="num164">Andre økonomiske årsager<br>
            <p style="font-style: italic;">Andre årsager:</p>
            <input type="checkbox" name="q16[]" value="5" id="num165">Pga. skolesammenlægning eller en anden større ændring<br>
            <input type="checkbox" name="q16[]" value="6" id="num166">Skolen havde/har ikke bemanding til det<br>
            <input type="checkbox" name="q16[]" value="7" id="num167">Der var for tidskrævende i forhold til udbyttet (for eleverne i forhold til pensum)<br>
            <input type="checkbox" name="q16[]" value="8" id="num168">Der var ikke længere opbakning til det i skoleledelsen (ikke økonomisk)<br>
            <input type="checkbox" name="q16[]" value="9" id="num169">Der var ikke længere opbakning til det blandt lærerne<br>
            <input type="checkbox" name="q16[]" value="10" id="num1610">Der var ikke længere opbakning til det blandt elever/forældre<br>
            <input type="checkbox" name="q16[]" value="11" id="num1611">Andet.&nbsp;&nbsp;&nbsp;&nbsp; Angiv i så fald primært hvad: &nbsp;&nbsp;<a style="text-align: center;"></a><input type="text" name="q16extra" value="" id="num89"><br>
            <input type="checkbox" name="q16[]" value="12" id="num1612">Ved ikke<br>
            <p style="bottom:5px;"><input style="width: 150px; height: 30px;" type="button" class="all" id="B19" value="tilbage" onClick="showPreviousLayer()"><input style="width: 150px; height: 30px;" type="button" class="all" id="C20" value="fortsæt" onClick="checkAnswersSixteen()"></p>    
        </div>

然后我连接到数据库并使用这段 php 代码创建一个值数组

$q16 = implode(",",$_POST['q16[]']);

然后将列和值插入“表”。当然还有许多其他列和值要插入,这些都可以工作!所以问题似乎不在于插入语句,而在于 implode 方法。

我试着做一个回声($q16); 但这似乎只是空的。

谁知道问题可能是什么?如果您需要任何其他信息,请告诉我:)

【问题讨论】:

    标签: php mysql html http-post


    【解决方案1】:

    我建议您尝试只使用$_POST['q16'],因为它正在转换为数组

    $q16 = implode(",",$_POST['q16']);
    

    【讨论】:

    • 非常感谢!这确实解决了这个问题。所以 html 名称中的额外 [] 根本不是名称的一部分,它只是数组的指示符?
    • @PNS 你是对的。 [] 不是名称的一部分。但它表明q16变量在PHP中应该被视为一个数组。
    【解决方案2】:

    请记住,只有经过检查的输入才会被传递。因此,如果我检查前 3 个框和最后一个框,我的示例文件的输出将是:

    Array
    (
        [q16] => Array
            (
                [0] => 1
                [1] => 2
                [2] => 4
                [3] => 12
            )
    
        [q16extra] => e
    )
    ----1,2,4,12
    

    这里是示例文件:

       <div id="page16" class="page">
       <p style="font-weight: bold; width: 55%;"><a id="q16_qtext">*</a></p>
       <p style="font-style: italic;">Vælg venligst de (højst) 3 primære årsager (i alt).</p>
       <p style="font-style: italic;">Af økonomiske årsager:</p>
       <form action="form.php" method="post">
       <input type="checkbox" name="q16[]" value="1" id="num161">For dyrt i forhold til udbyttet for eleverne<br>
       <input type="checkbox" name="q16[]" value="2" id="num162">For dyrt i forhold til andre omkostninger (bøger, efteruddannelse af læ   rere osv.)<br>
       <input type="checkbox" name="q16[]" value="4" id="num164">Andre økonomiske årsager<br>
       <p style="font-style: italic;">Andre årsager:</p>
       <input type="checkbox" name="q16[]" value="5" id="num165">Pga. skolesammenlægning eller en anden større ændring<br>
       <input type="checkbox" name="q16[]" value="6" id="num166">Skolen havde/har ikke bemanding til det<br>
       <input type="checkbox" name="q16[]" value="7" id="num167">Der var for tidskrævende i forhold til udbyttet (for eleverne i forhold    til pensum)<br>
       <input type="checkbox" name="q16[]" value="8" id="num168">Der var ikke længere opbakning til det i skoleledelsen (ikke økonomisk)   <br>
       <input type="checkbox" name="q16[]" value="9" id="num169">Der var ikke længere opbakning til det blandt lærerne<br>
       <input type="checkbox" name="q16[]" value="10" id="num1610">Der var ikke længere opbakning til det blandt elever/forældre<br>
       <input type="checkbox" name="q16[]" value="11" id="num1611">Andet.&nbsp;&nbsp;&nbsp;&nbsp; Angiv i så fald primært hvad: &nbsp;&n   bsp;<a style="text-align: center;"></a>
       <input type="text" name="q16extra" value="e" id="num89"><br>
       <input type="checkbox" name="q16[]" value="12" id="num1612">Ved ikke<br>
       <p style="bottom:5px;">
           <input style="width: 150px; height: 30px;" type="button" class="all" id="B19" value="tilbage" onClick="showPreviousLayer()">
    
       <input style="width: 150px; height: 30px;" type="submit" class="all" id="C20" value="fortsæt" onClick="checkAnswersSixteen()"></p   >
       </form>
       </div>
    
    
       <?php
       print '<pre>';
       print_r($_POST);
       print '----';
       print_r( implode(",", $_POST['q16']) );
       print '</pre>';
       ?>
    

    区别在于元素和末尾的php-print语句。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-15
      • 2017-11-04
      相关资源
      最近更新 更多