2012-01-12 2 views
0

내 프로그램이 실행되는 방식에 문제가 있습니다. 상황은 내가 날짜를 요구하는 양식을 가지고 있고 버튼 제출이 클릭 될 때 동일한 날짜가있는 레코드가 표시됩니다. 그 후 버튼 추출이 있는데, 여기를 클릭하면 결과가 CSV 파일로 내보내집니다. 내가 프롬프트가 이미 메인 페이지가 표시되지 않은 경우에도 표시되는 프로그램을 열려고하면 이제 오류가쿼리 결과 내보내기

<html> 
     <h1> TC/GC Per Sales Frequency Bracket </h1> 
      <body> 
      <?php 
       $df = $_POST['df']; 
       $dt = $_POST['dt']; 
       $db = 'mds_reports'; 

       if($connect = mysql_connect("172.16.8.32", "mds_reports", "password")) 
       $connect = mysql_select_db($db); 
        else die ("Unable to connect".mysql_error()); 

       echo '<form action = "TCFrequencyBracket.php" method = "post">'; 
       echo '<table>'; 

       echo '<tr><td>Date From :</td><td><input name = "df" type = "text" /></td></tr>'; 
       echo '<tr><td>Date To :</td><td><input name = "dt" type = "text" /></td></tr>'; 
       echo '<tr><td><input name = "submit" type = "submit" id = "submit" value = "submit"/></td></tr>'; 
       echo '</table>'; 
       echo '</div>'; 
       echo '</div>'; 
       echo '</form>'; 

       if (isset($_POST['submit'])) 
       { 
        echo '<table border = "1" cellspacing = "1">'; 
        echo '<th>Restaurant Code</th>'; 
        echo '<th>Restaurant Name</th>'; 
        echo '<th>100 & BELOW</th>'; 
        echo '<th>101-200</th>'; 
        echo '<th>201-300</th>'; 
        echo '<th>301-400</th>'; 
        echo '<th>401-500</th>'; 
        echo '<th>501-600</th>'; 
        echo '<th>601-700</th>'; 
        echo '<th>701-800</th>'; 
        echo '<th>801-900</th>'; 
        echo '<th>901-1000</th>'; 
        echo '<th>1001 & ABOVE</th>'; 
        echo '<th>TOTAL TC</th>'; 

        $sql = "SELECT restaurant_master.code, restaurant_master.name, 

           COUNT(CASE WHEN mds_orders.GrossTotal < '100' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '100' AND mds_orders.GrossTotal < '200' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '200' AND mds_orders.GrossTotal < '300' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '300' AND mds_orders.GrossTotal < '400' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '400' AND mds_orders.GrossTotal < '500' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '500' AND mds_orders.GrossTotal < '600' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '600' AND mds_orders.GrossTotal < '700' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '700' AND mds_orders.GrossTotal < '800' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '800' AND mds_orders.GrossTotal < '900' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '900' AND mds_orders.GrossTotal < '1000' 
            THEN 1 END), 

           COUNT(CASE WHEN mds_orders.GrossTotal >= '1000' 
            THEN 1 END), 

           COUNT(mds_orders.GrossTotal) 

           FROM mds_orders 
            JOIN restaurant_master 
             ON mds_orders.RestaurantID = restaurant_master.PKID 

           WHERE mds_orders.OrderDate BETWEEN '$df' AND '$dt' 
             AND mds_orders.StatusFKID = 2 

           GROUP BY restaurant_master.code, restaurant_master.name"; 
        // echo $sql; 

        echo 'Date select from ' . $df; 
        echo ' to ' . $dt; 
        echo '<br /><br />'; 

        $result = mysql_query($sql) 
           or die("SELECT Error: ".mysql_error()); 
        $num_rows = mysql_num_rows($result); 
        print "There are $num_rows records.<br>"; 
        echo '<br />'; 

        while ($get_info = mysql_fetch_row($result)){ 
        print "<tr>\n"; 
        foreach ($get_info as $fields) 
        print "\t<td>$fields</td>\n"; 
        print "</tr>\n"; 
        } 
        echo '</table>'; 

       echo '<form>'; 
       echo '<div>'; 
       echo '</div>'; 
       echo '<table>'; 
       echo '<br><input name = "extract" type = "submit" id = "extract" value = "extract"/></td><td></br></br>'; 
       echo '<tr><td></table></td></td>'; 
       echo '</form>'; 

        $out = ''; 

        if (isset($_POST['extract'])) { 
        $out .= $_POST['extract']; 
        } 

        $filename = $file."_".date("Y-m-d_H-i",time()); 

        print stripslashes($out); 

        exit; 


       } 
      ?> 
     </body> 
</html>` 

:

이 내 코드입니다. 또한 파일의 내용은 결과가 아닌 코드입니다.

+2

다운로드 프롬프트가 표시되는 방식을 알 수 없습니다. 다운로드를 강요하지 않으면, html이 아닌 MIME 형식을 출력하지 않고 html로 출력합니다. –

+1

원하는 코드를 수행하지 않는 코드 외에도이 코드에는 많은 설계 및 구현 문제가 있습니다 (예 : 구형 MySQL 확장 프로그램 인 [SQL injection] (http://unixwiz.net/techtips/sql-injection) 사용). HTML을 출력 할 때 ['die'] (http://www.phpfreaks.com/blog/or-die-must-die)를 사용하여 데이터 액세스와 출력을 혼합하는). [codereview.SE] (http://codereview.stackexchange.com/)에 게시하는 것을 고려하십시오. 실제로 필요한 것은 좋은 [PHP 개발 가이드] (http://stackoverflow.com/questions/2119083/)를 읽는 것입니다. . – outis

답변

1

는 정말 질문을 이해하지 않지만, 몇 가지 문제는 내가 참조 :

  • 내가 파일에 어떤 글을 볼 수 없습니다.
  • $out 변수는 $_POST['extract'] 버튼의 값을 가져옵니다. 항상 extract이고 그 이상은 아닙니다.
0

PHP를 사용하도록 설정 한 웹 서버를 확인해야합니다. 페이지 자체를 내용으로 가져 오는 한 가지 방법은 서버가 PHP를 실행하도록 설정되지 않은 경우입니다. 그런 다음 서버는 페이지를 실행/실행하지 않고 다운로드하라는 메시지를 표시합니다.

코드를 작성하는 데 문제가 발생하기 전에 웹 서버가 PHP 스크립트 또는 파일을 제대로 제공 할 수 있는지 확인하십시오.

다음은 파일이 들어있는 주어진 코드를 어떻게 저장하고 확장자를 .php인지 여부를 확인하십시오.

그런 다음 기본 페이지에 페이지를 어떻게 포함했는지 또는 페이지에 액세스하는 방법을 확인하십시오.