我很难从这样的表中输出数据。这是个人资料表。
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?
}
答案 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 />";
}
}
这份工作......告诉我你的想法。