2012-08-02 4 views
-1

PHP로 응용 프로그램을 만들었고 TCPDF로 보고서를 작성했는데 문제가 없으며 select 쿼리가 제대로 실행됩니다. 그러나 데이터를 매우 조심스럽게 살펴보면 첫 번째 데이터가 누락 된 것으로 나타났습니다.내 쿼리 결과가 완료되지 않은 이유는 무엇입니까?

간단한 예제 쿼리 : 내가 MySQL의에서이 쿼리를 실행하면

SELECT * FROM tb_expedition 

, 모든 데이터가 표시됩니다. 쿼리가 내 PHP 프로그램에서 실행되면 결과는 아직 완료되지 않습니다. 총 데이터가 20 행인 경우 PHP에서 19 행만 표시되고 첫 번째 데이터가 누락됩니다. 에코 중 일부는 두 번째 줄은 정말 이상한 것을

$query = mysql_query($sql); 
$data = mysql_fetch_array($sql); 
while($data = mysql_fetch_array($query)) 

제거와이, 당신의 라인의 일부입니다

<?php 

require_once('tcpdf/config/lang/eng.php'); 
require_once('tcpdf/tcpdf.php'); 

// create new PDF document 
include "koneksi.php";//conection file 

    $period=$_GET[PERIOD]; 

    $sql = "SELECT * FROM tb_exp_expor where period = ' $period'"; 

    $hasil = mysql_query($sql); 
    $data = mysql_fetch_array($hasil); 

    $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false); 

    // set font 
     $pdf->SetFont('times', '', 11); 

// landscape 
    $pdf->addPage('L', 'LETTER'); 

    $html = ' 
<table border="1" cellspacing="3" cellpadding="4"> 
    <tr><td colspan="9" align="center"><h2>Form Pantauan Expedisi Export</h2></td></tr> 
    <tr> 
     <th align="center"><b>Tanggal</b></th> 
     <th align="center"><b>Nama Expedisi</b></th> 
     <th align="center"><b>Nama Distributor</b></th> 
     <th align="center"><b>Kota Tujuan</b></th> 
     <th align="center"><b>No Faktur</b></th> 
     <th align="center"><b>Kondisi Armada Pengiriman</b></th> 
     <th align="center"><b>Ketepatan Jumlah</b></th> 
     <th align="center"><b>Ketepatan Waktu Kirim</b></th> 
     <th align="center"><b>Keterangan</b></th> 
    </tr></table>'; 
    $no=0; 
    while ($data = mysql_fetch_array($hasil)) 
    { 

    $html .= '<table border="1"><tr><td align="center">'.$data['tgl'].'</td> 
        <td align="center">'.$data['nama_exp_expor'].'</td> 
        <td align="center">'.$data['nama_distributor'].'</td> 
        <td align="center">'.$data['kota_tujuan'].'</td> 
        <td align="center">'.$data['no_faktur'].'</td> 
        <td align="center">'.$data['kon_armada'].'</td> 
        <td align="center">'.$data['ketepatan_jml'].'</td> 
        <td align="center">'.$data['ketepatan_wkt_kirim'].'</td> 
        <td align="center">'.$data['ket'].'</td> 
        </tr></table> '; 

    $no++;    
    } 

    $pdf->writeHTML($html, true, false, true, false, ''); 



    $pdf->Output('Daftar_Expedisi_Local', 'I'); 

?> 
+3

데이터를받는 PHP 코드에 문제가있을 가능성이 큽니다. 우리에게 보여줘. – DCoder

+0

mysql 문이 좋다. 나머지 코드를 보여주십시오. –

+0

@DCoder 코드 – MudMan23

답변

2

:

내 코드, 당신은 여분의 fetch_array을하지만, sql-string을 인수로 사용합니까? 그건별로 도움이 안돼, 그게 오류 야?

예를 들어, 필요없는 "fetch_array"를 추가로 수행하지 말고이 코드 중 일부를 정리해야합니다. 그 이후에 작동하지 않으면 디버깅에 필요하지 않은 불필요한 행 (에코, 색 등)을 모두 제거하십시오. 그런 식으로 진행되는 것을 더 빨리 알 수 있습니다.

실제로이 작업을 수행하는 동안 mysql_ 함수에서 이동해야합니다. 이 확장의

사용이 권장되지 매뉴얼 http://php.net/manual/en/function.mysql-fetch-array.php

제안 된 대안이 좋은 큰 읽기 경고를 읽어보십시오. 대신 MySQLi 또는 PDO_MySQL 확장자를 사용해야합니다. 자세한 내용은 MySQL : API 가이드 선택 및 관련 FAQ를 참조하십시오. 이 기능 대안은 다음과 같습니다

mysqli_fetch_array()
PDOStatement을 ::

지금 시도() 가져 오기이하시기 바랍니다. 이것은 당신이 "가능한 한 작은"예로서 처음에 무엇을해야했는지입니다.

<?php 
    include "koneksi.php";//conection file 
    $period=$_GET[PERIOD]; 
    $sql = "SELECT * FROM tb_exp_expor where period = ' $period'"; 
    var_dump($sql);//you can check this query in your database manually 

    $hasil = mysql_query($sql);  
    //NO FETCH ARRAY HERE! 

    while ($data = mysql_fetch_array($hasil)){ 
     var_dump($data); 
    } 

?> 

을주의하십시오 : 추가 패치 배열의

  1. REMOVAL.
  2. 디버깅을위한 모든 HTML 및 PDF 파일을 삭제합니다.
  3. 가능한 한 작은 자체 코드.
+0

고마워, 나는 이미 여분의 패치 배열을 삭제하지만, 그것도 여전히 사실, tcpdf에서 누락 된 데이터를 다시 확인합니다. 그러나 쿼리는 여전히 간단합니다. – MudMan23

+0

나는 당신의 충고를 모두 읽고 내 스크립트로 시도해 보았지만 여전히 틀렸다. 나의 PHP 결과는 여전히 복잡하지 않고 첫 번째 행을 빠뜨리지 않았다. 나는 그것에 대해 혼란 스럽다. 아무도 도와주지? – MudMan23

+0

모든 것을 시도하는 한, 문제를 테스트하는 데 필요하지 않은 모든 것을 제거하도록 특별히 권고했습니다. 너의 메아리. 그렇게하고 코드를 여기에 표시하십시오. 오직 하나의 쿼리 만 수행 할 수있는 스크립트를 작성한 다음 결과의 ID (또는 무언가) 만 에코합니다. 가능하면 작고 자급합니다. 그런 다음 그 코드를 여기에 보여줍니다. 좋은 변화는이 과정에서 버그를 발견 할 수 있지만 그렇지 않다면 여기에 게시하는 것이 될 것입니다. HTML, 색상 등은 여기 중요하지 않습니다. – Nanne

관련 문제