[英](drop downs, Php and Mysql) with stored value in Mysql
我想在我的 MySQL 數據庫中存儲城市名稱而不是 ID。 用於構建城市列表的 PHP function 是這樣的:
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 動態填充下拉列表,顯然。 我有必要連接Z46A2A41CC6EC6E5204816A2D04634545DZ Z9EDB3C572B56B56B91542AF65948051868181Z與Z9EDB3C572B56B91542AF6515151515151515151515151515151515151515151515151515151515151515159888888888889888888888888888889898999士蘭數意士
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');
...
城市表:
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,但我發現這不是解決它的更好方法,而且它可能會產生關於 @Gerard 評論的非 ASCII 字符問題。 最后,我想知道是否有辦法獲得 output function (在特定情況下是 .utf8_encode . utf8_encode($row['nomecity']).
)而不是選項值。
首先需要修改字段id,改成varchar。 在數據庫中用他的名字替換城市的id
我不確定,我希望看到您的數據庫表(不是數據庫表字段,正如您向 Chumillas 展示的那樣),但也許您應該更改此片段
'<option value="' . $row['idcity'] . '">'
通過這個
'<option value="' . utf8_encode($row['nomecity']) . '">'
在你的 getCity() function 里面。
這可能會使,當提交表單並且您獲得值時
$city = $_POST['city'];
你得到的是城市的名字而不是 ID。
編輯:順便說一句,由於城市名稱可以包含非 ASCII 字符,我強烈建議您在表中創建另一個字段來存儲城市的代表名稱,但沒有它們。 例如,如果您創建一個名為 'nickname' 的 VARCHAR 字段,則應將上述行替換為以下行:
'<option value="' . $row['nickname'] . '">'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.