繁体   English   中英

PHP / MySQL-复选框进入数据库

[英]PHP/MySQL - Checkboxes into Database

我在StackOverflow上找到了一些主题,并且阅读了一些有关如何将复选框中的数据插入MySQL数据库的内容。 我读到有关使用数组将值插入数据库的信息。 现在的问题是,当我按下提交按钮时,表单中的所有数据都将被包括在内,但复选框值除外。 因此,该表单可以正常工作,仅复选框值未插入我的数据库中。 这是我所做的:

我表格的一部分:

<form method="post" action="add_schulen.php" class="form-horizontal form-label-left">

<div class="form-group">
    <label class="control-label col-md-3 col-sm-3 col-xs-12">Name Schule:  </label>
<div class="col-md-9 col-sm-9 col-xs-12">
    <input type="text" name="schulname" class="form-control" placeholder="Namen der Schule">
</div>
</div>

    <div class="col-md-3 col-sm-3 col-xs-12 profile_left">
         <input type="checkbox" name="schulen[]" value="1A"> 1A <br />
         <input type="checkbox" name="schulen[]" value="1B"> 1B <br />
         <input type="checkbox" name="schulen[]" value="1C"> 1C <br /> 
         <input type="checkbox" name="schulen[]" value="1D"> 1D <br />
         <input type="checkbox" name="schulen[]" value="1E"> 1E <br />
         <input type="checkbox" name="schulen[]" value="1F"> 1F <br />
         <input type="checkbox" name="schulen[]" value="1G"> 1G <br />
         <input type="checkbox" name="schulen[]" value="1H"> 1H <br />
    </div>
<div class="col-md-3 col-sm-3 col-xs-12 profile_left">

         <input type="checkbox" name="schulen[]" value="2A"> 2A <br />
         <input type="checkbox" name="schulen[]" value="2B"> 2B <br />
         <input type="checkbox" name="schulen[]" value="2C"> 2C <br /> 
         <input type="checkbox" name="schulen[]" value="2D"> 2D <br />
         <input type="checkbox" name="schulen[]" value="2E"> 2E <br />
         <input type="checkbox" name="schulen[]" value="2F"> 2F <br />
         <input type="checkbox" name="schulen[]" value="2G"> 2G <br />
         <input type="checkbox" name="schulen[]" value="2H"> 2H <br />
</div>
    <button type="submit" name="addschulen" value="addschulen" class="btn btn-warning btn-lg pull-right">Schule anlegen</button>
</form>

我完整的PHP代码位于add_schulen.php的顶部:

<?php 
include 'inc/database.php';    

// Check if form is submitted
if (isset ($_POST['addschulen'])) {
    $schulname = mysqli_real_escape_string ($connect, $_POST['schulname']);
    $ansprechperson = mysqli_real_escape_string ($connect, $_POST['ansprechperson']);
    $schulstrasse = mysqli_real_escape_string ($connect, $_POST['schulstrasse']);
    $schulplz = mysqli_real_escape_string ($connect, $_POST['schulplz']);
    $schulort = mysqli_real_escape_string ($connect, $_POST['schulort']);
    $schultelefon = mysqli_real_escape_string ($connect, $_POST['schultelefon']);
    $klassen = mysqli_real_escape_string ($connect, $_POST['schulen']);

        // Setting up a blank variable to be used in the coming loop.
      $alleKlassen = "";

      // For every checkbox value sent to the form.
      foreach ($klassen as $klasse) {
        // Append the string with the current array element, and then add a comma and a space at the end.
        $alleKlassen .= $klasse . ", ";
      }

      $query_insert_schule = mysqli_query($connect,"INSERT INTO `schule` (`schulname`, `ansprechperson`, `schulstrasse`, `schulplz`, `schulort`, `schultelefon`, `klasse`)
            VALUES ('$schulname', '$ansprechperson', '$schulstrasse', '$schulplz', '$schulort', '$schultelefon', '$alleKlassen')"); 

if (mysqli_affected_rows($connect) == 0) //<--
{
    die('Could not update data: ' . mysql_error());
} else {
    $msg_success= '<strong>Gratulation!</strong> Die Schule wurde erfolgreich hinzugefügt. Zur <a href="schulverwaltung.php"><span style="color:#fff;">Übersicht aller Schulen >></span></a>';
}       

}        
?>

正如我所说,单击复选框按钮后,所有数据都将立即包括在内。 有谁知道为什么? 我做错了什么? 这是我第一次尝试将复选框值插入数据库。

谢谢克里斯

好吧,我试过了,它的工作原理只是没有插入数据库,但我只是打印出来。 请尝试从$_POST['schulen']字符串转义$_POST['schulen']因为该字符串已被清除/预定义了数据。 并使用substr()删除数组末尾的最后一个逗号。

尝试这个:

<?php
// Check if form is submitted
if (isset ($_POST['addschulen'])) {
    $schulname =  $_POST['schulname'];
    $ansprechperson =$_POST['ansprechperson'];
    $schulstrasse = $_POST['schulstrasse'];
    $schulplz =$_POST['schulplz'];
    $schulort = $_POST['schulort'];
    $schultelefon =$_POST['schultelefon'];
    $klassen = $_POST['schulen'];

        // Setting up a blank variable to be used in the coming loop.
      $alleKlassen = "";

      // For every checkbox value sent to the form.
      foreach ($klassen as $klasse) {
        // Append the string with the current array element, and then add a comma and a space at the end.
        $alleKlassen .= $klasse . ", ";
      }
    $alleKlassen  = substr($alleKlassen , 0, -2);
    print_r($alleKlassen);

}else{
    echo '<form method="post" action="" class="form-horizontal form-label-left">

<div class="form-group">
    <label class="control-label col-md-3 col-sm-3 col-xs-12">Name Schule:  </label>
<div class="col-md-9 col-sm-9 col-xs-12">
    <input type="text" name="schulname" class="form-control" placeholder="Namen der Schule">
</div>
</div>

    <div class="col-md-3 col-sm-3 col-xs-12 profile_left">
         <input type="checkbox" name="schulen[]" value="1A"> 1A <br />
         <input type="checkbox" name="schulen[]" value="1B"> 1B <br />
         <input type="checkbox" name="schulen[]" value="1C"> 1C <br /> 
         <input type="checkbox" name="schulen[]" value="1D"> 1D <br />
         <input type="checkbox" name="schulen[]" value="1E"> 1E <br />
         <input type="checkbox" name="schulen[]" value="1F"> 1F <br />
         <input type="checkbox" name="schulen[]" value="1G"> 1G <br />
         <input type="checkbox" name="schulen[]" value="1H"> 1H <br />
    </div>
<div class="col-md-3 col-sm-3 col-xs-12 profile_left">

         <input type="checkbox" name="schulen[]" value="2A"> 2A <br />
         <input type="checkbox" name="schulen[]" value="2B"> 2B <br />
         <input type="checkbox" name="schulen[]" value="2C"> 2C <br /> 
         <input type="checkbox" name="schulen[]" value="2D"> 2D <br />
         <input type="checkbox" name="schulen[]" value="2E"> 2E <br />
         <input type="checkbox" name="schulen[]" value="2F"> 2F <br />
         <input type="checkbox" name="schulen[]" value="2G"> 2G <br />
         <input type="checkbox" name="schulen[]" value="2H"> 2H <br />
</div>
    <button type="submit" name="addschulen" value="addschulen" class="btn btn-warning btn-lg pull-right">Schule anlegen</button>
</form>';
}
?>

由于您使用的是html数组,因此必须像数组一样对它们进行eacheach:

$schulen= $_POST['schulen'];
foreach( $schulen as $s ){
    //code
}

现在,如果您写:echo $ s; (在// code下),它将打印用户已选中的复选框的值...因此,现在,您应该可以轻松地解决;)示例,如果要转义:

$schulen= $_POST['schulen'];
for( $i=0; $i< count($schulen); $i++ ){
    $schulen[ $i ]= mysqli_real_escape_string( $schulen[ $i ] );
}

如果要放入数据库,则需要一个适当的字段(例如:文本字段会很好),则必须使用implode&explode ...来放置数组:$ todatabase = implode($ schulen,'|'); 获取数组:$ schulen = explode('|',$ fromdatabase);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM