EDIT:
Hallo nochmal.
Da dieser thread immer noch ziemlich weit oben ist, und da dies vielleicht allgemein eine interessante Fragestellung ist, und ich ein sehr gutes Tutorial gefunden habe, möchte ich das für alle weiteren Interessierten hier posten. Allerdings in Englisch, aber diese ist eine wahre Fundgrube für Einsteigertutorials:
PHP Tutorials: File upload (Part 1) auf Youtube.
Ich beschäftige mich gerade mit der Aufgabe, aus der DB ein kleines Bild in einer Art "Newsblog" für die neue HP von unserem Betrieb anzufügen. Bisheriger Stand:
1.: In der DB ist es bereits zu sehen (Typ MEDIUMBLOB), habe probehalber eins "hochgeladen";
2.: die übrige Ein- und Ausgabe der Daten (Schlagzeile, Inhalt, Autor, Datum) in html funktionieren schon:
- Code: Select all
include ("mysqlverbindung.php");
$abfrage = "SELECT * FROM meldungen ORDER BY counter DESC";
$meldungen = mysql_query($abfrage);
while($row = mysql_fetch_object($meldungen)) { /* Ausgabe der Ankündigungen mit PHP*/
echo "<h2>".htmlentities ($row->header, ENT_QUOTES)."</h2>";
echo "<p>".nl2br (htmlentities ($row->inhalt, ENT_QUOTES))."</p>";
$datneu = explode ("-", $row->datum);
echo "<h6>von ". htmlentities ($row->autor, ENT_QUOTES)." vom ".$datneu[2].".".$datneu[1].".".$datneu[0]. "</h6>" ;
}
(ziemlich nach Schema F)
Nur mit dem Bild ist es jetzt sone Sache, denn ich bin leider noch völliger Neuling in php.
Ich habe länger auf php.net rumgesucht (aber das ist eher ein Nachschlagewerk als ein Tutorium, und ich suche sehr ungerne über google, denn da kommt man dann meistens auf sehr alte links und sucht oft lange ziellos rum bei so speziellen Fragen), auch hier und in einem anderen Forum und weiß jetzt immerhin die grundsätzliche Vorgehensweise: über ein Hilfsscript.
Btw., zu dem Vorschlag in anderen threads, das Bild einfach in einem Ordner zu speichern und über die DB zu referenzieren, geht in meinem Falle nicht, weil ich meinen Kollegen ermöglichen möchte, das Bild zusammen mit dem Eintrag hochzuladen, statt in die DB zu schreiben (das würden die nicht packen ).
Als erstes müsste also geprüft werden, ob $row->bild (so heißt das BD-Feld) NULL ist, denn es ist optional. Sonst muss das Hilfsscript mit Header( 'Content-type: image/jpeg') aufgerufen werden mit "<img src="hilfsscript.php"> zum ausgegeben.
Leider habe ich keine Ahnung, wie so ein Hilfsscript aufgebaut werden soll. (Es hat wohl mit include (); nichts zu tun. Eher eine funcion in der selben Datei, nehme ich an?)
Ich bin mir auch nicht sicher, ob man mit "INSERT INTO meldungen (bild) VALUES ('$bild')" das einfach reinschreiben kann, oder ob man den .jpg als besonderes Format anders behandeln muss. - Habs auch noch nicht ausprobiert.
Und noch eine andere kleine Ungewissheit: wie gesagt, der Typ ist MEDIUMBLOB, also "16 MiB" laut Mysql-interface, entspricht das 16 MB? Das wäre natürlich viel zu groß. Aber wenn ich nur BLOB einstelle, sind das 16 KB, was ziemlich knapp ist. (Wenn ich das richtig verstehe) Was würdet ihr dazu raten?
Das sind jetzt viele Fragen, und ich kann natürlich nicht erwarten, dass ihr mir fertige scripts schreibt. Aber ihr habt bestimmt den einen oder anderen nützlichen Hinweis oder kennt einen Link, in dem ich mir den Rest aneignen kann.
Jedenfalls schonmal vielen Dank im vorraus,
mfg,tobi
edit: Ich habe jetzt doch schonmal folgendes ausprobiert:
- Code: Select all
$bild=$_POST['bild'];
$abspeichern= "INSERT INTO meldungen (bild) VALUES ('$bild') ";
$gesp = mysql_query ($abspeichern);
if ($gesp){
echo "ok";
}
"ok" wird ausgegeben, aber in der DB ist nichts zu sehen... Geht vielleicht doch nicht so einfach?