【问题标题】:Check Checkboxes according to the data from the database根据数据库中的数据检查复选框
【发布时间】:2015-04-18 14:22:15
【问题描述】:

我的网站上有一个表格,我想更新用户的信息(编辑个人资料),并且用户的一些信息与用户可能患有的疾病有关。 我有复选框可以选择任何疾病,但是我如何可以根据我的数据库表中的数据检查复选框。 复选框的代码如下...

<label id="Disease">Your Disease(s):</label><br />
    <!--emfanizei tis epiloges gia ta diseases me basi auta p exoume sti basi mas -->
    <?php
  $sql = "SELECT name FROM disease";
  $query_resource = mysql_query($sql);
  while( $name = mysql_fetch_assoc($query_resource) ):
?>
    <span><?php echo $name['name']; ?></span>
    <input type="checkbox" name="disease[]" value="<?php echo $name['name']; ?>" /><br />

<?php endwhile; ?>

我的数据库表被命名为病人,看起来像这样

我的复选框看起来像这样...

我的更新代码...

if(isset($_POST['username'])){

            $fname = mysql_real_escape_string($_POST["fname"]);
            $lname = mysql_real_escape_string($_POST["lname"]);            
            $email = mysql_real_escape_string($_POST["email"]);
            $password = mysql_real_escape_string($_POST["password"]);
            $age = ($_POST["age"]);
            $disease = implode(",",$_POST["disease"]);         

            $query="UPDATE patient
                    SET fname = '$fname', lname = '$lname', email = '$email', password = '$password', age='$age', disease='$disease'
                    WHERE username='$username'";

            mysql_query($query)or die(mysql_error());
            if(mysql_affected_rows()>=0){
                echo "<p>($username) Record Updated<p>";
            }else{
                echo "<p>($username) Not Updated<p>";
            }
        }

【问题讨论】:

  • 旁注问题:您之前的另一个问题stackoverflow.com/q/29717770,您使用的是PDO,但在此您使用的是mysql_ 函数;为什么?您现在不会混合使用那些不同的 MySQL API,是吗?
  • @Fred-ii- 因为这是被问到的
  • 我不明白你的意思。
  • @Fred-ii- 我在这个页面中使用 mysql,因为我很久以前就开始了,我没有时间改变它
  • (1) 您的patient 表设计不当。逗号分隔的列表 - Allergy,Heart Disease,Neurological - 应该作为关系表来完成,因为在这种格式下,做你想做的事情会更加困难。 (2) 具体到你的问题。您需要查询您的patient 表以获取他们的疾病,但您没有在此处显示该尝试。

标签: php html checkbox


【解决方案1】:

&lt;input type="checkbox" name="disease[]" value="&lt;?php echo $name['name']; ?&gt;"&lt;?php if (in_array($name['name'], split($disease, ','))) echo ' checked'; ?&gt; /&gt;

对于 XHTML,您可能需要编写:echo 'checked="checked"';

【讨论】:

  • (in_array 你是从哪个表得到的。我的意思是你在哪里选择桌子?
  • in_array 是一个标准的 php 函数,输入 php + 你想要的,你会发现堆栈溢出或其他有用的文章。 php.net/manual/en/function.in-array.php
  • 我也无法理解... 中的内容,你能写下整个代码吗?
  • ... 和以前一样。您基本上可以在输入中任何您喜欢的位置插入此 php 命令,但您必须小心添加空格或保存返回 " checked "
  • 你的意思是&lt;input type="checkbox" name="disease[]" value="&lt;?php echo $name['name']; ?&gt;" &lt;?php if (in_array($name["name"], $name["diseases"].split(","))) echo "checked"; ?&gt; /&gt;
【解决方案2】:

如果您希望默认选中复选框,则需要添加属性:

checked="checked" 

浏览疾病列表,如果他在数据库中有它,然后将属性添加到您的输入中。

【讨论】:

    【解决方案3】:

    通过“while”语句中的简单“if”,您可以检查疾病是否在您的列表中。如果有,您必须在 html 代码中插入关键字“checked”。 伪代码应该是

    get all possible diseases
    get all patient's diseases
    while disease=over all diseases
       if(disease is in the patient's diseases list)
          echo "<input type="checkbox" ... checked >"
       else
          echo "<input type="checkbox" ... >"
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 2013-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-11
      • 1970-01-01
      • 1970-01-01
      • 2012-08-31
      相关资源
      最近更新 更多