Farben direkt in PHP ändern

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
gipsy
Mitglied
Beiträge: 8
Registriert: 19.05.2005 11:11

Farben direkt in PHP ändern

Beitrag von gipsy »

Hallo Forumianer,

ich möchte in meinem Forum bei der Ausgabe des Datum und der Uhrzeit des letzten Postings die Farbe der Uhrzeit verändern. Per Template geht das nicht, da dort beides zusammengefasst ist. Wie man in den php-Dateien die Links andersfarbig hinbekommen kann, habe ich schon herausgefunden (Dank der Einträge im Forum und der Dokumentation, ich habe also schon seit zwei Tagen versucht, an verschiedenen Stellen versucht, die Antwort selbst zu finden).

Beim Link kann man einfach in das <a>-Tag eine Stylezuweisung einfügen. Bei dem Datum funktioniert das aber nicht, weil da kein Tag zur verfügung steht.

Das ist der Originalcode (wenigstens nehme ich das an, dass ich es dort ändern müsste). Der Code stammt aus der Datei viewforum.php

Code: Alles auswählen

$last_post_time = create_date($board_config['default_dateformat'], $topic_rowset[$i]['post_time'], $board_config['board_timezone']);
Folgendes habe ich bereits erfolglos versucht:

Code: Alles auswählen

$last_post_time = create_date($board_config['default_dateformat'], $topic_rowset[$i]['<span style="color:#990000;">post_time</span>'], $board_config['board_timezone']);

Code: Alles auswählen

$last_post_time = create_date($board_config['default_dateformat'], $topic_rowset[$i]['<font color="#990000">post_time</font>'], $board_config['board_timezone']);
Beides hat nicht funktioniert, das Datum stand dann bei allen Posts auf dem 01.01.1970 01:00. Zu der Zeit war ich noch ein Kleinkind ...

Natürlich könnte ich mich jetzt die nächsten 2 Monate mit PHP beschäftigen und irgendwann wird das auch noch kommen. Allerdings soll das Forum nächste Woche freigegeben werden.

Kann mir irgend jemand auf die Sprünge helfen?

Viele Grüße

gipsy
Benutzeravatar
Leuchte
Ehemaliges Teammitglied
Beiträge: 9179
Registriert: 26.05.2003 14:57
Wohnort: Duisburg
Kontaktdaten:

Beitrag von Leuchte »

autsch

Code: Alles auswählen

'LAST_POST_TIME' => $last_post_time,
zu

Code: Alles auswählen

'LAST_POST_TIME' => '<span style="color:#990000">'.$last_post_time.'</span',
gipsy
Mitglied
Beiträge: 8
Registriert: 19.05.2005 11:11

Beitrag von gipsy »

Hallo Leuchte,

danke für deine Mühe, ich bin wohl total auf dem verkehrten Dampfer.

Das Problem ist allerdings, wenn ich das so mache, dann ist sowohl das Datum als auch die Uhrzeit rot, denn die beiden werden ja zusammen ausgegeben. Das Datum soll aber seine originale Farbe behalten (blau) während das Datum rot werden soll.

Oder geht das vielleicht gar nicht? (Ich meine ohne übermäßigen Aufwand, gehen tut das bestimmt irgendwie, möglicherweise müsste dafür extra noch an den PHP-Anweisungen etwas geändert werden, aber das wäre wohl doch etwas zuviel Aufwand für so eine klitzekleine Änderung.)

Viele Grüße

gipsy
gipsy
Mitglied
Beiträge: 8
Registriert: 19.05.2005 11:11

Beitrag von gipsy »

Hallo nochmal,

so rein von meiner völlig unzureichenden Vorstellung von PHP müsste ich jetzt eine Datei finden, in der diese post-time definiert wird und dann dort die Farbe ändern. Die Frage ist nur, wo? *nochmalweitergrübel*

VG

gipsy
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Dann musst du bei dir im Profil als Datumsformat z.B.

Code: Alles auswählen

<\s\p\a\n \s\t\y\l\e="\c\o\l\o\r:#990000">d M Y</\s\p\a\n> H:i
eintragen.
KB:knigge
gipsy
Mitglied
Beiträge: 8
Registriert: 19.05.2005 11:11

Beitrag von gipsy »

Hallo Pyramide,

offensichtlich habe ich mal wieder einen Riecher für ein besonders "nettes" Problem gehabt, welches sich nicht so einfach lösen lässt.

Wenn ich das in meinen eigenes Profil eingebe, bekomme ich nur die ersten paar Zeichen dorte reingestellt. Das würde sich wahrscheinlich per Template ändern lassen (vermute ich mal) allerdings würde dann ja nur ich das Forum so sehen.

Ich habe dann versucht, das ganze in der Forenkonfiguration als default für das Zeitformat einzugeben, allerdings war die Wirkung gleich Null.

Vielleicht sollte ich mich mal auf wichtigeres konzentrieren, sonst werd ich hier nie fertig :wink: Sollte trotzdem noch jemand einen Geistesblitz haben ... immer her damit.


@Leuchte

mit deinem "Autsch" hast du sicher recht. Allerdings habe ich immer ein funktionierendes Backup der PHP-Dateien, die ich zermetzgere. Und ich bin ja durchaus kreativ was das metzgern angeht, habe allerdings festgestellt, dass ich auf die Weise weit mehr und schneller Dinge lerne, als auf "traditionelle" Methoden. Ich kann mir das Desaster nämlich sofort anschauen ;-) Ich muss allerdings zugeben, dass diese Methode bei HML und CSS besser funktioniert.

VG

gipsy
Benutzeravatar
Pyramide
Ehrenadmin
Beiträge: 12734
Registriert: 19.04.2001 02:00
Wohnort: Meschede

Beitrag von Pyramide »

Ich habs gerade mal selber ausprobiert und es funktioniert einwandfrei. Vorher muss man natürlich das Feld user_dateformat in phpbb_users von varchar(14) auf z.B. varchar(100) ändern.
KB:knigge
gipsy
Mitglied
Beiträge: 8
Registriert: 19.05.2005 11:11

Beitrag von gipsy »

Hallo Pyramide,

wäre es auch möglich im admin_board.php die Zeile

Code: Alles auswählen

	"DEFAULT_DATEFORMAT" => $new['default_dateformat'],
(irgendwie??) zu verändern

oder im mysql_schema.sql

Code: Alles auswählen

user_dateformat varchar(14) DEFAULT 'd M Y H:i' NOT NULL,
in

Code: Alles auswählen

user_dateformat varchar(100) DEFAULT '<\s\p\a\n \s\t\y\l\e="\c\o\l\o\r:#990000">d M Y</\s\p\a\n> H:i' NOT NULL,
zu ändern?

Hmm, ich werde es einfach ausprobieren und mal schauen, ob es funktioniert. Wenn nicht, hab ich wieder was dazu gelernt *gg*

VG

gipsy
gipsy
Mitglied
Beiträge: 8
Registriert: 19.05.2005 11:11

Beitrag von gipsy »

Hallo Pyramide,

das entwickelt sich zu einer Neverending Story :D

Also mein Versuch war semi-erfolgreich. Ich habe eben gelernt auf meinem Server in der Struktur der Datenbanken herumzupfuschen. Weil nämlich die Dateien, in denen ich das varchar gefunden hatte alle Installationsdateien waren. Also nix mit FTP und hochladen. Das wird dir nicht neu sein, mir war es das. Immerhin ein *Erfolgserlebnis*

Und prinzipiell funzt das ganze sogar. Das Problem ist nur: Ich Schussel hab da einen Fehler gehabt. Das Datum soll blau bleiben und die Uhrzeit rot.
Ich dachte, kein Problem, dann wird

Code: Alles auswählen

<\s\p\a\n \s\t\y\l\e="\c\o\l\o\r:#990000">d M Y</\s\p\a\n> H:i
einfach in

Code: Alles auswählen

d M Y<\s\p\a\n \s\t\y\l\e="\c\o\l\o\r:#990000"> H:i</\s\p\a\n>
geändert. Aber Compis haben ihren eigenen Willen (ich auch, nämlich den Willen, den Compi zu überlisten). Trotzdem wird das Datum rot und die Uhrzeit blau angezeigt *staun* Das muss ich nicht verstehen, oder? :o
Nu dachte ich, klug wie ich bin, ich ändere das mal eben wieder zurück in meiner Datenbank. Nur leider mag die nicht, die will beim Datum rot-blau bleiben anstatt wieder auf den Standard zu gehen. Nein, die Datenbank zeigt als Struktur wieder Standard an, aber das Forum nicht. Auch nicht nach Leerung des Caches.

Es sieht wohl so aus, als müsste ich mich als aller erstes mal mit PHPMyAdmin befassen *grummel*

VG

gipsy
gipsy
Mitglied
Beiträge: 8
Registriert: 19.05.2005 11:11

Beitrag von gipsy »

Hallo allerseits,

ich bin ja dank eurer Hilfe schon ein ganzes Stück weiter gekommen. Aber das Problem ist nur halb gelöst. Wenn man das Forum als Gast oder nicht eingeloggt ansieht, sieht es so aus, wie es aussehen sollte. Das Datum blau, die Uhrzeit rot.
[ externes Bild ]

Wenn man allerdings registriert und eingeloggt ist, sieht die Sache schon wieder ganz anders aus, sogar ziemlich chaotisch, dann sieht das Datum nämlich so aus:
[ externes Bild ]

Das Problem scheint mir in der phpBB_users zu liegen. Oder irgendwo in der Forenadministration. Im Template ist keine maxlength angegeben gewesen, ich habe jetzt eine eingefügt mit 255 Zeichen. Auch in der Datenbank habe ich varchar auf 255 Zeichen gesetzt (sowohl im phpBB_config als auch im phpBB_users).
[ externes Bild ]
(Nicht dass ihr nicht wisst, wie das aussieht, das Bild ist hier nur, damit ihr seht, dass ich nicht ganz peroxydblond bin)

Das Feld in der Forumskonfiguration akzeptiert aber nicht mehr als 26 Zeichen. Ich kann zwar meine Datumsformatierung vollständig eingeben, wenn ich sie allerdings abschicke und mir das Ergebnis in der Forenkonfiguration anschaue, sind nur 26 Zeichen davon angekommen. Ein wenig von dem Rest ist rechts neben dem Feld zu sehen:
[ externes Bild ]

Da nur 26 Zeichen akzeptiert werden, ist es natürlich kein Wunder, dass das Datum so verwuselt aussieht.

Andererseits könnte das Problem auch noch woanders liegen. Wenn ich mir nämlich in der Datenbank die User anzeigen lassen, kann ich dort "zu Fuß" das Datumsformat eines Users ändern. Dann wird das Datum wunschgemäß angezeigt
Das "zu Fuß" angezeigte Datzumsformat sind dann wunschgemäß aus:
[ externes Bild ]

... bis derjenige irgend etwas an seinem Profil ändert und diese Änderung abschickt.

Nach Änderung des Profils (egal was geändert wurde, z. B. das Avatar oder sonst irgend etwas (auch wenn das gewünschte Datumsformat im Profil eingegeben wird)) sieht das ganze dann so aus:
[ externes Bild ]
Im ganzen steht dann als Datumsformatierung folgendes:
d M Y<\s\p\a\n \s\t\y\l\e="\c\o\l\o\r:#990000"> H:i</\s\p\a\n>
Bei so einer Formatierung ist das Ergebnis natürlich auch kein Wunder ...

Hat irgend jemand Ideen, woran das liegen könnte?

Viele Grüße

gipsy
Antworten

Zurück zu „Coding & Technik“