2013-04-26 2 views
0

создать выпадающий список, как это:SQL запросы на основе выбора выпадающего меню

<header> 
    <h3 align="center"> Highway State </h3> 
</header> 
<section> 
    <article> 
     <hgroup> 
     </hgroup> 
     <p align="center"> 
     <form style="text-align:center" method="post" action=""> 

      <select name="dropdown1"> 
       <?php echo query1(); ?> 
      </select> 

     <input type="submit" value="Submit" /> 
     </form> 
     </p> 
    </article> 

где Query1() является

function query1() 
{ 
    $myHTMLData = ''; 
    $c=connect(); 
    $myData=mysqli_query($c, "SELECT DISTINCT highway_state FROM highways_highway ORDER BY highway_state"); 
    while($record = mysqli_fetch_array($myData)) 
    { 
     $myHTMLData .= '<option value="' . $record['highway_state'] . '">' . $record['highway_state'] . '</option>' ; 
    } 
    return $myHTMLData; 
} 

Так что я делаю наполнение выпадающего меню состояний.

Мой вопрос теперь, как мне сделать SQL запрос как SELECT, ID, EXIT_NAME FROM highways_exit WHERE highway_ID = (SELECT ID FROM highways_highway WHERE highway_state = * dropdown1 *)

* dropdown1 * - это то, где я хочу, чтобы запрос основывался на выборе в dropdown1. Как это сделать?

ТАКЖЕ: Как отобразить этот запрос на веб-странице, когда человек нажимает кнопку отправки?

Моя попытка решения (написано в index.php)

<header> 
     <h3 align="center">Exit Name</h3> 
    </header> 
    <section> 

     <table border='1' align="center"> 
      <tr> 
      <th>Exit Name</th> 
      <th>Exit ID</th> 
      </tr> 
<?php 
     $c=connect(); 
     $hstate = $_POST['dropdown1']; 
     $hname = $_POST['dropdown2']; 
     $hdir = $_POST['dropdown2pt5']; 

     $result=mysqli_query($c, "SELECT exit_name, id FROM highways_exit WHERE highway_ID = (SELECT id FROM highways_highway WHERE highway_state = ('" . $hstate . "') AND highway_name = ('" . $hname . "') AND highway_dir = ('" . $hdir . "')) "); 
      while($row = mysqli_fetch_array($result)) 
      { 
       $arrexit = $row['exit_name']; 
       $arrid = $row['id']; 
       echo "<tr><td>$arrexit</td><td>$arrid</td></tr>"; 
      } 
    ?> 
     </table> 

    </section> 
    <footer> 
     <f1 align="center"></f1> 
    </footer> 

Правильно ли это для использования пунктов меню? Это и объект меню находятся на index.php, есть ли способ заставить это работать так, что он будет принимать элементы меню и создавать эту таблицу при обновлении/отправке?

ответ

2

Вы можете получить значение с помощью $_POST['dropdown1'] . Затем вы можете использовать это, чтобы запросить db.

+0

так что-то вроде следующей работы? $ myVal = $ _POST ['dropdown1']; newquery ($ myVal); Затем функция newquery ($ myval) { $ myHTMLData = ''; $ c = connect(); $ myData = mysqli_query ($ c, "SELECT ID, exit_name FROM highways_exit WHERE highway_ID = (SELECT ID FROM highways_highway WHERE highway_state = $ myVal)"); } –

+0

Вы можете сделать что-то вроде $ SQL = "SELECT ID, EXIT_NAME FROM highways_exit WHERE highway_ID = (SELECT ID FROM highways_highway WHERE highway_state = '" [dropdown1 '] + "'" $ _POST.'; Но пожалуйста Помните, что SQL-инъекция должна быть дезинфицирована, прежде чем вводить ее в запрос. – ysrb

+0

Есть ли причина, по которой «dropdown1» может вызвать инъекцию, если это просто раскрывающееся меню, заполненное самой базой данных? –

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