2012-02-08 5 views
0

작업중인 애플리케이션이 있는데, 이는 Dreamweaver CS5에서 생성되었습니다. 코드는 매우 우스꽝 스럽습니다. 사이트를 만든 사람이 도움을 줄 수 없으므로 코드를 고민하고 가능한 한 일부를 "단순화"하려고합니다. 나는 PHP로 초급 중급의 이상입니다. 마치 그렇게 어려울 수없는 것처럼 보입니다. 응용 프로그램에서 수행해야 할 작업에 대한 설명 : 고객 테이블에 데이터가 표시되어야하며 테이블에서 접두어, 접미사 및 상태가 표시되어야하지만 기본 키에 대한 자동 증가 ID가 있으며 텍스트 부분은 표시하지 않고 숫자 만 표시합니다. 따라서 전임자는 숫자를 데이터로 변환하는 else 문을 사용했습니다 (코드에서 얼마나 귀찮은 지 알 수 있습니다). 여기 내 코드가 있습니다 :MySql에서 배열로 데이터를 가져온 다음 배열의 데이터를 기존 변수와 비교합니다.

<?php require_once('Connections/customer.php'); ?><?php 
if (!function_exists("GetSQLValueString")) { 
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") 
{ 
    if (PHP_VERSION < 6) { 
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; 
    } 

    $theValue = function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue); 

switch ($theType) { 
case "text": 
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
    break;  
case "long": 
case "int": 
    $theValue = ($theValue != "") ? intval($theValue) : "NULL"; 
    break; 
case "double": 
    $theValue = ($theValue != "") ? doubleval($theValue) : "NULL"; 
    break; 
case "date": 
    $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL"; 
    break; 
case "defined": 
    $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue; 
    break; 
} 
    return $theValue; 
} 
} 

$maxRows_DetailRS1 = 30; 
$pageNum_DetailRS1 = 0; 
if (isset($_GET['pageNum_DetailRS1'])) { 
$pageNum_DetailRS1 = $_GET['pageNum_DetailRS1']; 
} 
$startRow_DetailRS1 = $pageNum_DetailRS1 * $maxRows_DetailRS1; 

$colname_DetailRS1 = "-1"; 
if (isset($_GET['recordID'])) { 
    $colname_DetailRS1 = $_GET['recordID']; 
    } 
    mysql_select_db($database_customer, $customer); 
    $query_DetailRS1 = sprintf("SELECT * FROM customer WHERE id = %s", GetSQLValueString   ($colname_DetailRS1, "int")); 
    $query_limit_DetailRS1 = sprintf("%s LIMIT %d, %d", $query_DetailRS1, $startRow_DetailRS1,   $maxRows_DetailRS1); 
    $DetailRS1 = mysql_query($query_limit_DetailRS1, $customer) or die(mysql_error()); 
    $row_DetailRS1 = mysql_fetch_assoc($DetailRS1); 

    if (isset($_GET['totalRows_DetailRS1'])) { 
    $totalRows_DetailRS1 = $_GET['totalRows_DetailRS1']; 
    } else { 
    $all_DetailRS1 = mysql_query($query_DetailRS1); 
    $totalRows_DetailRS1 = mysql_num_rows($all_DetailRS1); 
} 
    $totalPages_DetailRS1 = ceil($totalRows_DetailRS1/$maxRows_DetailRS1)-1; 

    $query = "SELECT id, state_abbr FROM state WHERE id =".$row_DetailRS1['state'].""; 

    $result = mysql_select_db($database_customer, $customer) 
    or die($query."<br/><br/>".mysql_error()); 

?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0  Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<link href="css/style.css" rel="stylesheet" type="text/css" /> 
</head> 

<body> 

<table width="41%" border="0" align="center" cellpadding="2" cellspacing="5"> 
    <tr> 
    <td width="157">Id</td> 
    <td width="469"><?php echo $row_DetailRS1['id']; ?></td> 
</tr> 
<tr> 
    <td>Prefix</td> 
    <td><?php if($row_DetailRS1['prefix']==1) { 
    echo 'Mr.';} 
    else if($row_DetailRS1['prefix']==2) { 
     echo 'Mrs.'; } 
     else if($row_DetailRS1['prefix']==3) { 
      echo 'Ms.'; } 
      else if($row_DetailRS1['prefix']==4) { 
       echo 'Mr. &amp; Mrs.'; } 
       else if($row_DetailRS1['prefix']==5) { 
        echo 'Dr.'; } 
        else if($row_DetailRS1['prefix']==6) { 
         echo 'Dr. &amp; Mrs.'; } 
         else if($row_DetailRS1['prefix']==7) { 
          echo 'Mr. &amp; Dr.'; } 
          else if($row_DetailRS1['prefix']==8) { 
           echo 'Drs.'; } 
           else if($row_DetailRS1['prefix']==9) { 
            echo 'Hon.';} 
            else if($row_DetailRS1['prefix']==10) { 
             echo 'Hon. &amp; Mrs.'; } 
             else if($row_DetailRS1['prefix']==11) { 
              echo 'Mr. &amp; Hon.'; } 
              else if($row_DetailRS1['prefix']==12) { 
               echo 'Hons.'; } 
               else if($row_DetailRS1['prefix']==13) { 
                echo 'Rev.'; } 
                else if($row_DetailRS1['prefix']==14) { 
                 echo 'Rev. &amp; Mrs.'; } 
                 else if($row_DetailRS1['prefix']==15) { 
                  echo 'Atty.'; } 
                  else if($row_DetailRS1['prefix']==16) { 
                   echo 'Atty. &amp; Mrs.'; } 
                   else if($row_DetailRS1['prefix']==17) { 
                    echo 'Mr. &amp; Atty.'; } 
                    else if($row_DetailRS1['prefix']==18) { 
                     echo 'Attys.'; } 
                     else if($row_DetailRS1['prefix']==19) { 
                      echo 'Sen.'; } 
                      else if($row_DetailRS1['prefix']==20) { 
                       echo 'Sen &amp; Mrs.'; } 
                       else if($row_DetailRS1['prefix']==21) { 
                        echo 'Mrs. &amp; Sen.'; } 
                        else if($row_DetailRS1['prefix']==22) { 
                         echo 'Sens.'; } 
                         else if($row_DetailRS1['prefix']==23) { 
                          echo 'Rep.'; } 
                          else if($row_DetailRS1['prefix']==24) { 
                           echo 'Rep. &amp; Mrs.'; } 
                           else if($row_DetailRS1['prefix']==25) { 
                            echo 'Mr. &amp; Rep.'; } 
                            else if($row_DetailRS1['prefix']==26) { 
                             echo 'Reps.'; } 
                             else if($row_DetailRS1['prefix']==27) { 
                              echo 'Mayor'; } 
                              else if($row_DetailRS1['prefix']==28) { 
                               echo 'Admin'; }; ?></td> 
    </tr> 
    <tr> 
    <td>Business Name</td> 
    <td><?php echo $row_DetailRS1['businessName']; ?></td> 
</tr> 
<tr> 
<td>First Name</td> 
<td><?php echo $row_DetailRS1['firstName']; ?></td> 
</tr> 
<tr> 
<td>Spouse Name</td> 
<td><?php echo $row_DetailRS1['spouseName']; ?></td> 
</tr> 
<tr> 
<td>Last Name</td> 
<td><?php echo $row_DetailRS1['lastName']; ?></td> 
</tr> 
<tr> 
<td>Suffix</td> 
<td><?php if($row_DetailRS1['suffix']==1) { 
    echo 'Sr.';} 
    else if($row_DetailRS1['suffix']==2) { 
     echo 'Jr.'; } 
     else if($row_DetailRS1['suffix']==3) { 
      echo 'I'; } 
      else if($row_DetailRS1['suffix']==4) { 
       echo 'II' ; } 
       else if($row_DetailRS1['suffix']==5) { 
        echo 'III'; } 
        else if($row_DetailRS1['suffix']==6) { 
         echo 'IV'; } 
         else if($row_DetailRS1['suffix']==7) { 
          echo 'V'; } 
          else if($row_DetailRS1['suffix']==8) { 
           echo 'Esq.'; }; ?></td> 
    </tr> 
    <tr> 
    <td>Address</td> 
    <td><?php echo $row_DetailRS1['address']; ?></td> 
</tr> 
<tr> 
<td>Address Continued</td> 
<td><?php echo $row_DetailRS1['addressCont']; ?></td> 
</tr> 
<tr> 
<td>City</td> 
<td><?php echo $row_DetailRS1['city']; ?></td> 
</tr> 
<tr> 
<td>State</td> 
<td><?php while($row = mysql_fetch_assoc($customer, $result)) { 
    if($row_DetailRS1['state'] == $row) { 
     echo '$row';}} ?></td> 
</tr> 
<tr> 
<td>Zip Code</td> 
<td><?php echo $row_DetailRS1['zipCode']; ?></td> 
</tr> 
<tr> 
<td>Phone Number</td> 
<td><?php echo $row_DetailRS1['phoneNum']; ?></td> 
</tr> 
<tr> 
<td>Alt. Phone Number</td> 
<td><?php echo $row_DetailRS1['altPhoneNum']; ?></td> 
</tr> 
<tr> 
<td>E-mail</td> 
<td><?php echo $row_DetailRS1['email']; ?></td> 
</tr> 
<tr> 
<td>Board Member</td> 
<td><?php echo $row_DetailRS1['boardMember']; ?></td> 
</tr> 
<tr> 
<td>Trustee</td> 
<td><?php echo $row_DetailRS1['trustee']; ?></td> 
</tr> 
<tr> 
<td>Musician</td> 
<td><?php echo $row_DetailRS1['musician']; ?></td> 
</tr> 
<tr> 
    <td>Support Staff</td> 
<td><?php echo $row_DetailRS1['supportStaff']; ?></td> 
</tr> 
<tr> 
<td>Active</td> 
<td><?php echo $row_DetailRS1['active']; ?></td> 
</tr> 
<tr> 
<td>Deceased</td> 
<td><?php echo $row_DetailRS1['deceased']; ?></td> 
</tr> 
<tr> 
<td>Comments</td> 
<td><?php echo $row_DetailRS1['comments']; ?></td> 
</tr> 
</table> 
</body> 
</html><?php 
mysql_free_result($DetailRS1); ?> 
+0

당신은 배열로 보면 하나 라이너로 그 horid ELSEIF 블록을 변경하여 시작할 수 있습니다. – quickshiftin

답변

1

나는이 코드를 다시 작성해야합니다. PHP에서 SQL로 수행해야하는 작업이 많습니다. 새로운 MySQL 테이블을 생성 할 수 있습니까? 그렇다면 2 개의 새 테이블 (접두어, 접미사)을 만들고 기본 쿼리로 상태 쿼리를 끌어와 별도의 쿼리 (추가 DB 히트)를 수행하지 않을 것입니다. 예를 들어

, 여기에 내가 접두사 테이블을 할 거라고하는 방법입니다

select c.*, p.prefix_string 
    from customer c, prefixes p 
    where c.prefix = p.prefix_id; 

그럼 당신은 사용할 수있을 것입니다 :

create table prefixes (
    prefix_id integer primary key, 
    prefix_string varchar(20) 
); 

insert into prefixes (prefix_id, prefix_string) values (1, 'Mr.'); 
insert into prefixes (prefix_id, prefix_string) values (2, 'Mrs.'); 
... etc ... 

을 다음 주 쿼리는 같은 것이 될 것이다 prefix_string if/else 혼란 대신 직접. 접미사 및 상태와 동일하게 수행하십시오.

테이블을 만들 수없는 경우 정수 ID를 적절한 문자열로 변환하는 PHP 함수를 만듭니다.

+0

이미 접미사 및 접미사에 대한 표가 있습니다. 내 표는 다음과 같습니다. 광고 유형, 광고주, 의자, 신용 카드 유형, 고객, 기증자, donortype, 이벤트, 지불 유형, 접두사, 스폰서 유형, 상태, 하위 패키지, 구독자, 접미어, 사용자. 접두사 및 접미어 테이블은 다음과 같이 구성됩니다. 접두어 -id (int (11)), suffixType (text); suffix-id (int (11)), suffixType (text); state_id (tinyint (4)), state (varchar (32)), state_abbr (varchar (8)) –

0

문제가 발생하는 경우이 코드에서 문제를 해결해야 문제를 해결할 수 있습니다. 현재로서는 약간 지저분합니다. recordIDGETVAR이 데이터베이스의 사용자 계정을 조회하는 데 사용되고 있습니다. 요청에서 ID가 전달되고 사용자 계정이 데이터베이스에서로드되고 있는지 확인해야합니다. 그런 다음 다른 것이 작동하지 않을 수도 있다는 것을 알아 내고 단계별로 코드를 정리할 수 있습니다. 나는 , 그 밖의 경우는 블록을 청소하여 시작했습니다.

접두사 블록

$aPrefixMap = array(
    1  => 'Mr.', 
    2  => 'Mrs.', 
    3  => 'Ms.', 
    4  => 'Mr. &amp; Mrs.', 
    5  => 'Dr.', 
    6  => 'Dr. &amp; Mrs.', 
    7  => 'Mr. &amp; Dr.', 
    8  => 'Drs.', 
    9  => 'Hon.', 
    10  => 'Hon. &amp; Mrs.', 
    11  => 'Mr. &amp; Hon.', 
    12  => 'Hons.', 
    13  => 'Rev.', 
    14  => 'Rev. &amp; Mrs.', 
    15  => 'Atty.', 
    16  => 'Atty. &amp; Mrs.', 
    17  => 'Mr. &amp; Atty.', 
    18  => 'Attys.', 
    19  => 'Sen.', 
    20  => 'Sen &amp; Mrs.', 
    21  => 'Mrs. &amp; Sen.', 
    22  => 'Sens.', 
    23  => 'Rep.', 
    24  => 'Rep. &amp; Mrs.', 
    25  => 'Mr. &amp; Rep.', 
    26  => 'Reps.', 
    27  => 'Mayor', 
    28  => 'Admin' 
); 

$iPrefix = $row_DetailRS1['prefix']; 
if(array_key_exists($iPrefix, $aPrefixMap)) 
    echo $aPrefixMap[$iPrefix]; 

접미사 블록

$aRowDetailMap = array(
    1 => 'Sr.', 
    2 => 'Jr.', 
    3 => 'I', 
    4 => 'II', 
    5 => 'III', 
    6 => 'IV', 
    7 => 'V', 
    8 => 'Esq.' 
); 

$iDetailSuffix = $row_DetailRS1['suffix']; 
if(array_key_exists($iDetailSuffix, $aRowDetailMap)) 
    echo $aRowDetailMap[$iDetailSuffix]; 
+0

힌트를 보내 주셔서 감사 드리며, 고객 기록 정보를이 세부 정보 페이지로 전달합니다. 접두사, 접미사 및 상태를 나열하고 있습니다. 코드는 테이블의 항목에서 기본 키를 뽑아 내고 테이블을 정규화하고 중복성을 최소화했으며 응용 프로그램에서 수행해야하는 작업과 관련된 코드는 매우 구체적이지만 코드는 매우 다양합니다. 지저분하고 따라 다니기가 어렵다. 귀하의 도움을 많이 주시면 감사하겠습니다. –

+0

위의 코드는 모든 값을 나열하는 대신 테이블에서 배열 데이터를 가져 오는 방법이 있습니까? 아마도 다음과 같을 것입니다 :

+0

@MikeM 네, 그런 쿼리는 데이터를 배열로 가져와야하지만'$ array [] = $ row [0];'을'$ array [$ row [0] ] = $ row [1];'그래서 $ array [id] => state_abbr_와 같은 배열을가집니다. 데이터베이스의 ID와 웹 페이지의 ID가 서로 연관되도록주의하십시오. – quickshiftin

관련 문제