1

有一个下拉列表如下:

 <script language="JavaScript" type="text/javascript">
 <!--
 function showSelected()
 {
var selObj = document.getElementById('city');
var cityTextObj = document.getElementById('cityText');

var selIndex = selObj.selectedIndex;
cityTextObj.value = selObj.options[selIndex].text;
 }
 //-->
 </script>

 <form method="get"><font class="text5">City</font>
    <select id="city" onchange="showSelected();this.form.submit();" style="width:350px">
    <option value="0">Please select</option>
        <option value="1">NewYork</option>
        <option value="2">Canada</option>
        <option value="3">Delhi</option>
        <option value="4">HongKong</option>
    </select>
    <input type="hidden" id="cityText" name="cityText"/>

 </form>

并选择数据库:

 <?php
 $sql = "SELECT * FROM general WHERE (day2sql >= now())";
 if(isset($_GET['cityText'])){
$city1 = mysql_real_escape_string($_GET['cityText']);
$sql .= " AND (gcity = '$city1')";  
 }

此功能运行良好。问题是如果有人选择香港,表格会根据香港提交并显示内容。但我无法在下拉列表中保留香港文本。它会变成默认文本“请选择”

并且有 5 个链接,如“ALL”、“Today”、“Tomorrow”等……如果有人选择 HongKong。并单击这 5 个链接中的任何一个 想要根据 HongKong ALL、HongKong TODAY、HongKong TOMORROW 获取数据......就像所有城市一样......这可能吗?

4

2 回答 2

1
    <option value="1" <?= $_GET['cityText'] == "NewYork" ? 'selected' : '' ?> >NewYork</option>
    <option value="2" <?= $_GET['cityText'] == "Canada" ? 'selected' : '' ?> >Canada</option>
    <option value="3" <?= $_GET['cityText'] == "Delhi" ? 'selected' : '' ?> >Delhi</option>
    <option value="4" <?= $_GET['cityText'] == "HongKong" ? 'selected' : '' ?> >HongKong</option>

编辑:

对于 ALL/TODAY/TOMORROW,如果您在表单中将它们设为菜单或单选按钮会更容易。然后当表单提交时,PHP 可以执行相应的查询。

于 2012-09-03T16:57:39.020 回答
0

您需要对代码进行一些修改

<script language="JavaScript" type="text/javascript">
<!--
function showSelected(show)  //add parameter 'show' to keep value from user click
{
 var selObj = document.getElementById('city');
 var cityTextObj = document.getElementById('cityText');

 var selIndex = selObj.selectedIndex;
 cityTextObj.value = selObj.options[selIndex].text+"&show="+show;   //add variable 'show' to send
}
//-->
</script>

<form id="frm" method="get"><font class="text5">City</font>
  <select id="city" style="width:350px">
    <option value="0">Please select</option>
    <option value="1" <?php if($_GET["cityText"] == "NewYork") echo "selected"; ?> >NewYork</option>
    <option value="2" <?php if($_GET["cityText"] == "Canada") echo "selected"; ?> >Canada</option>
    <option value="3" <?php if($_GET["cityText"] == "Delhi") echo "selected"; ?> >Delhi</option>
    <option value="4" <?php if($_GET["cityText"] == "HongKong") echo "selected"; ?> >HongKong</option>
  </select>
</form>

<a href="#" onclick='showSelected("ALL");document.getElementById("frm").submit();'>ALL</a>
<a href="#" onclick='showSelected("TODAY");document.getElementById("frm").submit();'>TODAY</a>
<a href="#" onclick='showSelected("YESTERDAY");document.getElementById("frm").submit();'>YESTERDAY</a>
<a href="#" onclick='showSelected("TOMORROW");document.getElementById("frm").submit();'>TOMORROW</a>

和你的 php 代码:

<?php
 $show = $_GET["show"]; //using $show you can set the query to ALL,TODAY, or etc
 $sql = "SELECT * FROM general WHERE (day2sql >= now())";
 if(isset($_GET['cityText'])){
$city1 = mysql_real_escape_string($_GET['cityText']);
$sql .= " AND (gcity = '$city1')";  
 }
于 2012-09-03T17:10:28.360 回答