我正在使用面向对象的php或prep语句从数据库绑定所有医学测试列表,我的问题是如何在php中实现show subcheckbox?如果单击实验室的复选框,则会显示所有子复选框?我认为javascript不起作用
这里是医学测试复选框的PHP代码
int wertarray2 = Convert.ToInt16(wertarray1[0]);
以下是子复选框的代码
<?php
$tsql = "select medTestName from medtest";
$tstmt = $con->prepare($tsql);
$tstmt->execute();
$tstmt->bind_result($mtn);
$tstmt->store_result();
while ($tstmt->fetch()){
$d1= '<input type="checkbox" name="test[]"
value="'.$mtn.'">'.$mtn.'<br>';
echo $d1;
}
?>
这是我的医学测试的样子
这是我的医学测试数据库
对不起,很长的帖子,我真的不知道该怎么做:(
答案 0 :(得分:1)
这是你的想法吗?
我创建了两个PHP数组:一个包含所有测试,另一个包含所有主题。首先,我们遍历测试数组并打印出每个项目。在每次迭代中,我们遍历主题并打印出每个项目(确保每个元素都有一个唯一的ID)。
生成HTML后,我们使用jQuery隐藏包含每个测试主题的字段集。然后,我们为每个测试复选框附加一个单击处理程序,隐藏或显示嵌套主题。
显然,您的$ tests数组将由您的数据库查询结果填充,正如您的原始代码所示。为了演示目的,我已经对我进行了硬编码。
<!DOCTYPE html>
<html>
<head>
<title>Medical Stuff</title>
</head>
<body>
<h1>Medical Stuff</h1>
<?php
$tests = array(
"Vital Signs",
"Neuro-Psychological",
"Laboratory",
"Radiology",
"Ultrasound",
"Audiometry",
"Optometry",
"ECG",
"Treadmill",
"Dental",
"Physical Examination",
"Pediatrics",
"MRI"
);
$topics = array(
"Complete Blood Count",
"Blood Typing",
"Urinalysis",
"RPR/TPHA",
"Hepatitis B screening",
"Fasting Blood Sugar",
"Creatinine",
"Total Cholesterol(Low Cholesterol, High Cholesterol)",
"Triglyceride",
"VLDL",
"Blood Uric Acid",
"Anti-HAV Igm Screening",
"Anti HBaAg",
"Drug & Alcohol Test",
"Stool Culture"
);
$tests_length = count($tests);
$topics_length = count($topics);
?>
<form>
<fieldset>
<legend>Tests</legend>
<?php
// Tests
for ($i = 0; $i < $tests_length; $i++) {
$test_value = $i + 1;
$test_id = "test_" . $test_value;
print '<div>';
print '<input type="checkbox" class="test" id="' . $test_id . '" value="' . $test_value . '">';
print '<label for="' . $test_id . '">' . $tests[$i] . '</label>';
// Nested topics
print '<fieldset class="topics">';
for ($ii = 0; $ii < $topics_length; $ii++) {
$topic_value = $ii + 1;
$topic_id = $test_id . "_topic_" . $topic_value;
print '<div>';
print '<input type="checkbox" class="topic" id="' . $topic_id . '" value="' . $topic_value . '">';
print '<label for="' . $topic_id . '">' . $topics[$ii] . '</label>';
print '</div>';
}
print '</fieldset>';
print '</div>';
}
?>
</fieldset>
<input type="submit" value="Submit">
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script>
jQuery(document).ready(function($){
$(".topics").hide();
$(".test").on('click', function(e){
var topics = $(this).nextAll('.topics');
if ($(this).is(':checked')) {
topics.show();
} else {
topics.hide();
}
});
});
</script>
</body>
</html>
上面的代码最终看起来像这样:
答案 1 :(得分:1)
在我看来,最简单的方法是预加载所有复选框,隐藏它们,然后根据需要用一些javascript显示它们。
我将告诉您如何使用某些javascript。
以下是javascript和随附的html的基本概念;
HTML
<label><input type="checkbox" name="laboratory-test" value="1">Laboratory</label>
<!-- Container for the set of sub checkboxes, hidden on load -->
<div id="laboratory-toggle" style="display:none;">
<label><input type="checkbox" name="topic" value="1">Complete Blood Count</label>
<label><input type="checkbox" name="topic" value="2">Blood Typing</label>
<label><input type="checkbox" name="topic" value="3">Urinalysis</label>
<label><input type="checkbox" name="topic" value="4">RPR/TPHA</label>
<label><input type="checkbox" name="topic" value="5">Hepatitis B screening</label>
<label><input type="checkbox" name="topic" value="6">Fasting Blood Sugar</label>
<label><input type="checkbox" name="topic" value="7">Creatinine</label>
<label><input type="checkbox" name="topic" value="8">Total Cholesterol(Low Cholesterol, High Cholesterol)</label>
<label><input type="checkbox" name="topic" value="9">Triglyceride</label>
<label><input type="checkbox" name="topic" value="10">VLDL</label>
<label><input type="checkbox" name="topic" value="11">Blood Uric Acid</label>
<label><input type="checkbox" name="topic" value="12">Anti-HAV Igm Screening</label>
<label><input type="checkbox" name="topic" value="13">Anti HBaAg</label>
<label><input type="checkbox" name="topic" value="14">Drug & Alcohol Test</label>
<label><input type="checkbox" name="topic" value="15">Stool Culture</label>
</div>
的Javascript
//the checkbox that controls the hide/show
var controlbox = document.querySelector('input[name="laboratory-test"]');
//the container of the sub-checkboxes
var subboxes = document.querySelector('#laboratory-toggle');
// attach to the change event of the controlling checkbox
controlbox.addEventListener('change', function (e) {
// if it is checked after the change
if (this.checked) {
// display the subboxes
subboxes.style.display = 'block';
} else {
// if not checked hide the subboxes
subboxes.style.display = 'none';
}
});
一个工作示例的链接。 http://jsfiddle.net/oc9p3a2h/3/
如果需要,我很乐意进一步解释。如果这需要使用多组子复选框,很高兴向您展示它是如何工作的。
编辑:这是使用与MarkPlewis完全相同的技术,如果你需要一个关于如何生成我上面写的html的php,请告诉我。