繁体   English   中英

单选按钮不将值存储在数据库中?

[英]Radio Button not storing the value in database?

我有一个问题,这是一个简单的表单,我必须通过单选按钮提交数据问题是数据库中没有显示任何值,既不是disases名称也不是,是的,没有选项,我用名称医生创建了具有ID,dis_name和字段的数据库回答

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require 'db.php';
if (!empty($_POST)) {
    // keep track validation errors
    $disError = null;
    $ansError = null;

    // keep track post values
    $dis_name = isset($_POST['dis_name']);
    $ans=isset($_POST['ans']);

    // validate input
    $valid = true;
    if (empty($dis_name)) {
        $disError = 'Please enter Diseases Name';
        $valid = false;
    }
    if (empty($ans)) {
        $ansError = 'Please check one of option';
        $valid = false;
    }

    // insert data

    if ($valid) {
        if(isset($_POST['dis_name'])){
            $pdo = Database::connect();

            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            $sql = "INSERT INTO diseases (dis_name) values(?)";

            $q = $pdo->prepare($sql);
            $q->execute(array($dis_name));
            Database::disconnect();
            //header("location: diseases.php");
        }
    }
}
?>

//some html code here

<div class="control-group <?php echo   !empty($ansError)?'error':'';?>">
    <label class="check">Have you suffered pain preiviously???</label>
    <div class="controls">
    <input type="radio" name="choice" <?php if (isset($ans) && $ans=="yes") echo "checked";?>
    value="Yes">Yes
    <input type="radio" name="choice"<?php if (isset($ans) && $ans=="no") echo "checked";?>
    value="No">No
<?php                   
//if(isset($_POST['submit'])){
    if(!empty($_POST['choice'])){
        $ans=isset($_POST['ans']);
        $pdo = Database::connect();
        $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        $sql = "INSERT INTO diseases (question) values(?)";
        $q = $pdo->prepare($sql);
        $q->execute(array(isset($_POST['choice'])));
        Database::disconnect();
    }
//}
?>

`isset() it gives undefined index warning.`    

我想ans代表由radio控制值填充的答案 这是您在服务器端获取它的方式:

$ans=isset($_POST['ans']);

在您的html中,实际上是choice

你不应该这样吗?

$ans=isset($_POST['choice']);

编辑:

以及为什么要使用isset函数来获取帖子值?

isset()返回布尔值,输入名称为“ choice”。 也许你的意思是:

if( isset($_POST['choice']) ){
    $ans = $_POST['choice'];

    // Optionally you may want $ans to be boolean:
    if($ans == 'Yes') {
        $ans = TRUE;
    } else {
        $ans = FALSE;
    }
}

然后(如果已正确定义表列以存储布尔值/整数/枚举):

$q->execute(array($ans));

将存储1(真)或0(假)

暂无
暂无

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

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