0

このようなテーブルからデータを出力するのに行き詰まっています。これはプロファイルの表です。

CREATE TABLE `prod_profiles` (
 `p_add` VARCHAR(300) NULL DEFAULT NULL,
 `p_add_s` TINYINT(1) NULL DEFAULT '0',
 `p_phone` VARCHAR(300) NULL DEFAULT NULL,
 `p_phone_s` TINYINT(1) NULL DEFAULT '0',
 //and many more
  )
COLLATE='utf8_general_ci'
ENGINE=MyISAM;

ここで、p_add はアドレス、p_add_s (_s を含むもの) は、ユーザーがこのデータを表示するかどうかを決定する部分です (0 は表示、1 は非表示)。

次のようなデータを表示する必要があります: (これは管理セクションです)

Address data goes here if (p_add_s = 0) {echo 'Hide';} else {echo 'Unhide';}
Phone data goes here if (p_phone_s = 0) {echo 'Hide';} else {echo 'Unhide';}

私の問題は、最初の列を印刷してから、以下のように php のすべての列名を使用せずに _s 列の値を確認するように php に指示する方法です。私はここで迷っています。

私が今やっている方法は次のとおりです。

    while($form_data = mysql_fetch_array($exe_prof_form))
    {
    echo $form_data['sc_p_add']; if ($form_data['sc_p_add_s'] ==0){echo "Hide";}else{echo "Show";
    //Remaining fields go here
    // Any way I can get rid of these fields and do what I'm trying?
    }
4

3 に答える 3

1

SQLステートメントで直接実行しないのはなぜですか? それはあなたの仕事をより簡単にします。

SELECT p_add as `Address`,
       IF(p_add_s = 0, 'Show', 'Hide') as `AddressStatus`,
       p_phone as `PhoneNumber`,
       IF(p_phone_s = 0, 'Show', 'Hide') as `PhoneStatus`,
FROM prod_profiles
于 2012-08-27T06:37:56.940 に答える
1

多分このように:

$fields = array('sc_p_add', 'sc_p_phone');

while($form_data = mysql_fetch_array($exe_prof_form))
{
    foreach($fields as $field){
        echo $field; 
        echo ($form_data[$field.'_s'] == 0) ? "Hide" : "Show";
    }
    //Remaining fields go here
    // Any way I can get rid of these fields and do what I'm trying?
}
于 2012-08-27T06:28:45.353 に答える
1

さて、私はこれを思いつきました:(警告:醜いコードは先に)

while($row = mysql_fetch_array($exe_prof_form)) {   
for ($i=0; $i<mysql_num_fields($exe_prof_form);$i+=2) 
{
echo $i." ".$row[$i];
$r=$i+1;
echo ($row[$r] == 0) ? " Hide <br />" : " Show <br />";
}
}

仕事をします... あなたの考えを教えてください。

于 2012-08-27T08:59:35.033 に答える