#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.