【问题标题】:Cannot insert data in the database using option(textarea)无法使用选项(textarea)在数据库中插入数据
【发布时间】:2014-01-22 23:52:00
【问题描述】:

我得到了这段代码,但它没有将选项 (textarea) 的内容插入到数据库中。

connection.php

<?php
$dbhost = "localhost";
$dbuser = "root";
$dbpass = "";
$db = "copy";
$conn = mysqli_connect($dbhost,$dbuser,$dbpass,$db);
?>

提交.php

<?php
include 'connection.php';

$foodA = $_POST['foodA'];
$foodB = $_POST['foodB'];
$foodC = $_POST['foodC'];
$foodD = $_POST['foodD'];
$foodE = $_POST['foodE'];


if(!$_POST['submit']) {
    echo "please fill out the form";
    header('Location: select.html');
}
else {
    $sql = "INSERT INTO remove(foodA, foodB, foodC, foodD, foodE) VALUES (?,?,?,?,?);";
    $stmt = mysqli_prepare($conn, $sql);
    mysqli_stmt_bind_param($stmt,"sssss",$foodA,$foodB,$foodC,$foodD,$foodE);
    mysqli_stmt_execute($stmt);
    echo "User has been added!";
    header('Location: select.html');
}

select.html

<html lang="en">
<title>Catering Service</title>
<meta charset="utf-8">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script src="js/js.1.js" type="text/javascript"></script>
</head>
<body>
<form action="submit.php" method="post">

<select multiple="multiple" class="options" id="textarea" >
   <option value="foodA">foodA</option>
   <option value="foodB">foodB</option>
   <option value="foodC">foodC</option>
   <option value="foodD">foodD</option>
   <option value="foodE">foodE</option>
</select>


  <button type="button" id="copy" onclick="yourFunction()">Copy</button>
  <button type="button" id="remove" onclick="yourFunction()">Remove</button>

  <select id="textarea2" multiple class="remove" >


<input type="submit" name="submit" />
</form>
        </select>
        </html>

【问题讨论】:

  • 将表格发布到select.html
  • @alfasin 怎么样? tnx 为您的回复
  • 这是一个糟糕的设计:1. 由于您发布的表单只允许一个值,因此您的数据库表应该有一个名为“food”的列,有 5 个可能的值:A/B/C/D/E . 2. textarea 是一个元素类型 - 将其用作 ID 是不好的做法!
  • @alfasin 生病了将 textarea 更改为名称而不是 id?如何在表单中允许多个值?
  • 如果您想允许多个值,更好的方法是使用复选框。

标签: php mysql sql forms textarea


【解决方案1】:

您需要name &lt;select&gt; 才能使用数据。

name="food[]"

这样

<select multiple="multiple" name="food[]" class="options" id="text area" >
   <option value="foodA">foodA</option>
   <option value="foodB">foodB</option>
   <option value="foodC">foodC</option>
   <option value="foodD">foodD</option>
   <option value="foodE">foodE</option>
</select>

那么如果你希望值是 0 或 1,取决于选择与否,你可以使用以下来替换它:

$foodA = $_POST['foodA'];
$foodB = $_POST['foodB'];
$foodC = $_POST['foodC'];
$foodD = $_POST['foodD'];
$foodE = $_POST['foodE'];

$foodA = 0;
$foodB = 0;
$foodC = 0;
$foodD = 0;
$foodE = 0;

foreach ($_POST['food'] as $value) {
    if($value == 'foodA')
        $foodA = 1;
    if($value == 'foodB')
        $foodB = 1;
    if($value == 'foodC')
        $foodC = 1;
    if($value == 'foodD')
        $foodD = 1;
    if($value == 'foodE')
        $foodE = 1;
}

【讨论】:

  • @user3211646 我改了答案,试试这个
  • tnx 这适用于 tnx 但您知道其他功能吗?像文本会在数据库中输入吗?
【解决方案2】:

您需要将您的选择命名为 name=food 或其他名称,以便它位于 $_POST['food'] 中。选择中的每个选项都不会显示在 $_POST 中,只有选择的内容会出现在选择的名称中。每个选项都不是它自己的东西。

<select multiple="multiple" name="food" class="options" id="textarea" >
   <option value="foodA">foodA</option>
   <option value="foodB">foodB</option>
   <option value="foodC">foodC</option>
   <option value="foodD">foodD</option>
   <option value="foodE">foodE</option>
</select>

当您保存数据时,它将拥有:

$_POST['food'] with the value of 'foodA' if multiples, it will be 'foodA, foodB'

【讨论】:

  • tnx 为你的回复生病试试这个 tnx 生病评论回来
  • 请问我不能理解这个:) $_POST['food'] 的值为 'foodA' 如果是倍数,它将是 'foodA, foodB' 我会把它放在 submit.php 中?我会将 $foodA =$_POST 更改为 $food = $_POST?
猜你喜欢
  • 2014-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多