我想在MySQL数据库中存储城市名称而不是ID。用于构建城市列表的PHP函数是这样的:
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;
}
}
和表单HTML:
</label>City:</label>
<select id="city" name="city" value="" ><br />
<option>Select City...</option>
</select>
因此,在提交表单时,我会使用$city = $_POST['city']
获取值;它作为ID存储在MySQL中。如何存储城市名称代替ID?
[编辑:]嗨!非常感谢您的回复。也许我没有很好地解释我。我的问题是我需要在选项值中保留$ row ['idcity']以使用ajax动态填充下拉列表。显然,我需要通过ID字段将State Mysql表与City Mysql表连接以获取数据。 状态表:
CREATE TABLE `state` (
`idstate` int(4) NOT NULL auto_increment,
`nomestate` varchar(50) NOT NULL default '',
PRIMARY KEY (`idregione`)
) TYPE=MyISAM AUTO_INCREMENT=161 ;
--
-- Dump dei dati per la tabella `state`
--
INSERT INTO `state` VALUES (1, 'Marche');
...
CITY TABLE:
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 = $_POST['city'];
得到值时,我在数据库中存储了ID值。我想在CITY表中使用NOMESTATE更改IDSTATE,但我发现解决它并不是更好的方法,它也可能会创建非ASCII字符问题,@ Gerard会说这些问题。最后,我想知道是否有一种方法可以获得输出函数(在特定情况下为. utf8_encode($row['nomecity']) .
)而不是选项值。
答案 0 :(得分:0)
首先,您需要修改字段ID,将其更改为varchar。在数据库中用他的名字替换城市的id
答案 1 :(得分:0)
我不确定,我更愿意看到您的数据库表(不是数据库表字段,正如您向Chumillas所示),但也许您应该更改此片段
'<option value="' . $row['idcity'] . '">'
这一个
'<option value="' . utf8_encode($row['nomecity']) . '">'
在你的getCity()函数中。
这可能会在提交表单时使用
获取值$city = $_POST['city'];
你得到城市的名称而不是ID。
编辑: 顺便说一下,由于城市名称可以包含非ASCII字符,我强烈建议您在表格中创建另一个字段,以存储城市的代表名称但不包含它们。例如,如果您创建名为“nickname”的VARCHAR字段,则应使用以下内容替换上述行:
'<option value="' . $row['nickname'] . '">'