在这里难以编程的新手。
几个月前我开始学习Php(带一点HTML)。
尝试创建一个从Mysql填充的下拉选择表单。正如您将从下面的代码中看到的那样,我认为我已经实现了这一点(如果您发现代码中有任何“错误”,请告诉我。)
我的问题是显示/回显所选的选项/值。无论我从下拉列表中选择和提交什么,只显示第一个项目(在这种情况下:Alabama - 使用stateid 1)。
我尝试过各种我在网上看过的东西,但似乎没什么用。
有很多建议可以调用javascript,但就像我说的那样,我对编程很新,所以 - 一次只能使用一种语言。在跳转到其他语言之前,我想先掌握好php。
当然这可以用php解决,对吗?
顺便说一下,最终目标是创建一个多个 - 大约3个或4个 - 渐进式下拉表格(州,郡,市)。所以,如果你愿意放纵我,我也想学习如何将所选值(例如State)传递给下一个查询/下拉列表。
我现在可以通过提交按钮获得一系列下拉菜单。我最终会学习javascript。
但试图弄清楚如何展示选定的国家让我疯狂。
非常感谢您的帮助/信息。
“STATES”表
CREATE TABLE States (
stateid int NOT NULL AUTO_INCREMENT PRIMARY KEY,
state_name varchar(25) NOT NULL
)
ENGINE=INNODB,
DEFAULT CHARACTER SET utf8;
从DATABSE播放的SELECT / OPTION - “pick_state.php”:
$con = mysql_connect("localhost", "testx", "testx") or die('Could not connect to server');
mysql_select_db("US", $con) or die('Could not connect to database');
$stateid = $_GET['stateid'];
$state_name = $GET['state_name'];
$query = "SELECT stateid,state_name FROM States";
$result = mysql_query($query) or die(mysql_error());
$row = mysql_fetch_array($result, MYSQL_ASSOC) or die(mysql_error());
$stateid = $row['stateid'];
$state_name = $row['state_name'];
echo "Chosen state is: $state_name";
处理文件 - “show_state.php”:
<?php
$con = mysql_connect("localhost", "test", "test") or die('Could not connect to server');
mysql_select_db("US", $con) or die('Could not connect to database');
echo "<form action=\"show_state.php\" method=\"get\">\n";
echo "<select name=\"state_name\">\n";
$query="SELECT stateid,state_name FROM States";
// ALSO : $query = "SELECT * FROM States "; --Does not work either//
$result=mysql_query($query);
while($row=mysql_fetch_array($result,MYSQL_ASSOC))
{
$stateid = $row['stateid'];
$state_name= $row['state_name'];
echo "<option value=\"$stateid\">$state_name</option>";
}
echo "</select>\n";
echo "<input name=\"submit\" type=\"submit\" id=\"stateid\" value=\"submit\" />\n";
echo "</form> \n";
?>
无论我选择和提交什么内容,以下页面始终只显示表格中的第一项:阿拉巴马州
页面显示:“选择状态是:阿拉巴马州”URL当我选择并提交ARKANSAS时:
/show_state.php?state_name=4&submit=submit
这是否意味着它正在检索正确的,已选择/已提交的stateid(在这种情况下:4 - 阿肯色州声明)但只是没有“回显”州名?
在show_state.php
上尝试以下操作$query = "SELECT stateid,state_name FROM States WHERE state_name = $state_name";
PAGE SHOWS:空白
$query = "SELECT stateid,state_name FROM States WHERE stateid= $stateid";
页面显示:“您的SQL语法出错;请查看与您的MySQL服务器版本对应的手册,以便在第1行附近使用正确的语法
if(isset($makeid))
PAGE SHOWS:"Query was empty"
if(isset ($_GET['makeid']))
PAGE SHOWS:"Your Car is a "
答案 0 :(得分:0)
这段代码将始终打印数据库返回的第一个状态:
$state_name = $row['state_name'];
您需要的是更改您的查询:
$query = "SELECT stateid,state_name FROM States where stateid=$state_name";
这显示了一个空白页面,因为你写了这个:
$state_name = $GET['state_name'];
这是$_GET
而非$GET
。所以将此行更改为:
$state_name = $_GET['state_name'];
现在应该运行良好:)
答案 1 :(得分:0)
$_GET['state_name']
无效,因为您没有该名称的表单字段。使用:
if (isset($_GET['stateid'])) {
query = "SELECT state_name FROM States WHERE stateid= " . sprintf("%d", $_GET['stateid']);
$result=mysql_query($query) or die "Query error:".mysql_error();
if (mysql_num_rows($result)) {
$row=mysql_fetch_array($result,MYSQL_ASSOC);
$state_name = $row['state_name'];
} else {
$state_name = 'unselected';
}
要使所选状态默认显示在菜单中,请更改:
echo "<option value=\"$stateid\">$state_name</option>";
为:
echo "<option value=\"$stateid\" . ($stateid == $_GET['stateid']) ? "SELECTED" : "") . ">$state_name</option>";