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

也许是这样的:

$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

为什么不直接在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

好吧,我想出了这个:(警告:前面的丑陋代码)

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 回答