将Form POST和GET一起用于所选属性

时间:2014-05-31 15:37:24

标签: php mysql post get

我有一个关于MySQL查询的过滤器。我可以按照自己的意愿过滤条目。但是在过滤之后,我无法将值设置为选项值上的选定值。我的代码;

<form method="POST">
    <label>İller:</label><select style="width:150px" name="iller"> 
        <OPTION VALUE=''>Hepsi</OPTION>
        <option value="İstanbul">İstanbul</option>
        <option value="Ankara">Ankara</option>
        <option value="Bolu">Bolu</option>
    </select>
    <label>Bölümler:</label><select style="width:150px" name="bolum"> 
        <OPTION VALUE=''>Hepsi</OPTION>
        <option value="Makine Mühendisliği">Makine Mühendisliği</option>
        <option value="Endüstri Mühendisliği">Endüstri Mühendisliği</option>
        <option value="Elektrik Mühendisliği">Elektrik Mühendisliği</option>
    </select>
    <input class="button" type="submit" name="submit" value="Filtrele" /></td>
</form>

<?php   
    $db_connection = mysqli_connect($host,$user,$password,$dbname);
    $query="SELECT * FROM osym";
    $sql=$query;
    $iller = $_POST['iller'];
    $bolum = $_POST['bolum'];

    mysqli_real_escape_string($db_connection,$_POST['iller']);
    mysqli_real_escape_string($db_connection,$_POST['bolum']);
    $conditions = array();

    if($iller !="") {
        $conditions[] =  " Il='$iller'";
    }
    if($bolum !="") {
        $conditions[] =  " Bolum='$bolum'";
    }
    if (count($conditions) > 0) {
        $sql .= " WHERE " . implode(' AND ', $conditions);
    }
    echo "<table border='1'>
          <tr>
            <th>Kod</th>
            <th>İl</th>
            <th>Okul</th>
            <th>Bölüm</th>
            <th>Dili</th>
            <th>Öğretim</th>
            <th>Burs</th>
            <th>Kontenjan</th>
            <th>Puan Türü</th>
            <th>Sıra</th>
            <th>Taban P.</th>
            <th>Tavan P.</th>
          </tr>";

    mysqli_query($db_connection,"SET NAMES UTF8");
    if (isset($_POST['submit'])) {
        $result = mysqli_query($db_connection,$sql);
            while($row = mysqli_fetch_array($result)) {
                echo "<tr>";
                echo "<td>" . $row['Kod'] . "</td>";
                echo "<td>" . $row['Il'] . "</td>";
                echo "<td>" . $row['Okul'] . "</td>";
                echo "<td>" . $row['Bolum'] . "</td>";
                echo "<td>" . $row['Dili'] . "</td>";
                echo "<td>" . $row['Ogr'] . "</td>";
                echo "<td>" . $row['Burslu'] . "</td>";
                echo "<td>" . $row['Kontenjan'] . "</td>";
                echo "<td>" . $row['PuanT'] . "</td>";
                echo "<td>" . $row['Sira'] . "</td>";
                echo "<td>" . $row['TabPuan'] . "</td>";
                echo "<td>" . $row['TavPuan'] . "</td>";
                echo "</tr>";
            }

            echo "</table>";
    }
?>

每当我选择一个选项并点击&#39; Filtrele&#39;按钮,所有选项名称都返回&#34; Hepsi&#34;。

我试过把

<?php if ($iller="İstanbul") {echo "selected"; } ?> 

in

<option value="İstanbul"> 

标签,但它没有用。

由于方法,我也不能使用GET属性。我提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您需要在设置$_POST变量后打印表单,以便添加相应的SELECTED属性。

当你致电mysqli_real_escape_string时,你必须将结果分配回变量。

<?php

$iller = isset($_POST['iller']) ? $_POST['iller'] : '';
$bolum = isset($_POST['bolum']) ? $_POST['bolum'] : '';

?>

<form method="POST">
    <label>İller:</label><select style="width:150px" name="iller"> 
    <OPTION VALUE=''>Hepsi</OPTION>
    <option value="İstanbul" <?php if ($iller == "İstanbul") echo "SELECTED" ?> >İstanbul</option>
    <option value="Ankara" <?php if ($iller == "Ankara") echo "SELECTED" ?> >Ankara</option>
    <option value="Bolu" <?php if ($iller == "Bolu") echo "SELECTED" ?> >Bolu</option>
    </select>
    <label>Bölümler:</label><select style="width:150px" name="bolum"> 
    <OPTION VALUE=''>Hepsi</OPTION>
    <option value="Makine Mühendisliği" <?php if ($bolum == "Makine Mühendisliği") echo "SELECTED" ?> >Makine Mühendisliği</option>
    <option value="Endüstri Mühendisliği" <?php if ($bolum == "Endüstri Mühendisliği") echo "SELECTED" ?> >Endüstri Mühendisliği</option>
    <option value="Elektrik Mühendisliği" <?php if ($bolum == "Elektrik Mühendisliği") echo "SELECTED" ?> >Elektrik Mühendisliği</option>
    </select>
    <input class="button" type="submit" name="submit" value="Filtrele" /></td>
    </form>

<?php   
$db_connection = mysqli_connect($host,$user,$password,$dbname);
$query="SELECT * FROM osym";
$sql=$query;

$iller = mysqli_real_escape_string($db_connection,$iller);
$bolum = mysqli_real_escape_string($db_connection,$bolum);
$conditions = array();

if($iller !="") {
    $conditions[] =  " Il='$iller'";
}
if($bolum !="") {
    $conditions[] =  " Bolum='$bolum'";
}
if (count($conditions) > 0) {
    $sql .= " WHERE " . implode(' AND ', $conditions);
}
echo "<table border='1'>
          <tr>
            <th>Kod</th>
            <th>İl</th>
            <th>Okul</th>
            <th>Bölüm</th>
            <th>Dili</th>
            <th>Öğretim</th>
            <th>Burs</th>
            <th>Kontenjan</th>
            <th>Puan Türü</th>
            <th>Sıra</th>
            <th>Taban P.</th>
            <th>Tavan P.</th>
          </tr>";

mysqli_query($db_connection,"SET NAMES UTF8");
if (isset($_POST['submit'])) {
    $result = mysqli_query($db_connection,$sql);
    while($row = mysqli_fetch_array($result)) {
        echo "<tr>";
        echo "<td>" . $row['Kod'] . "</td>";
        echo "<td>" . $row['Il'] . "</td>";
        echo "<td>" . $row['Okul'] . "</td>";
        echo "<td>" . $row['Bolum'] . "</td>";
        echo "<td>" . $row['Dili'] . "</td>";
        echo "<td>" . $row['Ogr'] . "</td>";
        echo "<td>" . $row['Burslu'] . "</td>";
        echo "<td>" . $row['Kontenjan'] . "</td>";
        echo "<td>" . $row['PuanT'] . "</td>";
        echo "<td>" . $row['Sira'] . "</td>";
        echo "<td>" . $row['TabPuan'] . "</td>";
        echo "<td>" . $row['TavPuan'] . "</td>";
        echo "</tr>";
    }

    echo "</table>";
}
?>