我已經實作了一個由章節(左)和單元(右)組成的功能性選單,該選單按照我的要求運行,并在我所附的圖片中看到。問題是它很慢,因為我動態地生成了CSS和JavaScript,以便為每個元素定義正確的ID。
這部分內容包括:
這是我的代碼的一部分,我用它來切換每個章節或單元。
<?php
$sql_dyn_1 = "
選擇id
FROM menuChapters
WHERE class=$get_class AND course=$get_course AND visibility=1
ORDER BY chapterOrder
ASC
";
$result_dyn_1 = $conn->query($sql_dyn_1)。
$row_dyn_1 = array()。
if ($result_dyn_1-> num_rows > 0){
while($row_dyn_1 = $result_dyn_1->fetch_assoc() ) {
//獲取平面表中所有章節的id。
$get_ch_id[] = $row_dyn_1['id'/span>] ;
}
}
for($x = 0; $x < count($get_ch_id); $x ) {
//這個動態生成的CSS代碼最初隱藏了章節下的活動,直到每個章節鏈接被點擊。
echo "<style>
.chapter-".$get_ch_id[$x]."-activities {
顯示:無。
}
.chapter-".$get_ch_id[$x]."-unit {
顯示:無。
}
</style>"。
//這個動態生成的Javascript代碼只是切換了章節下的活動。
echo "<script>
$(document).ready(function(){
$('.chapter-link-".$get_ch_id[$x].').click(function(){
$('.chapter-".$get_ch_id[$x]."-activities').toggle(400);
$('.chapter-".$get_ch_id[$x]."-unit").toggle(400);
});
});
</script>"。
for($y = 0; $y < count($get_ch_id); $y ) {
if ($get_ch_id[$x]==$get_ch_id[$y]) {
// ===不做任何事情,如果它是相同的。
// echo ' xXx ';
} else {
// echo $get_ch_id[$y]. ';
//這個動態生成的Javascript代碼隱藏了其他章節的活動,如果打開 其他單位。
echo "<script>
$(document).ready(function(){
$('.chapter-link-".$get_ch_id[$x]."') .click(function(){
$('.chapter-".$get_ch_id[$y]."-activities') .hide(200);
$('.chapter-".$get_ch_id[$y]."-unit').hide(200);
});
});
</script>"。
}
}
// =========================================================================
$thisPlease = $get_ch_id[$x];
//
// KEEP Activities of units closed when a chapter is clicked - START
$sql_dyn_2 = "
SELECT id
FROM menuUnits
WHERE chapter_id=$thisPlease AND visibility=1
ORDER BY unitsOrder
ASC
"。
$result_dyn_2 = $conn->query($sql_dyn_2)。
if ($result_dyn_2-> num_rows > 0){
while($row_dyn_2 = $result_dyn_2->fetch_assoc() ) {
$get_un_id2 = $row_dyn_2['id'] 。
//print_r($get_un_id);
echo "<style>
.ch-".$get_ch_id[$x]."-un-".$get_un_id2."-activities{
顯示:無。
}
</style>
"。
echo "<script>
$(document).ready(function(){
$('.titleof-un-".$get_un_id2."-ch-".$get_ch_id[$x]." ').click(function() {
$('.ch-".$get_ch_id[$x]."-un-".$get_un_id2."-activities').toggle(400)。
});
});
</script>
"。
}
}
// KEEP 活動的單位在點擊一個章節時關閉 - END
//
}
$sql_dyn_3a = "
選擇id
FROM menuChapters
WHERE class=$get_class AND course=$get_course AND visibility=1
ORDER BY chapterOrder
ASC
";
$result_dyn_3a = $conn->query($sql_dyn_3a)。
$row_dyn_3a = array()。
if ($result_dyn_3a-> num_rows > 0){
while($row_dyn_3a = $result_dyn_3a->fetch_assoc() ) {
//獲取平面表格中所有章節的id。
$get_ch_id = $row_dyn_3a['id'/span>] ;
//echo "<br><b>".$get_ch_id."</b>";/span>
//--獲取單位---------------------------------------
$sql_dyn_3b = "
選擇id
FROM menuUnits
WHERE chapter_id=$get_ch_id AND visibility=1
ORDER BY unitsOrder
ASC
"。
$result_dyn_3b = $conn->query($sql_dyn_3b)。
if ($result_dyn_3b-> num_rows > 0){
while($row_dyn_3b = $result_dyn_3b->fetch_assoc() ) {
$get_un_id[] = $row_dyn_3b['id'] 。
//echo "<br>";
//print_r($get_un_id);
$counted = count($get_un_id)。
$get_max = $counted - 1;
$f_pattern = $get_un_id[$get_max];
for($a = 0; $a < count($get_un_id); $a ) {
if ($f_pattern == $get_un_id[$a]) {
} else {
echo "<script>
$(document).ready(function(){
$('.titleof-un-".$f_pattern."-ch-".$get_ch_id." ') .click(function() {
$('.ch-".$get_ch_id."-un-".$get_un_id[$a]."-activities').hide(200);
});
$('.titleof-un-".$get_un_id[$a]."-ch-".$get_ch_id." ') .click(function(){
$('.ch-".$get_ch_id."-un-".$f_pattern."-activities').hide(200);
});
});
</script>"。
}
}
}
}
// --獲取單位---------------------------------------。
}
}
?>
我想要的是更簡單或更快的方法
uj5u.com熱心網友回復:你應該一次性從資料庫中獲取你的資料:
這樣做怎么樣?
這樣做呢:
SELECT menuChapters.id, menuUnits.id
FROM menuChapters INNER JOIN menuUnits
ON (menuChapters.id = menuUnits.chapter_id)
WHERE menuChapters.class=$get_class AND menuChapters。 course=$get_course AND menuChapters.visibility=1。
ORDER BY menuChapters. chapterOrder ASC, menuUnits.unitsOrder ASC
這應該會給你一個串列,其中每一行都有你的章節的id和你的單位的id。
我沒有試過這段代碼,所以它可能有一些問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/321897.html
標籤:





