2013-10-25 5 views
0

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

<select name="category" id="category" maxlength="30" onchange="this.form.submit();"> 
           <option value =""></option> 
          <?php 
           require_once("config.php"); 
           // Connect to server 
           $con = mysql_connect($ServerAddress,$ServerUser,$ServerPassword); 
           //choose DB 
           mysql_select_db($DbName, $con);        
           $sql = "SELECT * FROM `category` ORDER BY `name`"; 
           $res = mysql_query($sql); 
           while ($row1 = mysql_fetch_array($res)){ 
            echo '<option value ="'.$row1['name'].'">'.$row1['name'].'</option>'; 

           }  
          ?> 
          </select> 
         </span> 
<label>race:</label> 
<span> 
          <select name="race" id="race" maxlength="30" > 
           <option value =""></option> 
          <?php 
           if (isset($_POST['category'])) { 
            $var = $_POST['category']; 

            // Connect to server 
            $con = mysql_connect($ServerAddress,$ServerUser,$ServerPassword); 
            //choose DB 
            mysql_select_db($DbName, $con);  
            $sql = "SELECT * FROM `race` WHERE `category`='" . sqlSecure($var) . "'ORDER BY `race`";         
            $res = mysql_query($sql); 
            while ($row1 = mysql_fetch_array($res)){ 
             echo '<option value ="'.$row1['race'].'">'.$row1['race'].'</option>'; 
            } 
           } 
          ?> 
          </select> 
+0

Подробнее о Ajax - ваш нынешний подход действительно неэффективен. Также прекратите использовать 'mysql_ *' функции, переключитесь на mysqli_ * или PDO. – naththedeveloper

ответ

3

Метод, как получить значения, определенные в form тег в атрибуте method

В вашем случае вам нужно получить echo $_POST['category'] и сравнить его с name опции

Ваш код не идеален. Посмотрите: :)

<?php 
require_once("config.php"); 
// Connect to server 
$con = mysql_connect($ServerAddress, $ServerUser, $ServerPassword); 
//choose DB 
mysql_select_db($DbName, $con); 

?> 
<select name="category" id="category" maxlength="30" onchange="this.form.submit();"> 
    <option value=""></option> 
    <?php 
    $val = $_POST['category']?:''; 

    $sql = "SELECT * FROM `category` ORDER BY `name`"; 
    $res = mysql_query($sql); 
    while ($row1 = mysql_fetch_array($res)) { 
     $selected = ($val == $row1['name'] ? 'selected="selected"' : ''); 
     echo '<option value ="' . $row1['name'] . '" '. $selected .'>' . $row1['name'] . '</option>'; 

    } 
    ?> 
</select> 
</span> 
<label>race:</label> 
<span> 
<select name="race" id="race" maxlength="30"> 
    <option value=""></option> 
    <?php 
    if (isset($_POST['category'])) { 
     $var = $_POST['category']; 
     $sql = "SELECT * FROM `race` WHERE `category`='" . sqlSecure($var) . "'ORDER BY `race`"; 
     $res = mysql_query($sql); 
     while ($row1 = mysql_fetch_array($res)) { 
      echo '<option value ="' . $row1['race'] . '">' . $row1['race'] . '</option>'; 
     } 
    } 
    ?> 
</select> 
Смежные вопросы