私はいくつかの入力と4つの選択がある項目を追加しています。レコードの追加/編集ボタンをクリックするたびに、フォームはすべての値でロードされます記入します。私はロードオプションを高速にSQLデータベースからオプションを選択する方法がある場合は疑問に思っていますか?(クエリキャッシングや他の方法がわからないなど)speedup loading SQLデータベースのオプションを選択
JS:
loadSelectOptions("tab1"); //1600 options
loadSelectOptions("tab2"); //1200
loadSelectOptions("tab3"); //400
loadSelectOptions("tab4"); //100
function loadSelectOptions(elmId) {
$.post(
"queries.php",
{getValues:elmId},
function(data) {
$("#"+elmId).empty();
for (var i = 0, len = data.length; i < len; i++) {
$("#"+elmId).append(data[i]);
};
$("#"+elmId).selectpicker("refresh");
},
"json"
);
}
PHP(queries.php):これは私が選択したオプションをロードするために使用するメカニズムの一例である
if (isset($_POST["getValues"]) && (in_array($_POST["getValues"], array("tab1","tab2","tab3","tab4")))) {
$table = $_POST["getValues"];
$sql = "SELECT id, name FROM {$table} WHERE active='Y' ORDER BY name";
$result = mysqli_query($con, $sql);
$selectValues = array();
$selectValues[] = "<option value=0> [Select a value] </option>";
while ($row = mysqli_fetch_array($result)) {
$selectValues[] = "<option value='".$row["id"]."'>".$row["name"]."</option>";
}
echo json_encode($selectValues);
}
私は簡素化することができますか教えてくださいこのメカニズム。私はまた、データベースに新しい選択オプションを追加するための別のフォームを持っています(管理者用)ので、オプションリストをリフレッシュするタイミングを認識できるはずです(変更されたリストやキャッシングメカニズムのフラグなど)。 JS配列にロードして後で読むなど、この問題を解決するためのいくつかのドラフト・アイデアがありますが、これをもっと複雑にする必要はありません。
あなたは明確にする必要があります。データベースからデータを取得するのに2-3秒かかりますか?それとも、データを取得してそのデータをDOMにレンダリングすることを含む合計時間ですか? –
'$("# "+ elmId).selectpicker(" refresh ");' – felixRo
のような行はすべて一緒です。データを取得するのは大部分を占めるものではありません。何千ものDOM操作を行うことです。 –