KaXrikaturenforum » bams und Peters wbblite Ecke » Fragen und Antworten zu Forenproblemen » relative zeit anzeige bei Eintrag » werter Gast [anmelden|registrieren]
zur Zeit im Thread: 1 Gast » wer hat wann diesen Thread gelesen
letzter Beitrag | erster ungelesener Beitrag | Druckvorschau | an Freund senden | Thema zu Favoriten hinzufügen
2 Seiten: 1 2 >

Dieses Thema wurde als unerledigt markiert. unerledigt

Autor
        Beitrag    Beitragsreihenfolge: aufsteigend oder absteigend « Vorheriges Thema | Nächstes Thema »
 Antwort erstellen
rabenfrosch



Lügendetektor



Profildaten ein-/ausblenden

rabenfrosch hat das Thema begonnen






 So,12.03.2017 13:01    relative zeit anzeige bei Eintrag
 Beitrag 1 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Juten Morgen (:

ich verzweifle gerade ein wenig, bei einem Timestamp die relative Zeit anzeigen zu lassen (also z.B. vor 3 Minuten, vor 12 Stunden, vor 9 Monaten, vor 23 Jahren...) Als vorlage habe ich mir diese beiden Links angesehen:

https://gist.github.com/mattytemple/3804571
http://www.geekshangout.com/php-relative...-in-3-days-etc/

Nur irgendwie scheitere ich daran, oder verstehe es nicht. Aktuell ist der Stand:


in der Funktions - PHP
    Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
function relative_date($posttime) {

$diff time() - $posttime;

 if(
$diff == 0) {
        return 
'now';
    }
        elseif(
$diff 0) {
        
$day_diff floor($diff 86400);
        if(
$day_diff == 0) {
            if(
$diff 60) return 'just now';
            if(
$diff 120) return '1 minute ago';
            if(
$diff 3600) return floor($diff 60) . ' minutes ago';
            if(
$diff 7200) return '1 hour ago';
            if(
$diff 86400) return floor($diff 3600) . ' hours ago';
        }
        }


}


Eine Fehlermeldung gibt es nicht. Im Template wollte ich die Zeit dann halt mit $diff ausgeben (davon gehe ich aus).

Aber
er ignoriert direkt $diff im Posting.

wie auch

    Code:
1:
2:
3:

$posttime=$box['posttime'];
$postzeit= relative_date($diff, $box['posttime']); 


Ich bin mir super sicher, ich habe einen ganz gewaltigen Denkfehler und bräuchte ein Brett, was man mir mal auf den Kopf haut (:


So steu're ich das Totenschiff, mit voller Kraft auf's nächste Riff. Auf das ihr an der Last erstickt, mit der ihr mich auf Reisen schickt!
Für eure Unschuld sollt ich sorgen. Von Gott die Freiheit für euch borgen. Auf das die kurze Gnadenfrist nun frei von euren Zweifeln ist!
Doch eines habt ihr dabei nicht bedacht - mit wem ihr diese Gleichung macht. Ich bin der ausgestoßene Sohn und euer Spott ist mein Judaslohn
(c) In Extremo - aus gegebenen Anlass

Beitragsnr.: 28977
» Beitragslink
Beitrag drucken

bam



Schabernack



Profildaten ein-/ausblenden







 Mo,14.03.2017 00:24    RE: relative zeit anzeige bei Eintrag
 Beitrag 2 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Hi frosch!

Dies hatte ich auch einmal testweise probiert, doch habe die Versuche schnell wieder aufgegeben, denn wenn man dies nicht an den richtigen Stellen durchführt hebelt es das gesamte Forum aus.
Wenn du dies wirklich weiter verfolgen solltest, so darfst du nur die letztendliche Ausgabe umwandeln.
Bist du zu früh dran - rien ne va plus - nichts geht mehr ... großes Grinsen

Und ich befürchte dass du damit (über die Datei functions.php) viel zu früh dran bist.
Du darfst nur mehr die Ausgabe umwandeln (also in allen Dateien, wo die Ausgabe stattfindet).

Einigermaßen verständlich?


Beitragsnr.: 28982
» Beitragslink
Beitrag drucken

Gast

Gast





Profildaten ein-/ausblenden







 Di,14.03.2017 01:35    RE: relative zeit anzeige bei Eintrag
 Beitrag 3 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Also wenn ich in der functions.php folgendes schreibe:
    Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
function relative_date($posttime) {
    
$diff time() - $posttime;
        if(
$diff == 0) {
            return 
'now';
        } elseif(
$diff 0) {
            
$day_diff floor($diff 86400);
            if(
$day_diff == 0) {
            if(
$diff 60) return 'just now';
            if(
$diff 120) return '1 minute ago';
            if(
$diff 3600) return floor($diff 60) . ' minutes ago';
            if(
$diff 7200) return '1 hour ago';
            if(
$diff 86400) return floor($diff 3600) . ' hours ago';
        }
    }
}

was vor ?> eingetragen ist, dann kann ich im ganzen Forum die Funktion nutzen.
Beispiel aus der index.php
    Code:
1:
2:
echo relative_date($activtime)." ------- "relative_date(time());
$diff relative_date($activtime)." ------- "relative_date(time());

erste Zeile direkt Ausgabe zum testen, zweite Zeile als Variable gespeichert für die tpl.
Eine Funktion direkt in der tpl ausgeben ist nicht möglich, dafür muss man dies natürlich erst in der php umwandeln, damit die
Funktion weiß was sie machen muss.
Beim WBB2 wäre dies anders, wenn ich mich recht entsinne.


Beitragsnr.: 28983
» Beitragslink
Beitrag drucken

bam



Schabernack



Profildaten ein-/ausblenden







 Di,14.03.2017 06:21    RE: relative zeit anzeige bei Eintrag
 Beitrag 4 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Achso - naja.
Aber dann musst du auch überall das relative date aufrufen.
Das überschreibt sich ja nicht von Alleine! großes Grinsen

D.h. du musst nun die Funktion in sämtlichen weiteren php-Dateien kontrollieren und korregieren.
Viel Spaß ... großes Grinsen

Übrigens, noch etwas von mir zu relativen Zeitangaben.
Im Stundenbereich sind jene vielleicht gar nicht schlecht.
Aber wer hat denn heutzutage noch so ein Forum in welchem im Stundentakt geschrieben wird?
Sicher keiner mehr.
Außerdem finde ich absolute Zeitangaben wesentlich brauchbarer.
"bam, vor 7 Stunden" finde ich stumpf - "bam, um 05:15 Uhr" hat mehr ... großes Grinsen
Für mich kann diese Anzeige sogar verwirrend werden.
Aber ich bin dafür bitte kein Maßstab - das ist nur meine Meinung.


Beitragsnr.: 28984
» Beitragslink
Beitrag drucken

rabenfrosch



Lügendetektor



Profildaten ein-/ausblenden

rabenfrosch hat das Thema begonnen






 Di,14.03.2017 11:36    RE: relative zeit anzeige bei Eintrag
 Beitrag 5 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Guten Morgen ihr beiden (:

also, das ist nur für ein Feature und soll definitiv nicht im ganzen Forum aktiv sein (wobei ich diese Anzeige teilweise echt schön finde). Aber es funktioniert jetzt fast perfekt. Es wird nur so angezeigt:

    Code:
1:
2:
3:
4:

Anmerkung just nowjust now
Anmerkung2 vor 10 Minuten gepostetjust now


dieses just now wird immer angezeigt. Ich habe jetzt versucht in die Funktion, über die Funktion, in der global.php drüber, drunter, drin $diff=""; zu packen, aber es bleibt leider bestehen. Im Grunde ist es ja korrekt. just now greift ja alles ab, was innerhalb von unter 1 Minute gepostet wurde. 10 Minuten beinhaltet ja unter einer Minute. Auch habe ich versucht die logischen Operatoren etwas auszuweitern, aber auch hier scheitere ich.

z.B.

    Code:
1:
2:

if($diff <= 120 AND !($diff < 60) )


So steu're ich das Totenschiff, mit voller Kraft auf's nächste Riff. Auf das ihr an der Last erstickt, mit der ihr mich auf Reisen schickt!
Für eure Unschuld sollt ich sorgen. Von Gott die Freiheit für euch borgen. Auf das die kurze Gnadenfrist nun frei von euren Zweifeln ist!
Doch eines habt ihr dabei nicht bedacht - mit wem ihr diese Gleichung macht. Ich bin der ausgestoßene Sohn und euer Spott ist mein Judaslohn
(c) In Extremo - aus gegebenen Anlass

Beitragsnr.: 28985
» Beitragslink
Beitrag drucken

bam



Schabernack



Profildaten ein-/ausblenden







 Di,14.03.2017 11:47    RE: relative zeit anzeige bei Eintrag
 Beitrag 6 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Setze hier einmal ein exit rein, damit du den "Krempel" nicht weiter mit herumschleppst:

    Code:
1:
2:
3:
4:
5:
function relative_date($posttime) { 
    $diff = time() - $posttime; 
        if($diff == 0) { 
            return 'now';
               exit();

Dies ist aber nur in's Blaue geschossen ...


Beitragsnr.: 28986
» Beitragslink
Beitrag drucken

rabenfrosch



Lügendetektor



Profildaten ein-/ausblenden

rabenfrosch hat das Thema begonnen






 Di,14.03.2017 11:53    RE: relative zeit anzeige bei Eintrag
 Beitrag 7 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Leider nein unglücklich

Ich hab jetzt auch versucht, diesen Teil zu entfernen, sodass er eben erst ab Zeit + 0 rechnet, ebenfalls mit dem exit. Er zieht dieses now überall mit nach.


So steu're ich das Totenschiff, mit voller Kraft auf's nächste Riff. Auf das ihr an der Last erstickt, mit der ihr mich auf Reisen schickt!
Für eure Unschuld sollt ich sorgen. Von Gott die Freiheit für euch borgen. Auf das die kurze Gnadenfrist nun frei von euren Zweifeln ist!
Doch eines habt ihr dabei nicht bedacht - mit wem ihr diese Gleichung macht. Ich bin der ausgestoßene Sohn und euer Spott ist mein Judaslohn
(c) In Extremo - aus gegebenen Anlass

Beitragsnr.: 28987
» Beitragslink
Beitrag drucken

bam



Schabernack



Profildaten ein-/ausblenden







 Di,14.03.2017 12:23    RE: relative zeit anzeige bei Eintrag
 Beitrag 8 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Ah, verdammt noch einmal - zurück zum Start (Codeschnipsel des Gasts):

    Code:
1:
2:
3:
4:
 $diff = time() - $posttime; 
        if($diff == 0) { 
            return 'now'; 
        }

Hier wird permanent ein now ausgegeben.
Oder wart einmal:
Stimmt gar nicht, denn du ziehst von der aktuellen Zeit eine vergangene Zeit ab (über den Timestamp) und das Ergebnis daraus kann stets nur eine positive Zahl sein.
Was passiert denn, wenn du diesen Abschnitt komplett weglässt, denn  $diff == 0  sollte ja eigentlich gar nicht möglich sein.
Dies bedeutet zeitgleich, aber diesen Fall wirst du in einem Forum nie haben.
Wir rechnen hier in Millisekunden!


Beitragsnr.: 28988
» Beitragslink
Beitrag drucken

rabenfrosch



Lügendetektor



Profildaten ein-/ausblenden

rabenfrosch hat das Thema begonnen






 Di,14.03.2017 12:33    RE: relative zeit anzeige bei Eintrag
 Beitrag 9 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Mein Code sieht jetzt so aus:

    Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:

function relative_date($posttime) {
    $diff = time() - $posttime;
        if($diff >= 0) {
            $day_diff = floor($diff / 86400);
            if($day_diff == 0) {
            if($diff < 60) return 'just now';
            if($diff < 120) return '1 minute ago';
            if($diff < 3600) return floor($diff / 60) . ' minutes ago';
            if($diff < 7200) return '1 hour ago';
            if($diff < 86400) return floor($diff / 3600) . ' hours ago';
        }
    }
}


aber das ist exakt das gleiche Verhalten, als wenn ich den Code 1 zu 1 vom Gast kopiere. Das now bzw just now wird immer doppelt angezeigt. (Alles andere danach nicht. Wie im Beispiel, den ersten Part zieht er ja prächtig mit.)


So steu're ich das Totenschiff, mit voller Kraft auf's nächste Riff. Auf das ihr an der Last erstickt, mit der ihr mich auf Reisen schickt!
Für eure Unschuld sollt ich sorgen. Von Gott die Freiheit für euch borgen. Auf das die kurze Gnadenfrist nun frei von euren Zweifeln ist!
Doch eines habt ihr dabei nicht bedacht - mit wem ihr diese Gleichung macht. Ich bin der ausgestoßene Sohn und euer Spott ist mein Judaslohn
(c) In Extremo - aus gegebenen Anlass

Beitragsnr.: 28989
» Beitragslink
Beitrag drucken

bam



Schabernack



Profildaten ein-/ausblenden







 Di,14.03.2017 12:42    RE: relative zeit anzeige bei Eintrag
 Beitrag 10 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Was passiert denn, wenn du weiter spezifizierst?
Ich meine du lässt ja die Variablen stets weiter laufen.
Um es dir zu verdeutlichen, was ich meine:

    Code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function relative_date($posttime) {
    
$diff time() - $posttime;
       
// if($diff >= 0) {
            
$day_diff floor($diff 86400);
       
//   if($day_diff == 0) {
            
if($diff 60) return 'just now';
            if(
$diff 60 120) return '1 minute ago';
            if(
$diff 120 3600) return floor($diff 60) . ' minutes ago';
            if(
$diff 3600 7200) return '1 hour ago';
            if(
$diff 7200 86400) return floor($diff 3600) . ' hours ago';
      
//  }
  //  }
}


Beitragsnr.: 28990
» Beitragslink
Beitrag drucken

rabenfrosch



Lügendetektor



Profildaten ein-/ausblenden

rabenfrosch hat das Thema begonnen






 Di,14.03.2017 12:46    RE: relative zeit anzeige bei Eintrag
 Beitrag 11 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

So kriege ich ne weiße Seite. Damit es funktioniert, muss ich es so ändern:
if($diff > 60 AND $diff < 120)

So etwas hatte ich heute Morgen ja schon in meinem ersten Beitrag probiert:
if($diff <= 120 AND !($diff < 60) )

gleiches Verhalten. just nowjust now bleibt bestehen.


So steu're ich das Totenschiff, mit voller Kraft auf's nächste Riff. Auf das ihr an der Last erstickt, mit der ihr mich auf Reisen schickt!
Für eure Unschuld sollt ich sorgen. Von Gott die Freiheit für euch borgen. Auf das die kurze Gnadenfrist nun frei von euren Zweifeln ist!
Doch eines habt ihr dabei nicht bedacht - mit wem ihr diese Gleichung macht. Ich bin der ausgestoßene Sohn und euer Spott ist mein Judaslohn
(c) In Extremo - aus gegebenen Anlass

Beitragsnr.: 28991
» Beitragslink
Beitrag drucken

bam



Schabernack



Profildaten ein-/ausblenden







 Di,14.03.2017 12:50    RE: relative zeit anzeige bei Eintrag
 Beitrag 12 von 19
diesen Beitrag editieren zum Mitglied Kontakt aufnehmen zum Ende der Seite springen zum Anfang der Seite springen
zum Zitieren markieren:

Ich habe den Schnipsel in meinem letzten Beitrag noch einmal farbig dargestellt.
Mit jenem bekommst du eine weiße Seite?
Das ist meist ein php-500-Error.

Kannst du dies bitte noch einmal überprüfen.

Und dies bitte auch gleich:

    Code:
1:
2:
//  echo relative_date($activtime)." ------- ". relative_date(time()); 
$diff relative_date($activtime)." ------- "relative_date(time());

Nicht, dass dir das Echo hier dauernd rein hallt! großes Grinsen
Am Besten ist es wenn du dies ausprobierst und dann wieder deinen gesamten Schnipsel zeigen würdest.
Ich werde hier auch schon wieder meschucke ... großes Grinsen

Heute war ich brav einkaufen.
Und nun soll ich auch noch denken - wo kommen wir denn dahin? abblachen


Beitragsnr.: 28992
» Beitragslink
Beitrag drucken

  2 Seiten: 1 2 >
 zur Zeit im Thread: 1 Gast
 KaXrikaturenforum » bams und Peters wbblite Ecke » Fragen und Antworten zu Forenproblemen » relative zeit anzeige bei Eintrag


            
Antwort erstellen Zum Seitenanfang springen


   
Powered by Burning Board Lite 1.0.2 © 2001-2004 WoltLab GmbH
Online seit 12 Jahren und 68 Tagen