Преобразование данных таблицы PHP в загружаемый PDF — dat не передается в таблицу?

#php #html #mysql

#php #HTML #mysql

Вопрос:

Все данные отображаются в таблице при выборе параметра и публикации его из формы. Но когда данные преобразуются в pdf, значение данных не передается в таблицу pdf. Но если я удалю значение параметра $ из

 $sql = "SELECT 
        id, 
        sensor, 
        location, 
        Parameter, 
        Value, 
        Reading_Time 
    FROM readings 
    WHERE Parameter='$Parameter' 
    ORDER BY id DESC LIMIT 10";
  

Здесь и set Parameter ='Temperature' или любая другая переменная. Код работает нормально.
Я не могу найти, почему данные не передаются в файл PDF?
Кто-нибудь может мне помочь с этим?

 
    <html>

    <head>
        <title>SoftAOX | Generate HTML Table Data To PDF From MySQL Database Using TCPDF In PHP</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
    </head>

    <body>

        <form id="s" method="post">
            <br><label>Parameter</label><br>
            <select name="parameter">
                <option value="">None</option>
                <option value="Rain">Rain</option>
                <option value="Temperature">Temperature</option>
                <option value="Humidity">Humidity</option>
                <option value="Pressure">Pressure</option>

            </select>
            <input type="submit" name="Submit" value="Send">
        </form>

        <?php
      
        $type="";
      if(isset($_POST['parameter'])) {
      //echo "selected parameter: ".$_POST['parameter'];
      $type=$_POST['parameter']; }  

function fetch_data()  {     
      global $type;
      $output = '';  
      $conn = mysqli_connect("localhost", "root", "", "example_esp_data"); 
      $Parameter=$type; 
      $sql = "SELECT id, sensor, location, Parameter, Value, Reading_Time FROM readings WHERE Parameter='$Parameter' ORDER BY id DESC LIMIT 10";  
      $result = mysqli_query($conn, $sql);  
            while($row = mysqli_fetch_array($result))  
            {       
                $t = $row["Reading_Time"] 19800;
                                $row_Time = date("j-m-Y H:i:s",$t); 
                 $output .= '<tr>  
                                <td>'.$row["sensor"].'</td>  
                                <td>'.$row["location"].'</td>  
                                <td>'.$row["Parameter"].'</td>  
                                <td>'.$row["Value"].'</td>  
                                <td>'.$row_Time .'</td> 
                            </tr>  
                                '; 
            }  
      
    return   $output; 
            
 } 

    if(isset($_POST["generate_pdf"]))  
 {  
      require_once('tcpdf/tcpdf.php');  
      $obj_pdf = new TCPDF('P', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);  
      $obj_pdf->SetCreator(PDF_CREATOR);  
      $obj_pdf->SetTitle("Generate HTML Table Data To PDF From MySQL Database Using TCPDF In PHP");  
      $obj_pdf->SetHeaderData('', '', PDF_HEADER_TITLE, PDF_HEADER_STRING);  
      $obj_pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));  
      $obj_pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));  
      $obj_pdf->SetDefaultMonospacedFont('helvetica');  
      $obj_pdf->SetFooterMargin(PDF_MARGIN_FOOTER);  
      $obj_pdf->SetMargins(PDF_MARGIN_LEFT, '10', PDF_MARGIN_RIGHT);  
      $obj_pdf->setPrintHeader(false);  
      $obj_pdf->setPrintFooter(false);  
      $obj_pdf->SetAutoPageBreak(TRUE, 10);  
      $obj_pdf->SetFont('helvetica', '', 11);  
      $obj_pdf->AddPage();  
      $content = '';  
      $content .= '  
      <h4 align="center">Generate HTML Table Data To PDF From MySQL Database Using TCPDF In PHP</h4><br /> 
      <table border="1" cellspacing="0" cellpadding="3">  
           <tr>  
                <th>Sensor</th>
                <th>Location</th>
                <th>Parameter</th>
                <th>Value</th>
                <th>Reading_Time</th>
           </tr>  
      ';  
      $content .= fetch_data();  
      $content .= '</table>';  
      $obj_pdf->writeHTML($content);  
      ob_end_clean();
      $obj_pdf->Output('file.pdf', 'I'); 
     
 }  
 ?>



        <br />
        <div class="container">
            <h4 align="center"> <?php echo $Parameter .""."Weather Data" ; ?></h4><br />
            <div class="table-responsive">
                <div class="col-md-12" align="right">
                    <form method="post">
                        <input type="submit" name="generate_pdf" class="btn btn-success" value="Download" />
                    </form>
                </div>
                <br />
                <br />
                <table class="table table-bordered">
                    <tr>
                        <th>Sensor</th>
                        <th>Location</th>
                        <th>Parameter</th>
                        <th>Value</th>
                        <th>Reading_Time</th>
                    </tr>
                    <?php  
                     echo fetch_data(); 
                     
                     ?>
                </table>
            </div>
        </div>
    </body>

    </html>






    <?php ini_set("display_errors", 1);
        ini_set("track_errors", 1);
        ini_set("html_errors", 1);
        error_reporting(E_ALL);

        require './Database.php'; 
?> 
  

Комментарии:

1. Каково содержимое вашей $content переменной непосредственно перед передачей ее в TCPDF?

2. Внимание! Вы широко открыты для атак SQL-инъекций ! Вы должны использовать параметризованные подготовленные операторы вместо использования полностью неэкранированных пользовательских данных непосредственно в ваших запросах, подобных этому. Никогда, никогда, никогда не доверяйте пользовательскому вводу. Начните с рефакторинга кода и посмотрите, осталась ли у вас та же проблема.

3. Вы определяете тип $ и присваиваете его параметру $. Как я вижу, параметр $пуст при формировании параметра $sql. echo $; перед формированием $ sql для проверки значения параметра $.

4. Спасибо, сэр. я пытался, но данные все равно не передаются в pdf.