如何根据PHP / Javascript / Mysql中的表列来显示输入类型的条件? [英] How to do a condition displaying input type based on table column in PHP/Javascript/Mysql?

查看:55
本文介绍了如何根据PHP / Javascript / Mysql中的表列来显示输入类型的条件?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的数据库表。我目前正在将option1-10显示为文本,但是我想将其显示为每个选项的输入类型,具体取决于其answer_type列是单选按钮还是复选框。当option1-10的值为null时,也不应显示。另外,如何将其分组为一个,例如,如果是单选按钮,我应该只能选择一个?

This is my database table. I'm currently displaying option1-10 as text but I want to display it as an input type for each option depending if its answer_type column is radiobutton or checkbox. It also shouldn't display when the value of option1-10 is null. Also how do i group it into one like for example if it's a radiobutton, i should only be able to choose one?

这是我显示文本的代码

ajax

<html>
<head>
    <script>
        function showUser(str) {
            if (str == "") {
                document.getElementById("txtHint").innerHTML = "";
                return;
            } else {
                if (window.XMLHttpRequest) {
                    // code for IE7+, Firefox, Chrome, Opera, Safari
                    xmlhttp = new XMLHttpRequest();
                } else {
                    // code for IE6, IE5
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                xmlhttp.onreadystatechange = function() {
                    if (this.readyState == 4 && this.status == 200) {
                        document.getElementById("txtHint").innerHTML = this.responseText;
                    }
                };
                xmlhttp.open("GET","hay.php?q="+str,true);
                xmlhttp.send();
            }
        }
    </script>
</head>


</html>

<form>
    <select name="users" onchange="showUser(this.value)">
        <option>-None Selected-</option>

        <?php
        $con = mysqli_connect('localhost','root','','imetrics') or die ("Cannot connect");
        $query=mysqli_query($con, "SELECT * FROM question");
        while($row=mysqli_fetch_array($query)) {
            ?>
            <option value="<?php echo $row["question_id"]; ?>"><?php echo $row["questiontitle"]; ?></option>
            <?php
        }
        ?>

    </select>
</form>
<br>
<div id="txtHint"><b>Person info will be listed here...</b></div>

php代码

  <?php

    $con = mysqli_connect('localhost','root','','imetrics') or die ("Cannot connect to database");
    if(!$con){
        echo ('Could not connect: ' . mysqli_error($con));
    }

    $id= isset($_GET["q"])?$_GET["q"]:"";

    $query = mysqli_query($con, "SELECT * FROM question WHERE question_id = '".$id."'");

    while($row = mysqli_fetch_array($query)) {

        echo $row['Option_1'] . "<br>";
        echo $row['Option_2'] . "<br>";
        echo $row['Option_3'] . "<br>";
        echo $row['Option_4'] . "<br>";
        echo $row['Option_5'] . "<br>";
        echo $row['Option_6'] . "<br>";
        echo $row['Option_7'] . "<br>";
        echo $row['Option_8'] . "<br>";
        echo $row['Option_9'] . "<br>";
        echo $row['Option_10'] . "<br>";


    }

    ?>

What's the right condition for my problem?


推荐答案

您只需要在其中添加更多工作。另外,将intval用于防止SQL注入攻击。我正在使用一个功能来防止复制粘贴代码重复。我还要从数据库转义数据,因为它可能包含<

You just have to put a bit more work into it. Also, using intval for SQL injection attack prevention. I am using a function to prevent duplicate copy-pasted code. I'm also escaping the data from the database as it might contain "<" or "&".

<?php

$con = mysqli_connect('localhost','root','','imetrics') or die ("Cannot connect to database");
if(!$con){
    echo ('Could not connect: ' . mysqli_error($con));
}

$id= isset($_GET["q"])?intval($_GET["q"]):"";

$query = mysqli_query($con, "SELECT * FROM question WHERE question_id = '".$id."'");

function displayOption($i, $value, $answer_type) {
   if($value == null) {
       return;
   }

   if($answer_type == "radiobutton") {
       echo '<input type="radio" name="rinput" value="'.htmlspecialchars($value, ENT_QUOTES).'">'.htmlspecialchars($value).'<br>';
   } else if($answer_type == "checkbox") {
    echo '<input type="checkbox" name="cinput['.$i.']" value="'.htmlspecialchars($value, ENT_QUOTES).'">'.htmlspecialchars($value).'<br>';
   }
}

while($row = mysqli_fetch_assoc($query)) {
    for($i = 1; $i<=10; ++$i) {
        displayOption($i, $row["Option_$i"], $row['answer_type']);
    }
}

?>

这篇关于如何根据PHP / Javascript / Mysql中的表列来显示输入类型的条件?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆