Auslesen einer Datei -> blob in MYSQL DB
Michl75
- php
0 Michl75 - Nachtrag0 Tom0 Michl75
Hallo Forum,
bitte um eure Unterstützung... da ich nicht weiterkomme!
Habe Datein direkt in eine MySQL DB eingebettet... klappt wunderbar.
Beim auslesen der DB mittels:
<?php
/* Verbindung aufbauen, auswählen einer Datenbank */
$link = mysql_connect("localhost", "root", "KENNWORT")
or die("<p>FEHLER: Keine Verbindung möglich: <p>" . mysql_error());
mysql_select_db("meine_dokumente") or die("<p>FEHLER: Auswahl der Datenbank fehlgeschlagen<p>");
/* ausführen einer SQL Anfrage */
$query = "SELECT * FROM dokumente";
$result = mysql_query($query) or die("Anfrage fehlgeschlagen: " . mysql_error());
/* Ausgabe der Ergebnisse in HTML */
echo "<table class="Icopal-12px">\n";
echo "<tr valign="top">\n";
echo "<td></td><td><b>ID</b></td><td><b>Firmen ID.</b></td><td><b>Kategorie</b></td><td><b>Erfasst am</b></td><td><b>Beschreibung</b></td><td><b>Author</b></td><td><b>Grösse</b></td>";
echo "</tr>\n";
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
echo "<tr valign="top">";
if($row[2] == "application/pdf") {
$art = "<img src="Icons/Files-PDF.png" width="32" height="32" />"; }
if($row[2] == "application/vnd.ms-excel") {
$art = "<img src="Icons/Files-Exel.png" width="32" height="32" />"; }
if($row[2] == "application/msword") {
$art = "<img src="Icons/Files-Word.png" width="32" height="32" />"; }
echo "<td>$art</td><td>$row[0]</td><td>$row[9]</td><td>$row[6]</td><td>$row[7]</td><td>$row[5]</td><td>$row[8]</td><td>$row[4]</td><td><a href="KUST01_10_Kundenstamm_Dokumente_oeffnen.php?D_ID=$row[0]">Datei öffnen</a></td>";
echo "</tr>";
}
echo "</table>\n";
/* Freigeben des Resultsets */
mysql_free_result($result);
/* schliessen der Verbinung */
mysql_close($link);
?>
übergebe ich die daten an dieses PHP:
<?php
echo $_GET['d_id'];
// hier sind die mySQL Daten einzufüllen
@mysql_connect("localhost", "root", "KENNWORT");
@mysql_select_db("meine_dokumente");
// Daten über die gewünschte Datei aus mySQL lesen
$sql = "SELECT * FROM dokumente WHERE id = '".$_GET['d_id']."' LIMIT 1";
$result = @mysql_query($sql);
$row = mysql_fetch_object($result);
// Den Browser zum Download zwingen
header("Content-type: " . $row->filetype);
header("Content-disposition: attachment; filename=".$row->filename.";");
header("Content-length: " . $row->filesize);
// Daten dekodieren und an den Browser senden
echo base64_decode($row->filecontent);
//exit;
?>
Jedoch klappt das nicht... Es kommt zwar ein fenster in dem steht Offnen - Speichern - Abbrechen, aber beim öffnen passiert eigentlich nichts ausser das eine neue Seite aufgemacht wird und das gleich von vorne passiert.
Beim Speichern wird dann die PHP-Web Seite gespeichert...
Könnt Ihr mir sagen was ich im 2. PHP verändern muß, damit es klappt...
Sprich öffnen und schon wird die Datei im jeweiligen Programm (z.B. PDF oder WORD) angezeigt?
Viele Grüße
Michael
Hallo nochmal,
also nun hab ich es zwar geschafft, daß er Daten aus der SQL DB ausliest, aber es wird kein Download mehr angeboten... wird alles am Bildschirm ausgegeben...
PHP :
<?php
$ID = $_GET['D_ID'];
echo "$ID";
// hier sind die mySQL Daten einzufüllen
@mysql_connect("localhost", "root", "KENNWORT");
@mysql_select_db("meine_dokumente");
// Daten über die gewünschte Datei aus mySQL lesen
$sql = "SELECT * FROM dokumente WHERE id = '$ID' LIMIT 1";
$result = @mysql_query($sql);
$row = mysql_fetch_object($result);
echo "$ID $result";
// Den Browser zum Download zwingen
header("Content-type: " . $row->filetype);
header("Content-disposition: attachment; filename=".$row->filename.";");
header("Content-length: " . $row->filesize);
// Daten dekodieren und an den Browser senden
echo base64_decode($row->filecontent);
//exit;
?>
Das Ergebnis:
66 Resource id #3
Warning: Cannot modify header information - headers already sent by (output started at C:\FIRMA\KUST01_10_Kundenstamm_Dokumente_oeffnen.php:4) in C:\FIRMA\KUST01_10_Kundenstamm_Dokumente_oeffnen.php on line 19
Warning: Cannot modify header information - headers already sent by (output started at C:\FIRMA\KUST01_10_Kundenstamm_Dokumente_oeffnen.php:4) in C:\FIRMA\KUST01_10_Kundenstamm_Dokumente_oeffnen.php on line 20
Warning: Cannot modify header information - headers already sent by (output started at C:\FIRMA\KUST01_10_Kundenstamm_Dokumente_oeffnen.php:4) in C:\FIRMA\KUST01_10_Kundenstamm_Dokumente_oeffnen.php on line 21
%PDF-1.3 %âãÏÓ 1 0 obj << /Creator (Canon ) /CreationDate (D:20080408092314+01'00')
USW USW
Gruß
Hello,
@mysql_connect("localhost", "root", "KENNWORT");
@mysql_select_db("meine_dokumente");
$result = @mysql_query($sql);
Könnt Ihr mir sagen was ich im 2. PHP verändern muß, damit es klappt...
Du fragst die Statuswerte der Datenbank nicht ab.
Du unterdrückst sogar noch Fehlermeldungen, die eventuell kommen könnten.
Du merkst Dir das Handle für die Datenbank nicht, das brauchst Du aber,
wenn Du dann deine Eingaben vom Client mit mysql_real_escape_string() behandelst.
Und das solltest Du tun.
Ich glaube, dass sind erstmal genügend Fehler zur Beseitigung.
Ein harzliches Glückauf
Tom vom Berg
Hallo,
vielleicht könntest du mir das mit Beispielen erklären...
Ich hab mir alles soweit zusammen geklaut und teilweise selbst geändert...
Bin kein spezialist...
Du fragst die Statuswerte der Datenbank nicht ab. ???
Du unterdrückst sogar noch Fehlermeldungen, die eventuell kommen könnten???
Du merkst Dir das Handle für die Datenbank nicht, das brauchst Du aber, wenn Du dann deine Eingaben vom Client mit mysql_real_escape_string() behandelst ???
Gruß
Michael
Hallo,
vielleicht könntest du mir das mit Beispielen erklären...
Ich hab mir alles soweit zusammen geklaut und teilweise selbst geändert...
Bin kein spezialist...
... aber eine Suche (oben links in der Forumshauptdatei) solltest Du bedienen können.
Du merkst Dir das Handle für die Datenbank nicht, das brauchst Du aber, wenn Du dann deine Eingaben vom Client mit mysql_real_escape_string() behandelst ???
Ein paar Perlen aus unserem Archiv (und ich habe nur in 2008 gesucht):
dedlfix:
</archiv/2008/1/t164946/#m1075556>
</archiv/2008/2/t165991/#m1082288>
</archiv/2008/2/t166040/#m1082719>
Thread:
http://forum.de.selfhtml.org/archiv/2008/1/t165026/
Freundliche Grüße
Vinzenz