Textdateien aus Datenbank auslesen und öffnen!

computerpap

Mitglied
Hallo
Ich habe folgendes Problem:
Ich muß mehrere Daten über ein Produkt per Formular in eine MySQL-Datenbank speichern.
Zu diesen Daten gehört auch eine Textdatei. Ich möchte aber nur einen Verweis bzw. Link zu dieser Datei in der Datenbank speichern. Mit folgenden Code realisiere ich das:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Anlagen eingeben</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>
<p><a href="zeige_anlagen.php">Anlagen anzeigen</a></p>
<h3>Anlagen eingeben</h3>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="post">
Tabelle 1: <input type="text" name="spalte1"><br>
Tabelle 2: <input type="text" name="spalte2"><br>
Tabelle 3: <input type="text" name="spalte3"><br>
Tabelle 4: <input type="text" name="spalte4"><br>
Tabelle 5: <input type="text" name="spalte5"><br>
Tabelle 6: <input type="text" name="spalte6"><br>
Tabelle 7: <input type="file" name="spalte7"><br><br>

<textarea cols="60" rows="4" name="Notizen">
</textarea><br>


<input type="submit" value="Daten eintragen"
name="submit">
</form>
<?php
if (!empty($_POST["submit"])) {
@mysql_connect("localhost", "root", "")
or die("Verbindung zu MySQL gescheitert!");
@mysql_select_db("test") or die("Datenbankzugriff gescheitert!");

$sql="INSERT INTO tabelle1 " .
"(id, spalte1) VALUES ('', '$_POST[spalte1]')";


$sql2="INSERT INTO tabelle2 " .
"(id, spalte2) VALUES ('', '$_POST[spalte2]')";

$sql3="INSERT INTO tabelle3 " .
"(id, spalte3) VALUES ('', '$_POST[spalte3]')";

$sql4="INSERT INTO tabelle4 " .
"(id, spalte4) VALUES ('', '$_POST[spalte4]')";

$sql5="INSERT INTO tabelle5 " .
"(id, spalte5) VALUES ('', '$_POST[spalte5]')";

$sql6="INSERT INTO tabelle6 " .
"(id, spalte6) VALUES ('', '$_POST[spalte6]')";

$sql7="INSERT INTO tabelle7 " .
"(id, spalte7) VALUES ('', '$_POST[spalte7]')";

if (mysql_query($sql) && mysql_query($sql2) && mysql_query($sql3) && mysql_query($sql4)&& mysql_query($sql5)&& mysql_query($sql6)&& mysql_query($sql7)) {
echo "<p>Dateneingabe erfolgreich!</p>";
} else {
echo "<p>Dateneingabe nicht erfolgreich!</p>";
}
mysql_close();
}
?>
</body>
</html>

das klappt auch ohne Probleme. Nun möchte ich die Daten wieder aus der Datenbank auslesen, allerdings soll der Link zu der Textdatei auch als Link angezeigt werden, so dass sich per Klick die Textdatei öffnet. Irgendwie klappt das aber nicht. Der Code sieht so aus (es wird nur der Inhalt von Tabelle7 aufgerufen, dort wo der Link auf die Textdatei steht, den Rest hab ich weggelassen:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Adressen anzeigen</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<link rel="stylesheet" type="text/css" href="phpkid.css">
</head>
<body>
<p><a href="eingabe_anlagen.php">Anlagen eingeben</a></p>
<h3>Anlagen anzeigen</h3>
<div>
<?php
include("zugriff.inc.php");
$sql = "SELECT * FROM tabelle7";
$result = mysql_query($sql);
$zeilen = mysql_num_rows($result);
echo "<p>$zeilen Einträge:</p>\n";
// Tabelle definieren:
echo "<table border='1' cellspacing='0'>\n";
// Kopfzeile der Tabelle anlegen:
echo "<tr><th>spalte1</th><th>spalte2</th></tr>\n";
// while-Schleife Anfang
while ($row = mysql_fetch_assoc($result)) {
echo "<tr>"; // Zeile erzeugen
// foreach Anfang:
foreach ($row as $key => $value) {
echo "<td>$value&nbsp;</td>\n";
} // foreach Ende

echo "</tr>"; // Zeile schließen
} // while Ende
echo "</table>\n"; // Tabelle schließen
mysql_close();
?>
</div>
</body>
</html>

Ich bekomme aber nur reinen Text angezeigt, keinen Link zum öffnen der Textdatei. Was mache ich falsch?
Schon mal vielen Dank im voraus für eure Hilfe!

MfG
computerpap
 
Wo in dem ersten Script speicherst du den Pfad (und Dateiname...) der Textdatei?
Und bei dem zweiten Script steht nirgends ein <a href=""... Also kann man das auch nichts anklicken. Du müsstest in der Schleife sowas in der Art schreiben:
PHP:
echo '<a href="' .$pfad. '">' .$dateiname. '</a>';
Und: Formatiere bitte den Code etwas, oben im Editor gibt's einen Button wo PHP draufsteht.

Gruß
 
Hallo
Danke für die schnelle Antwort. Gespeichert wird der Pfad und der Name der Datei per Eingabe in das Formularfeld und per Klick auf einen Button speichere ich in die Datenbank.

Tabelle 7: <input type="file" name="spalte7"><br><br>

$sql7="INSERT INTO tabelle7 " .
"(id, spalte7) VALUES ('', '$_POST[spalte7]')";

Als Ergebnis steht in der Datenbank "d:\test.txt".

Mit den <a href.... Tags habe ich schon probiert, aber ich müßte wissen, wo genau man das einfügt. Ich bekomme immer Fehlermeldungen, das der PHP-Code nicht ok ist.

Mfg
computerpap
 
Welcher Fehler kommt? Wo hast du es eingefügt?
Den Link musst du in der Schleife einbauen, dort wo die Ergebnisse aus der Datenbank
ausgegeben werden.

So bekommst du z.B. eine (unformatierte) Linkliste:
PHP:
while($row = mysql_fetch_assoc($result)) {
	echo '<a href="' .$pfad_aus_db. '">' .$name_der_datei. '</a><br />';
}
 
Hallo
Wieso muß ich denn den Pfad und den Namen der Tabelle nochmal angeben? Es stehen irgendwann etliche Dateinamen in der Datenbank, und die sollen dann alle per Link angezeigt werden. Das zweite Script zum Auslesen der Datenbank ist doch so geschrieben, dass alle Datensätze angezeigt werden, aber halt nur als reiner Text.
Ich sollte noch erwähnen, dass ich mich erst seit kurzen mit PHP beschäftige.

MfG
computerpap
 
PHP:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
	<head>
		<title>Adressen anzeigen</title>
		<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
		<link rel="stylesheet" type="text/css" href="phpkid.css">
	</head>
<body>
	<p><a href="eingabe_anlagen.php">Anlagen eingeben</a></p>
	<h3>Anlagen anzeigen</h3>
	<div>
<?php
include('zugriff.inc.php');

	$sql = 'SELECT * FROM tabelle7';
	$result = mysql_query($sql);
	$zeilen = mysql_num_rows($result);
?>

	<p><?php echo $zeilen; ?> Einträge:</p><br />
	<table border="1" cellspacing="0">
	<tr><th>spalte1</th><th>spalte2</th></tr>
	
<?php
	// while-Schleife Anfang
	while ($row = mysql_fetch_assoc($result)) {
	?>
		<tr>
			<td>
	<?php
				echo $row['id']; // Spalte 1
	?>
			</td>
			<td>
	<?php
				echo '<a href="' .$row['spalte7']. '">' .$row['spalte7']. '</a>'; // Spalte 2
	?>
			</td>
		</tr>
	<?php
	} // while Ende
	?>
	</table>
<?php
mysql_close();
?>
</div>
</body>
</html>
Ich gehe davon aus in 'spalte7' steht der Dateiname.
 
Jetzt kommen wir der Sache entscheidend näher. Mit dem Code von dir werden die Textdateien als Link dargestellt, nur wenn ich drauf klicke passiert nichts. Ich möchte den Inhalt der Textdateien im Browser darstellen oder es kann sich auch der Editor öffnen, das wäre egal.
Es wäre super wenn du da noch ne Idee hättest.

MfG
computerpap
 
Eine Frage hätte ich noch, wieso schreibst du jede PHP-Zeile zwischen <?php und ?>, ich dachte man muß den kompletten PHP-Code dazwischen schreiben!
 
Wenn du draufklickst passiert garnichts? Keine Fehlermeldung?

Eine Frage hätte ich noch, wieso schreibst du jede PHP-Zeile zwischen <?php und ?>, ich dachte man muß den kompletten PHP-Code dazwischen schreiben!
Wie du siehst funktioniert mein Script ja, also muss man das nicht :)
Ich schreibe so wegen der Übersicht. Du kannst das HTML natürlich auch konsequent echo'en.
 
Wenn ich den Internetexplorer benutze passiert gar nichts. Wenn ich Firfox benutze kommt folgende Meldung:
Firefox weiß nicht wie diese Adresse geöffnet werden soll, da das Protokoll (d) mit keinen Programm verknüpft ist.

Keine Ahnung was da gemeint ist. Was ich aber noch probiert habe, ich habe den Link rechts angeklickt und dann auf "Ziel drucken" geklickt, da wird mir der Inhalt der Textdatei gedruckt.
 
Zurück