2017-04-20 3 views
2

Dies ist meine erste Frage hier. Ich versuche, pdf aus einer bestimmten Zeile meiner Datenbank mit mpdf zu generieren. Ich möchte, dass der Code die Daten einer bestimmten Zeile bei Bedarf herunterlädt. Ein Download-Link ist neben jeder Zeile. Wenn der Download-Button gedrückt wird, werden die Daten der Reihe heruntergeladen. Der Code funktioniert, aber es ruft alle Werte aus der Datenbank ab und weist die Werte nebeneinander zu. Hier ist mein pdf phpKann eine bestimmte Zeile aus MySQL-Datenbank nicht abrufen

<?php 

//============================================================== 
//============================================================== 
//============================================================== 
include("mpdf/mpdf.php"); 
include "config.php"; 

$res = mysql_query("select date1, date2 from test"); 
if (!$res) 
    die("query error : ".mysql_error()); 
$mpdf=new mPDF('c','A4','','',32,25,27,25,16,13); 
$mpdf->SetDisplayMode('fullpage'); 
$mpdf->list_indent_first_level = 0; // 1 or 0 - whether to indent the first 
level of a list 
// LOAD a stylesheet 
$stylesheet = file_get_contents('mpdfstyletables.css'); 
$mpdf->WriteHTML($stylesheet,1); // The parameter 1 tells that this is  
css/style only and no body/html/text 
$html = ' 

<center><h3>Test</h3></center> 
<center> 
<table border="1"> 
<tr> 
<th>Date 1</th><th>Date 2</th> 
</tr> 
<tr>'; 

while($row = mysql_fetch_array($res)){ 
$html .= 
    '<td>'.$row['date1'].'</td> 
    <td>' . $row['date2']. '</td>'; 
} 
$html .= ' 
</tr> 
</table></center> 
'; 
$mpdf->WriteHTML($html,2); 
$mpdf->Output('mpdf.pdf','I'); 
exit; 
//============================================================== 
//============================================================== 
//============================================================== 
?> 

Und hier ist der view.php Teil zum Betrachten der Datenbank

<html> 
<body> 
<style> 
    table { 
font-family: arial, sans-serif; 
border-collapse: collapse; 
width: 100%; 
} 

td, th { 

text-align: center; 
padding: 8px; 
} 

tr:nth-child(even) { 
background-color: #dddddd; 
} 

    textarea 
{ 
    width:100%; 
} 
.textwrapper 
{ 
    border:1px solid #dddddd; 
    margin:5px 0; 
    padding:1px; 
} 
    </style> 
<?php 
mysql_connect('localhost','root','') or die(mysql_error()); 
mysql_select_db('test') or die(mysql_error()); 
$query=mysql_query("select * from test limit 0,10") or die(mysql_error()); 
echo'<table border="1" ><th >Id</th><th>Date 1</th><th>Date 2</th>'; 
while($res=mysql_fetch_array($query)) 
{ 
    echo'<tr><td>'.$res['id'].'</td><td>'.$res['date1'].'</td> 
    <td>'.$res['date2'].'</td> 
    <td><a href="gen.php?id=<?php echo $row["id"]; ?> Downlaod</a></td> 
    </tr>'; 
} 
echo'</table>'; 
?> 
</body> 
</html> 

Screenshot of my view.php

+3

Sie müssen eine WHERE-Klausel hinzufügen, um die gewünschte Zeile auszuwählen. –

+0

hinzufügen, wo Bedingung in Abfrage – lalithkumar

Antwort

1

aus Ihrer Sicht Seite generieren,

Es gibt keine Array genannt $row. Eher $res enthält die Ergebnismenge Ihrer Abfrage.

Verwenden Sie stattdessen:

while($res=mysql_fetch_array($query)){ 
    echo"<tr>"; 
     echo "<td>$res['id']</td><td>$res['date1']</td>"; 
     echo "<td>$res['date2']</td>"; 
     echo "<td><a href=\"gen.php?id={$res['id']}\">Download</a></td>"; 
    echo "</tr>"; 
} 

In Ihrem pdf Erzeugungs Code ändern:

$res = mysql_query("select date1, date2 from test"); 

An:

$res = mysql_query("SELECT date1,date2 FROM test WHERE id=".intval($_GET['id'])); 

Bitte, bitte, bitte aktualisieren Sie Ihren mysql Funktionen mysqli_ sofort.

Ich empfehle die Verwendung einer prepared statement, um Ihre Abfrage vor böswilliger Injektion zu schützen. In der Zwischenzeit können Sie intval() als Lazy/Temporary Fix verwenden.

+0

Können Sie mir eine Beispiel-PDF generieren Codeteil? Ich verstehe es nicht. Vielen Dank. –

+0

@NemoL Leider habe ich keine Zeit, Ihr Projekt zu replizieren. Sicher werden Sie Ihren Code schneller testen, weil Sie bereits alle Teile haben. – mickmackusa

+0

Beim Versuch, die view.php anzuzeigen, zeigt es ** Parse error: Syntaxfehler, unerwartete 'id' (T_STRING), erwartet ',' oder ';' ** nach dem Ändern des Codes wie Sie sagten. –

Verwandte Themen