WebsiteBaker Logo
  • *
  • Templates
  • Help
  • Add-ons
  • Download
  • Home
*
Welcome, Guest. Please login or register.

Login with username, password and session length
 

News


WebsiteBaker 2.13.6 is now available!


Will it continue with WB? It goes on! | Geht es mit WB weiter? Es geht weiter!
https://forum.websitebaker.org/index.php/topic,32340.msg226702.html#msg226702


The forum email address board@websitebaker.org is working again
https://forum.websitebaker.org/index.php/topic,32358.0.html


R.I.P Dietmar (luisehahne) and thank you for all your valuable work for WB
https://forum.websitebaker.org/index.php/topic,32355.0.html


* Support WebsiteBaker

Your donations will help to:

  • Pay for our dedicated server
  • Pay for domain registration
  • and much more!

You can donate by clicking on the button below.


  • Home
  • Help
  • Search
  • Login
  • Register

  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.13.x) »
  • General Help & Support »
  • PHP-Termin-Skript
  • Print
Pages: [1]   Go Down

Author Topic: PHP-Termin-Skript  (Read 7210 times)

Offline gurkenhals

  • Posts: 98
  • Gender: Male
PHP-Termin-Skript
« on: December 18, 2020, 05:47:41 PM »
Moin allerseits!

Seit etlichen Jahren nutze ich ein PHP-Script zu Erzeugung einer Termin-Liste. Nun plötzlich wird bei der Erzeugung einer neuen Liste für 2021 die Sortierung nicht mehr richtig dargestellt. Kann das an den Servereinstellungen (PHP-Version:7.4.13) oder an den Zeit-Einstellungen im WB (2.12.2 r379) liegen?
Das gleiche Script zeigt unter https://liederstube.de/pages/termine-2020.php eine ordentliche Darstellung, auf https://liederstube.de/pages/termine-2021.php jedoch nicht mehr. Über Hinweise wäre ich sehr dankbar!  (Y)

Code: [Select]
<?php // Hier nichts verändern !
 
// Hilfsfunktion zum Befüllen des Dateninhalts. 
function generateContent(&$dataArray, &$output, &$startCounter, $num, $dateUntilBreak){
    
// liste beginnt
    
$output .= '<ul class="termine">';
    for  (; 
$startCounter < $num; $startCounter++) {
        
// Vergleiche das Datum, um die Weichnachtskonzerte extra hervorheben zu können.     
        
if(strtotime($dataArray[$startCounter][0]) >= strtotime($dateUntilBreak->format('Y-m-d H:i'))){
            break;
        }
        
// Leider steht das "Uhr" in dem zweiten Arrayteil. Daher muss ich hier ein bisschen tricksen 
        
$concertDate = strftime("%d. %B %Y, %H:%M", strtotime($dataArray[$startCounter][0]));
        
$concertTitle = str_replace("Uhr, ", "", stripslashes($dataArray[$startCounter][1]));
        
$concertPlace = stripslashes($dataArray[$startCounter][2]);
        
$output .= '<li>'.$concertDate.' Uhr<br/>"'.$concertTitle.'"<br/>'.$concertPlace.'</li>';
    }
    
// Liste beenden
    
$output .= '</ul><p>&nbsp;</p>';
}
// Variable für den Dateninhalt
$sOutput = '';
$sTitle = '<h2>Konzert-Termine ';
// Lokale Variable für Deutsch ist
if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN')
    
$localeCode = 'ge';
else
    
$localeCode = 'de_DE';
$loc_de = setlocale (LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');
setlocale(LC_TIME,$loc_de);
// Datum mit Uhrzeit zum berechnen, welche Termine angezeigt werden
// Das aktuelle Jahr
 
$actualYear = new DateTime(strftime("%Y", strtotime(date("Y"))).'-01-01 00:00:00');

// Weihnachtsmonate für das aktuelle Jahr
$christmasDate = new DateTime(strftime("%Y", strtotime($actualYear->format('Y'))).'-12-01 00:00:00');

// date für das Nächste Jahr
$nextYear = new DateTime(strftime("%Y", strtotime($actualYear->format('Y'))).'-01-01 00:00:00');
$nextYear->modify("+1 year");

// date für das übernächste Jahr
$theYearAfterNext = new DateTime(strftime("%Y", strtotime($actualYear->format('Y'))).'-01-01 00:00:00');
$theYearAfterNext->modify("+2 year");

// Counter für die Anzahl an gelesenen Daten bzw. Zeilen
$count = 0;
// Datei zum Lesen öffnen
$handle = fopen ("https://liederstube.de/templates/findresp/Termine-2021.txt","r");
// Daten werden aus der Datei gelesen
while ( ($data = fgetcsv ($handle, 1000, ";")) !== FALSE ) {
    
// Anzahl der Felder im Array $data      
    
$num = count ($data);    
    
// Ablegen der Daten in der Form
    // ARRAY[Eintrag / Zeilenummer][Elemente(Zeit=0, Titel=1, Ort=2)]
    // Dabei ist die Grenze das aktuelle Jahr 
    
if(strtotime($data[0]) >= strtotime($actualYear->format('Y-m-d H:i'))){
        for (
$c=0; $c < $num; $c++) {
            
$array[$count][$c] = $data[$c];
        } 
        
$count++;
    } 
} 
fclose ($handle);
// Array noch sortieren, damit das Datum immer in der richtigen Reihenfolge steht
array_multisort($array);
// Titel setzen "Konzerte-Termine JAHR"
$sOutput .= $sTitle.strftime("%Y", strtotime($actualYear->format('Y'))).'</h2><p>&nbsp;</p>';
// Jeden Eintrag bearbeiten
$c=0;
// Datenerstellen bis zur Weihnachtszeit
generateContent($array, $sOutput, $c, $count, $christmasDate);
// Es sind noch Daten zu verarbeiten für die aktuelle Weichnachtszeit
if($c < $count){
    
$sOutput .= '<h2>Weihnachtskonzerte</h2><p>&nbsp;</p>';
    
// Weihnachtszeit beginnt 
    
generateContent($array, $sOutput, $c, $count, $nextYear);
}
// Es sind noch Daten zu verarbeiten für das nächste Jahr
if($c < $count){
    
// Titel setzen "Konzerte-Termine JAHR"
    
$sOutput .= $sTitle.$nextYear->format('Y').'</h2><p>&nbsp;</p>';
    
generateContent($array, $sOutput, $c, $count, $theYearAfterNext);
}
$sOutput = str_replace("ä", "&auml;", $sOutput);
$sOutput = str_replace("Ä", "&Auml;", $sOutput);
$sOutput = str_replace("ö", "&ouml;", $sOutput);
$sOutput = str_replace("Ö", "&Ouml;", $sOutput);
$sOutput = str_replace("ü", "&uuml;", $sOutput);
$sOutput = str_replace("Ü", "&Uuml;", $sOutput);
$sOutput = str_replace("ß", "&szlig;", $sOutput);

// Am Schluss wird die richtige Zeichenkodierung gesetzt
$sOutput = iconv( "Windows-1252", "UTF-8", $sOutput );
print 
$sOutput;

edit:
code farbig gemacht (dbs)
« Last Edit: December 18, 2020, 06:25:17 PM by dbs »
Logged

Offline dbs

  • Betatester
  • **
  • Posts: 8914
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Re: PHP-Termin-Skript
« Reply #1 on: December 18, 2020, 07:10:21 PM »
Hi, interessante Sache.
Wenn du testweise die Termine von 2021 in der 2020.txt verwendest, dann klappt die Darstellung auch wie gewünscht.
Also oben Konzerttermine und ab Dez dann Weihnachtskonzerte.

Es könnte aber sein, dass ab 01.01.2021 die Reihenfolge stimmt.
« Last Edit: December 18, 2020, 07:18:32 PM by dbs »
Logged
https://onkel-franky.de

Offline gurkenhals

  • Posts: 98
  • Gender: Male
Re: PHP-Termin-Skript
« Reply #2 on: December 18, 2020, 07:37:08 PM »
Hi,

die Logik verstehe ich nicht. Wenn ich die Termine von 21 in die 20 verschiebe, passt es? Warum? Und wenn ich die Termine aus 20 in die 2021.txt lege? Leider habe ich keine Testumgebung mit xampp, und die Aktualisierung der Neuansicht nach Änderungen im Live-Betrieb dauert viel zu lange, is'n Server von one.com.... Warum tritt dieses Phänomen erst jetzt auf...? Was aktualisiert wurde, ist WB und PHP. Du siehst schon, nur Fragen und keine Antworten...  :lol: Vielleicht warte ich also mal den 01. ab. Oder besser den 02.  :-D
Logged

Offline dbs

  • Betatester
  • **
  • Posts: 8914
  • Gender: Male
  • tioz4ever
    • WebsiteBaker - jQuery-Plugins - Module - Droplets - Tests
Re: PHP-Termin-Skript
« Reply #3 on: December 18, 2020, 07:57:44 PM »
Kann dir erstmal nur sagen, dass es mit WB 2.13 und PHP 7.4 genauso aussieht wie jetzt bei dir. Also 2020 gut und 2021 anders.
Vielleicht finde ich die Logik.
Logged
https://onkel-franky.de

Offline gurkenhals

  • Posts: 98
  • Gender: Male
Re: PHP-Termin-Skript
« Reply #4 on: January 01, 2021, 08:18:08 PM »
Ok, Problem gelöst; alles wird ordentlich angezeigt!  :lol:
Ein frohes Neues euch allen!  (Y)
Logged

Offline DarkViper

  • Forum administrator
  • *****
  • Posts: 3087
  • Gender: Female
Re: PHP-Termin-Skript
« Reply #5 on: January 03, 2021, 08:31:05 PM »
und was war die Lösung? (bin doch von Berufs wegen neugierig...  ;-))
Logged
Der blaue Planet - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen

"We need education to cope with digitalization - and NOT the digitalization of education.!"

Tägliches Stoßgebet: Oh Herr, wirf Hirn vom Himmel !

Offline gurkenhals

  • Posts: 98
  • Gender: Male
Re: PHP-Termin-Skript
« Reply #6 on: January 04, 2021, 07:53:02 PM »
Die Lösung war, auf den 01.01.21 zu warten, um dann bestätigt zu sehen, dass das Script funktioniert, wie es funktionieren soll. Und das tut es nun. Allerdings bin ich der Ansicht, dass bislang die Termine für das nächste Jahr immer schon zum Ende des laufenden Jahres eingetragen wurden (nicht von mir, deshalb war ich mir in der Sache nicht ganz sicher) und es da nie Probleme gab.
Logged

  • Print
Pages: [1]   Go Up
  • WebsiteBaker Community Forum »
  • WebsiteBaker Support (2.13.x) »
  • General Help & Support »
  • PHP-Termin-Skript
 

  • SMF 2.0.19 | SMF © 2017, Simple Machines
  • XHTML
  • RSS
  • WAP2