Zum Inhalt springen

Bilder im Gästebuch

Erstellt am 8. Dezember 2003 · 6 Antworten · letzte Antwort am 11. Juni 2004

Tags: Datei-Upload, Bilder, Frage

meiki ·

Hallo,

ich möchte gerne, dass die User zu ihrem Gästebucheintrag zusätzlich ein Bild hochladen können. Im Backend konnte ich das Feld "Bild" bereits realisieren.
Leider weiss ich nicht, wie ich es zum einen im Frontend mit ausgebe zum anderen weiss ich nicht wie ich es in POSTFORM integriere.

Kann mir hier jm. auf die Sprünge helfen.

Vielen Dank.
Meiki

dj.​picasso ·

Hi,

also im Template folgendes einfügen:

<input class="mar_input" type="file" name="image" style="width:350px;background-color: #FFFFFF;">

In der PHP-Datei muß das File dann natürlich hochgeladen werden:
Dafür sollten folgende Voraussetzungen erfüllt sein:
- Definition des Upload-Verzeichnisses. Typischerweise lädt Typo dies jeweils in den Standard-Ordner /uploads/EXT in diesem Fall also /uploads/tt_guest/
- Definition eines max. Wert für das Bild
- Garantie, dass die Bildernamen eindeutig sind und nicht alle: meinTollesBild.jpg heißen.

##Fragt aus SETUP die VAR maxuploadsize ab und dann eben in kB
$uploadsize = $this->conf["maxuploadsize"]*1000;
## Abfrage, ob Eintrag vorhanden
if (isset($GLOBALS["HTTP_POST_FILES"]["image"]["name"]) && $GLOBALS["HTTP_POST_FILES"]["image"]["size"] < $uploadsize) {
	$theFile = $GLOBALS["HTTP_POST_FILES"]["image"]["tmp_name"];
## vor den Name der Datei wird ein Timestamp für Eindeutigkeit gesetzt. 
## Geht auch anders ist aber die einfachste Variante
	$theNewFile = time()."_".$GLOBALS["HTTP_POST_FILES"]["image"]["name"];
### UPLOAD der Datei in Verzeichnis
	move_uploaded_file($theFile, "./uploads/tt_guest/".$theNewFile);
} else {
	$theNewFile = "";		
}

Viel Spaß beim Hacken.
Ciao
Der DJ

meiki ·

Hallo DJ,

vielen Dank für Deine schnelle Antwort.
Leider habe ich etwas Probleme bei der Umsetzung!
1. Im Template File ist das Formular nicht definiert, so dass ich hier auch kein weiteres Feld einfügen kann.

<!-- ###TEMPLATE_GUESTBOOK### begin
This is the template for the guest book or comment items
-->
<TABLE cellpadding="4" cellspacing="1" border="0" width="98%">
<TR bgcolor="###GC3###">
<TD colspan=2 valign="bottom">###GW2B### <font color="#FFFFFF"><B>Comments:</B></FONT>###GW2E###</TD>
</TR>
<!-- ###CONTENT### begin
This is the part of the template substituted with the list of comments/entries:
-->
<!-- ###POST### begin
Template for a single item
-->
<TR>
<TD bgcolor="###GC2###" valign="top">
###GW2B### ###POST_DATE### - ###POST_TIME### - ###POST_AGE### ###GW2E###
</TD>
<TD bgcolor="###GC2###" valign="top">
###GW2B### <B>###POST_AUTHOR###</B> - ###POST_EMAIL###<BR>###POST_WWW### ###GW2E###
</TD>
</TR>
<TR>
<TD bgcolor="###GC2###" valign="top">
</TD>
<TD bgcolor="###GC2###" valign="top">
###GW1B###<B>###POST_TITLE###</B>###GW1E###<BR>
###GW2B### ###POST_CONTENT### ###GW2E###
</TD>
</TR>
<!-- ###POST### end-->
<!-- ###POST_1### begin
Template for an alternative single item
-->
<TR>
<TD bgcolor="###GC1###" valign="top">
###GW2B### ###POST_DATE### - ###POST_TIME### - ###POST_AGE### ###GW2E###
</TD>
<TD bgcolor="###GC1###" valign="top">
###GW2B### <B>###POST_AUTHOR###</B> - ###POST_EMAIL###<BR>###POST_WWW### ###GW2E###
</TD>
</TR>
<TR>
<TD bgcolor="###GC1###" valign="top">
</TD>
<TD bgcolor="###GC1###" valign="top">
###GW1B###<B>###POST_TITLE###</B>###GW1E###<BR>
###GW2B### ###POST_CONTENT### ###GW2E###
</TD>
</TR>
<!-- ###POST_1### end-->
<!-- ###CONTENT### end -->
</TABLE><BR>
<!-- ###TEMPLATE_GUESTBOOK### end -->

2. Den zweiten Teil versteh ich leider auch nicht, da ich in der php-Datei keine ähnlichen Einträge für die anderen Felder finde und somit nicht weiss wo und wie ich Deinen Code einfügen soll!

Vielleicht hast Du nochmals Lust, Dir die zwei Dateien näher anzuschauen.
Würd mich freuen.

Vielen Dank.

Grüße
Meiki

dj.​picasso ·

Hi,

sorry, ich habe nicht darauf geachtet, dass beim Guestbook ja ein Postform genutzt wird.

  postform.dataArray {
    10.label = Titel:
    10.type = data[tt_guest][NEW][title]=input,40
    20.label = Text:
    20.type = *data[tt_guest][NEW][note]=textarea,34,3
    30.label = Name:
    30.type = *data[tt_guest][NEW][cr_name]=input,40
    40.label = Email:
    40.type = *data[tt_guest][NEW][cr_email]=input,40

    45.label = Bild:
    45.type = *data[tt_guest][NEW][cr_image]=file,40

    50.label = Homepage:
    50.type = data[tt_guest][NEW][www]=input,40
    60.type = formtype_db=submit
    60.value = OK
  }

... irgendwie so etwas sollte funktionieren (nicht ausprobiert)

In der class.tx_ttguest.php wird eine Funktion FORM() aufgerufen. Sieht so aus als käme sie aus der class.tslib_content.php (nicht verifiziert).
Du solltest testen ob die Function auch Bilder entgegennehmen kann oder ob sie entsprechend erweitert werden muss.
Ciao
Der DJ

meiki ·

moin dj,

das mit dem input im setup field haätte ich auch selber merken können.
Habe jetzt also erreicht, dass mein Formular korrekt angezeigt wird!
Jedoch hab ich immer noch das Problem, dass beim bestätigen des Formulars das Bild nicht mit upgeloadet wird! Du hast mir hierzu ja schon einen Code geschickt:

##Fragt aus SETUP die VAR maxuploadsize ab und dann eben in kB
$uploadsize = $this->conf["maxuploadsize"]*1000;
## Abfrage, ob Eintrag vorhanden
if (isset($GLOBALS["HTTP_POST_FILES"]["image"]["name"]) && $GLOBALS["HTTP_POST_FILES"]["image"]["size"] < $uploadsize) {
$theFile = $GLOBALS["HTTP_POST_FILES"]["image"]["tmp_name"];
## vor den Name der Datei wird ein Timestamp für Eindeutigkeit gesetzt.
## Geht auch anders ist aber die einfachste Variante
$theNewFile = time()."_".$GLOBALS["HTTP_POST_FILES"]["image"]["name"];
### UPLOAD der Datei in Verzeichnis
move_uploaded_file($theFile, "./uploads/tt_guest/".$theNewFile);
} else {
$theNewFile = "";
}

Kannst Du mir mal sagen, wo ich den genau in die php-Datei einbinden muss.
Zudem hab ich auch Probleme bei der Darstellung des Bilds! In der php-Datei finde ich nur folgende Stelle, die meiner Meinung nach die Darstellung steuert.

$markerArray=array();

$markerArray["###POST_TITLE###"] = $cObj->stdWrap($this->formatStr($recentPost["title"]), $conf["title_stdWrap."]);

$markerArray["###POST_CONTENT###"] = $cObj->stdWrap($this->formatStr($recentPost["note"]), $conf["note_stdWrap."]);

$markerArray["###POST_AUTHOR###"] = $cObj->stdWrap($this->formatStr($recentPost["cr_name"]), $conf["author_stdWrap."]);

$markerArray["###POST_EMAIL###"] = $cObj->stdWrap($this->formatStr($recentPost["cr_email"]), $conf["email_stdWrap."]);

$markerArray["###POST_WWW###"] = $cObj->stdWrap($this->formatStr($recentPost["www"]), $conf["www_stdWrap."]);

$markerArray["###POST_DATE###"] = $cObj->stdWrap($recentPost["crdate"],$conf["date_stdWrap."]);

$markerArray["###POST_TIME###"] = $cObj->stdWrap($recentPost["crdate"],$conf["time_stdWrap."]);

$markerArray["###POST_AGE###"] = $cObj->stdWrap($recentPost["crdate"],$conf["age_stdWrap."]);

Habe mir den zweiten Teil von Kaspers Video der CD Sammlung angesehen und versucht die Darstellung des Bildes irgendwie hinzubekommen. Leider bin ich kein php-Profi und hab daher keine Ahnung.
Vielleicht kannst Du mir hier auch einen Hinweis geben!

Vielen Dank.
Grüße
Meiki

stevenx ·

hey meiki,

bist du mit dem guestbook schon weiter gekommen? haste den bildupload erfolgreich intigrieren können?
weil ich möchte das auch gerade machen

grüße

steven

Unbekannter Benutzer ·

Hi meiki,

Ja, wollt auch mal fragen, ob du das Dingen fertig bekommen hast. Bin nämlich auch auf der Suche nach nem Gästebuch/Forum, wo die Leute Bilder hochladen können.

Wär super, wenn du mir da weiterhelfen kjönntest...

cu

2mad