2013-12-22 2 views
0

Два раскрывающихся списка - выберите первое значение, затем mysql_query вернет ответ, и этот список заполнит второй раскрывающийся список. Проблема - второй список, похоже, не заполнен. Код работает нормально - я вижу вывод в firebug.Раскрывающийся список

<form method="post" action="showResult.php" > 
<input type=hidden name="style" value="segment"> 
Choose wisely 
<select name="pillow" id="pillow"> 
    <option value="0">choose</option> 
    <option value="1">Red</option> 
    <option value="2">Blue</option> 
</select> 
Now, what do you want to start with? 
<select id="ANSWER" name="ANSWER" size="1"> 
    <option value="0">-</option> // this doesn't want to populate 
</select> 
<script type="text/javascript"> 
    $("#pillow").change(function(){ 
     $("#ANSWER").load(".test.php", { 
      id: $("#pillow option:selected").val() 
     }); 
    }); 
</script> 
</form> 

test.php:

<?php 
    include 'init.php';//here we do all stuff with connections and etc. 
    $name = $_REQUEST["id"]; 
    //prevent simple injection 
    if(strstr($name,'.') || strstr($name, "\0")) die ("Be sure - it won't work =)"); 
    mysql_query('SET NAMES "utf8"'); // should it be here? 
    $result = mysql_query("SELECT DISTINCT action FROM table WHERE pillow='$name'") or die('MySQL error!'. mysql_error()); 
while($row = mysql_fetch_assoc($result)){ 
    //I see this log in firebug, but not in the dropdown list 
    printf('<option value="%s">%s</option>',$row['action'],$row['action']); 
} 
?> 
+0

Любая ошибка, которую вы получаете? –

+0

Вы пытались добавить 'printf ('');' after? –

+0

@KiranRS, нет. В Firebug появился желаемый результат. Но не в списке. –

ответ

1

Вы должны поставить кавычки вокруг вашего идентификатора парам, которые вы отправляете на сервер. В вашей текущей реализации вы отправляете переменное значение как ключ, а не ключ «id».

Изменить это:

id: $("#pillow option:selected").val() 

к этому:

"id": $("#pillow option:selected").val() 

Я возьму остальную часть этого ответа упомянуть дыры в безопасности в вашем скрипте:

1) mysql_ функциональный набор устарел, рассмотрите возможность перехода на mysqli как можно скорее

2) По меньшей мере, escape-значения передаются в запрос как значение, в настоящее время вы разрешаете любое значение помещаться в ваш запрос, оставляя вас открытым для SQL-инъекций. Если вы используете устаревший набор функций mysql_, используйте mysql_real_escape_string() для дезинфекции переменной. Если вы используете mysqli, используйте подготовленные инструкции с привязками.

+0

он может захотеть проверить PDO, я считаю PDO более дружелюбным ко мне. –

+0

Мне тоже нравится PDO, я просто думаю об этом с точки зрения «легко переносить». Сначала используйте процедурный подход mysqli (который ближе к подходу mysql), а затем перейдем от этого к OO-подходу mysqli, а затем скажите, что это я захватил ORM lib/framework – Zarathuztra

+0

lol, ну, мне нравится pdo, потому что я видел его в учебнике, который я смотрел, и он просто сделал это так просто, поэтому я не знаю, как использовать mysqli. –

Смежные вопросы