Ausgabe Bild
Negro
- php
0 Tom0 Negro0 Thomas Luethi0 Negro
0 lulu
Hallo,
ich habe ein kleiens Upload-Formular in PHP realisiert, mit dem man die ausgewählte Datei in ein VErzeichnis auf dem Webserver hochlädt und den Dateinamen (Bilddatei) in einer Datenbank speichert.
Nur wie kann ich es jetzt erreichen, das mir das Bild, je nach Datensatz entsprechend angezeigt wird. Also varibale Pfadangabe ???
Besten Dank für jeden Tipp !
MFG
Negrp
Hello,
was ist denn das kennzeichnende Element dafür, dass die Bilder angezeigt werden sollen?
1. Bau Dir erstmal die "normale" HTML-Seite und lass Platzhalter überall
dort, wo dynamische Inhalte kommen sollen: <!-- Element 0017 -->
2. Dann schreibst Du ein Script, dass die Elemente zusammenstellt
$element = array();
$element[17] = "<b>Hier steht fetter Text</b>";
$element[18] = "<img src="".PICPATH."/".$bildname."">";
3. Dann ersetzt Du die Platzhalter durch entprechende
echo-Anweissungen: <?php echo $element[234]; ?> oder noch besser, Du
schreibst Dur eine Funktion, die die Ersetzung automatisch vornimmt.
Dann hast Du nämlich schon eine eigene kleine Template-Engine
Wenn Du den PICPATH innerhalb der Document-Root hast, dann solltest Du die Bildnamen durch zufällige Schlüssel ( unique_id()) ergänzen:
$bildname = uniqueid($original_bildname_ohne_suffix).$suffix;
und unter diesem Namen in das Verzeichnis stellen.
Dann brauchst Du Dir über Bildergrabber fast keine Gedanken mehr zu machen. Es können dann nur noch die Bilder geklaut werden, die Du sowieso anzeigen wolltst oder deren Namen man zufällig rät.
Liebe Grüße aus http://www.braunschweig.de
Tom
Danke erstmal !
Die Upload-Seite ist eh nicht für jeden zugänglich und durch htaccess gesichert !
Mir geht es nur darum, das jemand ein Formular hat mit einem Textfeld und einem, wo er die hochzuladende Bilddatei auswählt. Das mit dem Upload klappt wunderbar. Auch der Dateiname wird passend zum eingegebenen Text in der DB gespeichert.
Wenn ich jetzt durch eine SQL-Anweisung nur bestimmte Datensätze anzeigen lassen will, soll der Text und das dazu passende Bild was bei der Eingabe hochgeladen wurde angezeigt werden.
Keine Ahnung, aber kann man da eventuell nich ganz einfach den IMG-Tag um die entsprechenden Dateinamen und den festen Pfad (Ordner: /upload/) erweitern und somit eine sozusagen "varibale Bildanzeige" basteln ?
Danke !
Negro
Hallo,
Keine Ahnung, aber kann man da eventuell nich ganz einfach den IMG-Tag um die entsprechenden Dateinamen und den festen Pfad (Ordner: /upload/) erweitern und somit eine sozusagen "varibale Bildanzeige" basteln ?
Ich habe irgendwie den Eindruck, dass Du mit PHP und Datenbanken
rumbastelst, obwohl Du beim Grundlagenwissen, naemlich HTML,
noch sehr grosse Luecken hast.
Was und wie Du bastelst, spielt ueberhaupt keine Rolle.
Was zaehlt, ist allein der HTML-Quellcode der Seite,
die dem Endbenutzer ausgeliefert wird.
Falls Du darin relative URL-Angaben schreiben willst,
dann spielen die URL der HTML-Seite sowie die URL
der Grafik-Datei eine Rolle.
Wenn Du wegen dem PHP/SQL Gebastel den Durchblick verlierst,
gibt es eine ganz simple Methode:
Mach eine statische HTML-Seite genau an der Stelle,
wo das ausgebende PHP-Skript steht (d.h. im gleichen Verzeichnis).
Mach dort ein <img> Tag rein und schreibe den Pfad zum
Bild so, dass dieses eingebunden wird.
_Nun_ kannst Du wieder zu PHP/SQL wechseln und dafuer
sorgen, dass das PHP-Skript den korrekten Pfad in
den HTML-Quelltext schreibt.
Die Funktion getimagesize() ist so nett und liefert Dir
gleich den String
width="123" height="56"
den Du ins <img> Tag einbauen kannst.
http://selfhtml.teamone.de/html/allgemein/referenzieren.htm
http://selfhtml.teamone.de/html/grafiken/einbinden.htm
http://www.php.net/manual/en/function.getimagesize.php
http://www.php.net/manual/de/function.getimagesize.php (unvollstaendig)
Gruesse,
Thomas
Hallo,
oder man "bastelt" weiter rum, und kommt zu folgenden Ergebnis:
<img src="http://mitglied.lycos.de/testseite123/dirupload/<?php echo $row_Recordset1['upload']; ?>">
Trotzdem Danke !
PS: Wie kann ich eigentlich nach dem auswählen des Bildes durch den Beutzer das Foto austomatisch auf eine fest definierte Größe verkleinern und dann erst hochladen ?
Hallo,
PS: Wie kann ich eigentlich nach dem auswählen des Bildes durch den Beutzer das Foto austomatisch auf eine fest definierte Größe verkleinern und dann erst hochladen ?
Gar nicht.
Zumindest nicht automatisch.
Du kannst den Benutzer freundlich auffordern, es zu tun.
Vielleicht mit einem Hinweis auf http://www.irfanview.com/
Auf dem Webserver kannst Du _nach_ dem Hochladen pruefen,
wie gross die Foto ist (Dimensionen und Dateigroesse).
Wenn sie zu gross ist, kannst Du sie ja gleich wieder loeschen
und dem Benutzer eine entsprechende Meldung ausgeben.
Auf dem Tripod-Webspace laeuft eine Abart von 4.3.2,
und die GD Bibliothek steht zur Verfuegung.
Die Funktion phpinfo() verraet:
GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
JPG Support enabled
PNG Support enabled
WBMP Support enabled
Du koenntest also die Bilder nach dem Hochladen
auf dem _Server_ entsprechend runterrechnen.
Wenigstens JPEG-Bilder, aber da Du ja von Fotos sprichst,
nehme ich an, dass keine GIFs darunter sein werden.
Gruesse,
Thomas
Alles klar ! Danke Thomas.
Grüße
Negro
Hello,
PS: Wie kann ich eigentlich nach dem auswählen des Bildes durch den Beutzer das Foto austomatisch auf eine fest definierte Größe verkleinern und dann erst hochladen ?
Gar nicht.
Aber du kannst kleine Hilfen einbauen, die manche Browser anbieten. Schreib eine hidden-Variable dazu
<input type="file"....>
<input type="hidden" name="MAX_FILIE_SIZE" value="$maxfilesize">
ist natürlich symbolisch gemeint mit $maxfilesize
Manche Browser sind so freundlich und beachten das. Das spart zumindest unnötigen Traffic.
Kontrolliert wird auf dem Server
Liebe Grüße aus http://www.braunschweig.de
Tom
Hallo !
Noch eine Frage zu diesem Problem:
Das oben beschriebene Problem mit der Ausgabe der Bilddatei habe ich jetzt ja so gelöst:
<img src="http://mitglied.lycos.de/test1234/upload/<?php echo $row_Recordset1['upload']; ?>" hspace="15" border="1" align="left">
Ich lasse mir alle Datensätze in einem "Wiederholten Bereich" (so heißt das in Dreamweaver MX) darstellen.
Nur, nicht jedem Datensatz wurde eine Grafik zugewiesen. In diesem Falle sollte natürlich der IMG-TAG an dieser Stelle nicht verwendet werden. Kann ich das irgendwie überprüfen und lösen ? Wenn ja, wie ?
Vielen Dank !
MFG
Negro
Huhu Nero
Also zunächst musst Du bei jedem Upload durch - potentiell immer "böse" - Besucher sicherstellen, dass Dir niemand ein Kuckucksei (z.B. ein garstiges Skript) in Dein Webnest legt.
Also müssen die hochgeladenen Dateien ausserhalb des Webverzeichnisses abgelegt werden (damit sind sie nicht per http aufrufbar).
Bei Bildern kannst Du diese noch mit getimagesize daraufhin prüfen, ob es tatsächlich Bilder sind.
Um die Bilder dann auf Deiner Webseite auszugeben brauchst Du dann nur noch ein kleines Skript welches die Dateien "durchreicht".
Das könnte z.B. so ausschauen:
<img src="gimmethepic.php?id=4" alt="">
Mittels des Get-Parameter id würde dann der entsprechende
Datensatz identifiziert werden.
Oder Du baust Dir eine Funktion welche den kompletten IMG-Tag zusammenbaut. Dann könntest Du auch die width und height Werte richtig angeben und z.B. eine Bildbezeichnung (aus der Datenbank)
als title angeben.
Z.B. ungefähr so
function get_img_tag_by_id($id)
{
// $id auf validität prüfen!
// entsprechenden Datensatz holen
// per getimagesize die Bildinfos (Abmessungen) holen
// die Werte in "Tag-Template" einsetzten
also z.B.
$img_tag = sprintf('<img src="gimmethepic.php?id=%d title="%s" %s>',$id,$BildnameAusDerDatenbank, $Abmessungen);
return $img_tag;
}
das "gimmethepic"-Skript holt den der jeweiligen id zugehörigen Dateinamen aus der Datenbank, schickt einen entsprechenden header und reicht die Datei durch.
(Oder z.B. eine Default-Grafik um ungültige/ fehlende Grafiken anzuzeigen)
Fertig.
so in etwa könnte das funktionieren
Viele Grüße
lulu