(下拉列表,Php和Mysql),在Mysql中存储值
我想在MySQL数据库中存储城市的名称而不是ID。用于构建城市列表的PHP函数如下所示:(下拉列表,Php和Mysql),在Mysql中存储值,php,mysql,Php,Mysql,我想在MySQL数据库中存储城市的名称而不是ID。用于构建城市列表的PHP函数如下所示: public function getCity() { if(isset($this->attiva)) { $base = mysql_connect ('localhost', 'bolmdb', 'bolmdb'); mysql_select_db ('bolmdb', $base);
public function getCity() {
if(isset($this->attiva)) {
$base = mysql_connect ('localhost', 'bolmdb', 'bolmdb');
mysql_select_db ('bolmdb', $base);
$result = mysql_query("SELECT * FROM city WHERE idstate=$_POST[idcity]");
$city = '<option value="0">Select City...</option>';
while($row = mysql_fetch_array($result)) {
$city .= '<option value="' . $row['idcity'] . '">' . utf8_encode($row['nomecity']) . '</option>';
}
return $city;
}
}
城市表:
CREATE TABLE `city` (
`idcity` int(4) NOT NULL auto_increment,
`nomecity` varchar(20) NOT NULL default '',
`idstate` int(4) NOT NULL default '0',
`siglacity` char(2) NOT NULL default '',
PRIMARY KEY (`idprovincia`)
) TYPE=MyISAM AUTO_INCREMENT=109 ;
--
-- Dump dei dati per la tabella `city`
--
INSERT INTO `city` VALUES (1, 'Ancona', 1, 'AN');
...
和两个php函数:
public function getState()
{
if(isset($this->attiva))
{
$base = mysql_connect ('localhost', 'bolmdb', 'bolmdb');
mysql_select_db ('bolmdb', $base);
$result = mysql_query("SELECT * FROM state");
$state = '<option value="0">Select State...</option>';
while($row = mysql_fetch_array($result))
{
$state .= '<option value="' . $row['idstate'] . '">' . utf8_encode($row['nomestate']) . '</option>';
}
return $state;
}
}
public function getCity()
{
if(isset($this->attiva))
{
$base = mysql_connect ('localhost', 'bolmdb', 'bolmdb');
mysql_select_db ('bolmdb', $base);
$result = mysql_query("SELECT * FROM city WHERE idstate=$_POST[idstate]");
$city = '<option value="0">Select City...</option>';
while($row = mysql_fetch_array($result))
{
$city .= '<option value="' . $row['idcity'] . '">' . utf8_encode($row['nomecity']) . '</option>';
}
return $city;
}
}
但是这样,当我用$city=$\u POST['city']得到值时;我将ID值存储在数据库中。我曾想在CITY表中用nometate更改IDSTATE,但我发现这不是更好的解决方法,而且它可能会产生@Gerard评论的非ASCII字符问题。最后,出于好奇,我想知道是否有一种方法可以在特定情况下获得输出函数。utf8_编码$row['nomecity']。而不是选项值。首先,您需要修改字段id,将其更改为varchar。在数据库中将city的id替换为他的名字我不确定,我希望看到您的数据库表不是数据库表字段,正如您向Chumillas显示的那样,但也许您应该更改此片段
'<option value="' . $row['idcity'] . '">'
你得到的是城市的名字而不是身份证
编辑:
顺便说一下,由于城市名称可以包含非ASCII字符,我强烈建议您在表中创建另一个字段来存储城市的代表性名称,但不包含它们。例如,如果创建一个名为“昵称”的VARCHAR字段,则应使用以下行替换所述行:
'<option value="' . $row['nickname'] . '">'
嗨,我不太明白。我的数据库字段类似于city varchar40 NOTNULL,我输入idcity选项值以使用ajax填充下拉列表。非常感谢。
'<option value="' . $row['idcity'] . '">'
'<option value="' . utf8_encode($row['nomecity']) . '">'
$city = $_POST['city'];
'<option value="' . $row['nickname'] . '">'