簡體   English   中英

(下拉菜單,Php 和 Mysql)在 Mysql 中存儲值

[英](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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM