помочь с цепочками выбора и существующими значениями формы, например: добавление</option> - PullRequest
0 голосов
/ 08 апреля 2011

У меня есть 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)".

У меня такой вопрос: Все отлично работает для новых записей, но я в растерянности относительно того, как я могу изменить это, чтобы поддерживать пометку одного варианта из каждого выбора как выбранного, при условии, что у меня это есть данные в руках (например, пользователь редактирует существующую запись)?

Большое спасибо!

1 Ответ

1 голос
/ 08 апреля 2011

Вы можете увидеть этот учебник для создания опции, выбранной по умолчанию.http://www.javascriptkit.com/javatutors/selectcontent.shtml Один параметр в конструкторе параметров указывает, выбран ли параметр или нет.В файле 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
    if ($string ......)
    echo "obj.options[obj.options.length] = new Option('$string','$row[2]', false, true);\n";
    else
     ......

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...