次の形式で選択リストボックスを作成しました
Gender
1|Male
2|Female
次の情報を表に表示したいのですが、男性が「1」、女性が「2」です。
これが私のコードです:
function display_results_submissions(){
$results = db_query("SELECT * FROM {users}");
$header = array( t('Name'), t('Mail'), t('Gender'),);
foreach($results as $result){
$rows[] = array(
$result->name,
$result->mail,
$result->gender,
);
}
return theme('table', array('header' => $header, 'rows'=>$rows));
}
「1」と「2」の代わりに男性または女性を表示したい。どうすればできますか?
性別を保存する場合、データベースに格納される値はキーであり、値ではありません。したがって、データベースには男性/女性ではなく1/2が含まれていました。したがって、クエリは正しく、rows[]
に格納する前にキーをフォーマットするだけで済みました。
function display_results_submissions(){
$results = db_query("SELECT * FROM {users}");
$header = array(t('Name'), t('Mail'), t('Gender'));
foreach($results as $result){
$gender = $result->gender == '1' ? t('Male') : t('Female');
$rows[] = array(
$result->name,
$result->mail,
$gender,
);
}
return theme('table', array('header' => $header, 'rows' => $rows));
}
選択ラベルが変更されてもコードを変更する必要がないため、entity_metadata_wrapperを使用する必要があると思います。
次の行はあなたが望むことをします:
$wrapper = entity_metadata_wrapper('user', $result->uid);
$gender = $wrapper->field_user_gender->label();
したがって、コードは次のようになります。
function display_results_submissions(){
$results = db_query("SELECT * FROM {users}");
$header = array(t('Name'), t('Mail'), t('Gender'));
foreach($results as $result){
$wrapper = entity_metadata_wrapper('user', $result->uid);
$gender = $wrapper->field_user_gender->label();
$rows[] = array(
$result->name,
$result->mail,
$gender,
);
}
return theme('table', array('header' => $header, 'rows' => $rows));
}
http://www.mediacurrent.com/blog/entity-metadata-wrapper に良いブログ投稿があります。