2011-06-08 13 views
0

私のMySQLデータベースにIDの代わりに都市の名前を保存します。(ドロップダウン、Php、Mysql)をmysqlに格納された値で

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::都市のリストを構築するためのPHP関数は次のようなものであるフォームが送信されたときに

</label>City:</label> 
<select id="city" name="city" value="" ><br /> 
<option>Select City...</option> 
</select> 

だから、私は$city = $_POST['city']と値を取得します。 IDとしてMySQLに格納されています。 IDの代わりに市の名前を保存するにはどうすればいいですか?

[編集:]こんにちは!ご返事ありがとうございます。たぶん私は私をよく説明しなかったでしょう。私の問題は、$ row ['idcity']をオプション値に保持して、ドロップダウンリストにajaxを動的に設定する必要があることです。明らかに、データを取得するには、State MysqlテーブルとCity MysqlテーブルをIDフィールドで接続する必要があります。 状態テーブル:

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表:

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'); 
... 

と2つのPHP funcions:

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文字の問題を引き起こす可能性があることがわかりました。最後に、オプション値の代わりに出力関数(具体的には. utf8_encode($row['nomecity']) .)を得る方法がある場合、私は好奇心の問題として疑問に思う。

答えて

0

まず、フィールドIDを変更して、それをvarcharに変更する必要があります。

+0

こんにちは私は分かりません。私のデータベースフィールドはこのようなものです( 'city' varchar(40)NOT NULL、)、idcityオプションの値をajaxのドロップダウンリストに入力します。ありがとうございました。 – anemiCCinema

0

私は確信が持てません。私はあなたのデータベーステーブル(Chumillasに示されているようにデータベーステーブルフィールドではありません)を見たいと思いますが、おそらくこのフラグメントを変更する必要がありますあなたのgetCity()関数内でこの1

'<option value="' . utf8_encode($row['nomecity']) . '">' 

によって

'<option value="' . $row['idcity'] . '">' 

フォームが送信されたとき、これはおそらく、そのを行いますと、あなたが街の名前の代わりにIDを取得

$city = $_POST['city']; 

で値を取得します。

EDIT: ちなみに、市の名前にASCII以外の文字を使用できるため、表の別のフィールドを作成して都市の代表的な名前を保存することを強くお勧めします。たとえば、「ニックネーム」という名前のVARCHARフィールドを作成する場合は、この行を次のように置き換えます。

'<option value="' . $row['nickname'] . '">' 
関連する問題