2012-11-02 7 views
0

데이터베이스에서 데이터를 가져온 테이블에 숫자를 생성하려면 어떻게합니까? 여기 내 상황은 다음과 같습니다.PHP - 클래스 함수를 사용하는 경우 관련 행에 대해 생성 된 숫자를 표시하는 방법

// 작업 파일 호출 나는에 관해서는 상당히 확실하지 오전하지만 데이터

$loads = array(); 
$loadno = $_GET['eig']; 
$result = mysql_query("SELECT * FROM task_load WHERE load_no='$loadno' ORDER BY inv ASC"); 

while($row = mysql_fetch_assoc($result)) 
{ 
    $loads[] = new VerifyLoads($row); 
} 
     foreach($loads as $c){ 
      echo $c->markup_print(); 
     } 

// 클래스 파일

요청

public function markup_print() 
    { 
    $d = &$this->data; 

    return ' 
     <tr id="line-'.$d['id'].'"> 
      <td class="iprint">'.GENERATE_NUMBER_HERE.'</td> 
      <td class="cprint">'.$d['customer_name'].'</td> 
      <td class="cprint">'.$d['inv'].'</td> 
      <td class="rprint">'.$d['value'].'</td> 
      <td class="cprint">'.$d['ctn'].'</td> 
      <td class="iprint"></td> 
      <td class="iprint"></td> 
      <td class="iprint"></td> 
     </tr>  
     '; 
    } 
+0

어떤 숫자를 생성합니까? –

+0

이것은 SQL 주입에 취약합니다. 최소한 $ loadno에 mysql_real_escape_string()을 호출해야만한다. '$ loadno = mysql_real_escape_string ($ _ GET [ 'eig'])' –

+0

tq. 걱정하지 말아라 .. 단지 숫자의 줄을 생성하고 싶다. SQL 주입 방지를위한 당신의 가이드에 감사한다. 멋지다. –

답변

0

를받을 것을 당신이 찾고있는 수의종류 귀하의 출력을 기반으로, 난 당신이 표시되는 현재 레코드에 대한 간단한 라인 번호를 원한다고 가정합니다. 이 경우 어려움은 각 줄이 VerifyLoads 클래스의 별도 인스턴스이기 때문입니다.

이 문제를 해결하려면 여러 가지 방법 중 하나를 택할 수 있습니다. 가장 빠르고 쉬운 방법은 작성한 순서대로 표시하기 때문에 효과적입니다. 이 방법은 VerifyLoads 클래스에 두 개의 새로운 변수를 포함합니다. 첫 번째는 총 라인 수를 유지하기 위해 정적 변수이고 두 번째는 현재 인스턴스의 수를 유지하는 비 정적 변수 : 당신의 레코드를 표시하지 않은 경우,

class VerifyLoads { 
    private $_lineTotal = 1; 
    private $_lineNumber = -1; 

    public function __construct() { 
     $this->_lineNumber = self::$_lineTotal++; 
    } 

    public function markup_print() { 
     $d = &$this->data; 

     return ' 
      <tr id="line-'.$d['id'].'"> 
      <td class="iprint">'.$this->_lineNumber.'</td> 
      <td class="cprint">'.$d['customer_name'].'</td> 
      <td class="cprint">'.$d['inv'].'</td> 
      <td class="rprint">'.$d['value'].'</td> 
      <td class="cprint">'.$d['ctn'].'</td> 
      <td class="iprint"></td> 
      <td class="iprint"></td> 
      <td class="iprint"></td> 
      </tr>  
     '; 
    } 
} 

다른 방법을

class VerifyLoads { 
    private static $_lineNumber = 1; 

    private function _currentLine() { 
     return self::$_lineNumber++; 
    } 

    // .. code as normal .. 
    // .. to access, just call $this->_currentLine() 
} 

두 번째 방법을 사용하여 여러 표시를 사용해야하는 경우 : 같은 순서 당신은 그들이 또한 클래스의 정적 변수를 유지하지만, 현재 행을 반환 로컬 방법을 가지고하는 것입니다 생성 같은 페이지에있는 테이블을 사용하면 resetLineNumber() 메서드를 구현하여 정적 변수를 다시 1으로 설정할 수 있습니다.

플립 사이드에서는 질문에 대해 완전히 오해 한 것 같습니다. 이 경우, 필요한 숫자의 종류를 정교하게 기재하여 수정하십시오.

+0

그게 내가 찾던 것이다. ... tq 나는 곧 시도 할 것이다! –