2012-08-27 1 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 (1 숨기기이며, 0은 표시입니다) 주소, p_add_s합니다 (_s 아무것도가) 사용자가이 데이터 여부를 표시 할 것인지 결정하는 부분입니다.

내가 좋아하는 데이터를 표시해야합니다

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';} 

내 문제는 내가 모든 열을 사용하지 않고 _s 열 값을 확인 후, 첫 번째 열을 인쇄하는 PHP에게 어떻게입니다 (이 관리자 섹션) 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

관련 문제