У меня есть 3 шага последовательности выбора цепочки, game -> battle -> winning side
, которая извлекает все данные из базы данных MySQL.
После некоторого блуждания в интернете я нашел компактный скрипт jQuery, который прекрасно работает. Однако я не знаю, как разрешить существующие данные: <option selected="selected"></option>
, используя этот скрипт.
выборочный JavaScript:
<script>
var ajax = new Array();
function getScenNumList(sel)
{
var game = sel.options[sel.selectedIndex].value;
document.getElementById('scenarioNumber').options.length = 0; // Empty scenario number select box
if(game.length>0){
var index = ajax.length;
ajax[index] = new sack();
ajax[index].requestFile = 'js/getPlayData.php?gameName='+game; // Specifying which file to get
ajax[index].onCompletion = function(){ createScenarioNumbers(index) }; // Specify function that will be executed after file has been found
ajax[index].runAJAX(); // Execute AJAX function
}
}
function createScenarioNumbers(index)
{
var obj = document.getElementById('scenarioNumber');
eval(ajax[index].response); // Executing the response from Ajax as Javascript code
}
function getNations(sel)
{
var scenNum = sel.options[sel.selectedIndex].value;
document.getElementById('victor').options.length = 0; // Empty nation select box
if(scenNum.length>0){
var index = ajax.length;
ajax[index] = new sack();
ajax[index].requestFile = 'js/getPlayData.php?scenID='+scenNum; // Specifying which file to get
ajax[index].onCompletion = function(){ createNations(index) }; // Specify function that will be executed after file has been found
ajax[index].runAJAX(); // Execute AJAX function
}
}
function createNations(index)
{
var obj = document.getElementById('victor');
eval(ajax[index].response); // Executing the response from Ajax as Javascript code
}
</script>
выдержка из сценария извлечения базы данных PHP (getPlayData.php
):
$gameName = mysql_real_escape_string($_GET['gameName']);
$q = "SELECT a, b, c FROM table WHERE game='$gameName' ORDER BY num ASC";
$r = mysql_query($q);
echo "obj.options[obj.options.length] = new Option('#','');\n";
while ($row = mysql_fetch_row($r)) {
$string = mysql_real_escape_string(($row[0].' - '.$row[1])); // needed so quotes ' " don't break the javascript
echo "obj.options[obj.options.length] = new Option('$string','$row[2]');\n";
}
повторяет obj.options
- это стандартный метод, который использовался этим сценарием. Это кажется мне безобразным, но я не знаю ни одного javascript, поэтому я не хотел возиться с этим.
HTML достаточно прост, просто таблица с несколькими пустыми <select>
объектами с идентификаторами, совпадающими с идентификаторами в вызовах javascript и onchange="getXXX(this)"
.
У меня такой вопрос: Все отлично работает для новых записей, но я в растерянности относительно того, как я могу изменить это, чтобы поддерживать пометку одного варианта из каждого выбора как выбранного, при условии, что у меня это есть данные в руках (например, пользователь редактирует существующую запись)?
Большое спасибо!