2012-08-27 95 views
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? 
    } 
+0

是的。我只是不想使用所有的字段名稱,如$ form_data ['sc_p_add']; if($ form_data ['sc_p_add_s'] == 0){echo「Hide」;} else {echo「Show」;}現在有9個字段,可能會添加更多字段。任何方法來避免這部分只是幾行代碼。 – Norman

+0

我看到了,請參閱下面的答案。 – Rufinus

+1

所以這個問題並不是真的關於SQL,是嗎?你似乎想要在PHP中完成所有的處理。我的意思是,如果是這樣,請考慮刪除'sql'標籤。 –

回答

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 />"; 
} 
} 

做工作......告訴我你的想法。

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

爲什麼不直接在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 
+0

原則上是一個好主意,但我必須說它不喜歡讓我的「模態」或查詢在這種情況下具有表示邏輯的想法。此外,如他在評論中所述,如果想添加更多字段,他必須每次都修改查詢。 (在我的答案中,它只能擴展數組) – Rufinus

+0

那麼如果OP想要稍後添加更多字段,那麼該怎麼辦?我只是建議最簡單的OP方式。我認爲它更好地爲循環中的每條記錄添加條件:D –

+0

輸出這將需要我做同樣的事情,因爲我原來做對了嗎? – Norman