私は3つのテーブルを持っています。リストは世界の国々の州と私の登録フォームの都市です。問題は、都市のリストが大きすぎるということです。合計48,314エントリが含まれています。だから、私のサイトはハングアップしており、ブラウザはスクリプトを止めるためのメッセージを表示しています。私はブラウザの目的のためにmozillaを使用しています。巨大なデータベースのリストの代わり
これは、私は都市、州や国を取得するために使用していたコードです:
$country = "SELECT * FROM countries";
$country = $pdo->prepare($country);
$country->execute();
$state = "SELECT * FROM states";
$state = $pdo->prepare($state);
$state->execute();
$city = "SELECT * FROM cities";
$citq = $pdo->prepare($city);
$citq->execute();
これは私のjQueryのコードです:
$(document).ready(function() {
$("#country").change(function() {
if ($(this).data('options') == undefined) {
$(this).data('options', $('#state option').clone());
}
var id = $(this).val();
var options = $(this).data('options').filter('[value=' + id + ']');
$('#state').html('<option value="">Select State</option>').append(options);
});
$("#state").change(function() {
if ($(this).data('options') == undefined) {
$(this).data('options', $('#city option').clone());
}
var id = $(this).val();
var options = $(this).data('options').filter('[value=' + id + ']');
$('#city').html('<option value="">Select City</option>').append(options);
});
});
は、これが私のHTMLです:
<select name="country" id="country">
<option value="">Select Country</option>
<?php while($i = $country->fetch()){ extract($i); ?>
<option value="<?php echo $id; ?>"><?php echo $name; ?></option>
<?php } ?>
</select>
<select name="state" id="state">
<option value="">Select State</option>
<?php while($j = $state->fetch()){ extract($j); ?>
<option value="<?php echo $country_id; ?>" data="<?php echo $id; ?>"><?php echo $name; ?></option>
<?php } ?>
</select>
<select name="city" id="city">
<option value="">Select City</option>
<?php while($k = $citq->fetch()){ extract($k); ?>
<option value="<?php echo $id ; ?>" data="<?php echo $state_id; ?>"><?php echo $name ; ?></option>
<?php } ?>
</select>
誰でも、私のサイトがハングアップすることなく完全にスムーズにロードする方法についての解決方法を教えてください。ページがリフレッシュされるたびに?
グローバルなスコープで 'extract($ i)'を使用することを検討してください –
** YUK ** – RiggsFolly
さらに、適切なインデックス作成を使用している間に、1つのクエリを使用してこれらのテーブルを結合できます。 –