输出一个字段,根据true或false输出下一个字段

时间:2012-08-27 06:21:15

标签: php mysql sql

我很难从这样的表中输出数据。这是个人资料表。

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?
    }

3 个答案:

答案 0 :(得分: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?
}

答案 1 :(得分: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

答案 2 :(得分: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 />";
}
}

这份工作......告诉我你的想法。