尽管看起来微不足道,但我在通过PHP从MySql数据库中检索单选按钮的值时遇到了问题。这是我的第一个学习项目,所以我一直在努力
问题已被提出,但我没有找到有用的答案。
php代码做了一个简单的" Select *"所以我检索了所有的字段。
这是php代码
<label>Owner: <?php echo $row['Owner']; ?></label></br>
<input type="radio" name="Owner" checked=<?php if($row['Owner'] = "A") { echo "true"; }?> value="A">A
<input type="radio" name="Owner" checked=<?php if($row['Owner'] = "B") { echo "true"; }?> value="B">B</br></br>
我用mysqli_fetch_array()检索值。
结果如下:
如您所见,标签检索的值正确,单选按钮不是。
我已经尝试过将==代替=并放置&#39;而不是&#34;但我不知道为什么复选框&#34; B&#34;选中,因为所有者值为A。
此外,如果有任何优于此的最佳做法,欢迎您。
答案 0 :(得分:7)
HTML
attribute checked
不应该获得值,仅仅存在表示单选按钮已被选中。所以这样做:
<label>Owner: <?php echo $row['Owner']; ?></label></br>
<input type="radio" name="Owner" <?php if($row['Owner']=="A") {echo "checked"}?> value="A">A
<input type="radio" name="Owner" <?php if($row['Owner']=="B") {echo "checked"}?> value="B">B
或使用更紧凑的short echo tag <?= .. ?>
和ternary operator:
<label>Owner: <?=$row['Owner']?></label></br>
<input type="radio" name="Owner" <?=$row['Owner']=="A" ? "checked" : ""?> value="A">A
<input type="radio" name="Owner" <?=$row['Owner']=="B" ? "checked" : ""?> value="B">B
请注意,您需要使用双等号进行比较。
答案 1 :(得分:2)
尝试此代码不是db_department
,而是使用=
==
答案 2 :(得分:0)
$gender=$row['gender'];
<input type="radio" name="gender" <?php if($gender=="Male"){?> checked="true" <?php } ?> />Male
<input type="radio" name="gender" <?php if($gender=="Female"){?> checked="true" <?php } ?>/>Female
答案 3 :(得分:0)
$owner=$row['owner'];
$owners= ['A'=>'', 'B'=> ''];
$owners[$owner] = 'checked';
<input type="radio" name="Owner" <?php echo $owners['A']?> value="A">A
<input type="radio" name="Owner" <?php echo $owners['B']?> value="B">B
我认为如果你在DB中有很多值,那么它很简单,也很有用。
答案 4 :(得分:-1)
我尝试了@trincot给出的答案,但它给了我错误,所以我做了一点改动来改善答案
<input type="radio" name="Owner" <?php if($row['Owner']=="A") {?> <?php echo "checked";?> <?php }?> value="A">A
<input type="radio" name="Owner" <?php if($row['Owner']=="B") {?> <?php echo "checked";?> <?php }?> value="B">B