Ankündigung

Einklappen
Keine Ankündigung bisher.

Zukünftigen Termin anzeigen lassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Zukünftigen Termin anzeigen lassen

    Hallo,

    ich würde gerne folgendes machen:

    Auf meinen Seiten, würde ich gerne Termine einblenden, welche aus einem TXT-File stammen. Ich habe jetzt das so gelöst, dass jedes File das Tagesdatum hat und hole mir dieses File per
    Code:
    file_exists($filename)
    , in Verbindung mit einer Date-Abfrage, für den jeweiligen Tag. Das funktioniert auch richtig gut.

    Nun würde ich allerdings gerne, dass wenn eines dieser Files leer ist, oder kleiner als ein bestimmer kb-Wert "<10kb" ist, dann das nächste File genommen wird, welches ">10kb" ist. Also das Script springt im Datum so lange durch bis es ein File gibt, welches größer dem angegebenen Wert entspricht. Dieses wird dann angezeigt.

    Im Moment habe ich das noch so gelöst, dass wenn Wert = "0" ist, dann eine HTML-Ausgabe, Fehlermeldung, kommt.

    Nun würde ich jedoch gerne den zukünftigen Termin einblenden, also das File nehmen, welches als nächstes kommen würde, wäre es denn größer "0".

    Code:
    if (filesize($filename) == "0")
    Das Problem ist also was nach dem oben genannten Code in der filesize-Abfrage steht, das wenn Wert = "0" ist, dann das nächste File genommen wird, welches ">" gesuchtem Wert ist.

    Die Abfrage würde dann in etwa so lauten: Suche das File, welches >0 ist und zeige dies an.

  • #2
    Das ist doch Murks. Wieso packst du deine Termine nicht einfach in eine Datei (bspw. im JSON Format) oder noch besser: in eine Datenbank.
    [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

    Kommentar


    • #3
      Alle mal besser als deine Textdateienvariante ist eine Datenbank dafür heranzuziehen. Schaue dir mal SQLite an, das ist immer bei php dabei und ein ordentlicher Ersatz fürs Speichern in Dateien.
      Anleitung zur Benutzung.

      Kommentar


      • #4
        Ich würde das jedoch gerne ohne SQL machen.

        Geht denn das gar nicht, dass ich eine solche Prüfung mit PHP ausführen kann?

        Kommentar


        • #5
          lottikarotti hat es doch klar auf den Punkt gebracht, es ist Murks.
          Was gefällt dir an SQL nicht?
          Und warum meinst du, dass deine Lösung besser ist, obwohl du vor Problemen stehst, die auch noch andere für dich lösen sollen weil du es nicht hin bekommst.

          Kommentar


          • #6
            Zitat von Alex73 Beitrag anzeigen
            Geht denn das gar nicht, dass ich eine solche Prüfung mit PHP ausführen kann?
            Prinzipiell geht das auch mit PHP, der Aufwand ist nur unverhältnismäßig hoch.

            Oder salopp ausgedrückt: Der Meister kann’s kaum glauben, auch mit ’nem Hammer kann man schrauben.

            Kommentar


            • #7
              Also, ich habe hier nach einem Lösungsansatz gefragt.

              protestix Ich habe nie behauptet, dass es eine ultimative Lösung von mir sei. Ich hätte dies nur gerne per PHP gelöst und nicht über MySQL. Ich dachte Foren, dieser Art, wären genau dafür da, dass man einander hilft.

              Dormilich - gut, wenn das wirklich so lange dauert, dann ist das halt so.

              Kommentar


              • #8
                Zitat von Alex73 Beitrag anzeigen
                Dormilich - gut, wenn das wirklich so lange dauert, dann ist das halt so.
                Nicht umsonst basiert jeder Kalender auf irgendeiner Art Datenbank. Das Suchen ist wesentlich schneller und effizienter.

                Kommentar


                • #9
                  Neben den richtigen Anmerkungen der anderen hier, wo genau liegt dein Problem?

                  Nach deiner Anforderung im ersten Post generierst du dir den Dateinamen aus dem gewünschten Datum. Dann prüfst du ob diese Datei deinen Anforderungen entspricht und wenn nicht beginnt der Prozess von vorne einen Tag weiter (DateTime +1 day).
                  Das läuft solange bis deine Anforderung erfüllt ist.

                  Kommentar


                  • #10
                    ChromOxid - Danke! Klar dass es über PHP eine echte Alternative und einfache Lösung gibt, scheint so zumindest.

                    Im Moment bin ich noch hier:
                    Code:
                    $date = date("m-d");
                    $filename = "..." . 'ordner/' . "$date.php";
                    if (filesize($filename) == "0") { ... }
                    else { if (file_exists($filename)) { include ... }

                    Wie mache ich das nun, wenn file exakt 0, dann weiter zum nächsten File bzw. zum nächsten Tag?

                    Kommentar


                    • #11
                      Das Datum immer erhöhen und dann abtesten wie ChromOxid vorgeschlagen hat ist wohl die einfachste Variante.
                      Eine andere Möglchkeit geht über glob() und array_filter(). Mit glob() holst du alle Dateinamen die deinem Muster entsprechen und filterst alle raus, deren Größe unter deinem Limit sind und deren Datum in der Zukunft liegt. Dann sortierst du das Ergebnis nach dem Datum im Dateinamen. Mit der ersten Datei hast du dein Resultat.
                      Mit array_filter hatten wir hier im Forum einige Beiträge.
                      Eine weitere Lösung sehe ich auch mit array_reduce(). Die dafür benötigte Callback-Funktion ist dann schon etwas anspruchsvoller.

                      Am Rande: Warum postest du solche Frage unter Fortgeschritten?

                      Kommentar


                      • #12
                        MOD: Verschoben von Fortgeschritten
                        The string "()()" is not palindrom but the String "())(" is.

                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          jspit die anderen Mitglieder, weiter oben, waren so frei, meine Frage als extrem schwierig einzustufen, das dachte ich am Anfang auch, das es ein Thema ist, welches für Fortgeschrittene eher geeignet ist.

                          Kommentar


                          • #14
                            https://www.php.de/forum/webentwickl...rf-hier-posten

                            Kommentar


                            • #15
                              Moin,

                              ich denke, dass das nicht die optimale Lösung ist, sollte dir mittlerweile bewusst sein .
                              Du musst dir noch überlegen, dass du im Zweifelsfall auch ein Abbruchkriterium brauchst, da du sonst in eine Endlosschleife geraten kann. Es bietet sich an, dafür die Iterationen zu zählen.

                              Ein kleines Beispiel-Script das dir weiterhelfen sollte:

                              PHP-Code:
                              <?php
                              $validFile 
                              null;
                              $currentDate = new DateTime();
                              const 
                              MINIMUM_FILESIZE 0;
                              const 
                              MAXIMUM_ITERATIONS 10;
                              const 
                              TARGET_FOLDER "ordner/";
                              $iterations 0;
                              while(!
                              $validFile) {
                                  
                              $currentDate->add(new DateInterval('P1D'));
                                  
                              $fileName TARGET_FOLDER $currentDate->format('Y-m-d') . ".txt";
                                  if(
                              file_exists($fileName) && filesize($fileName) > MINIMUM_FILESIZE) {
                                      
                              $validFile $fileName;
                                  }
                                  if(++
                              $iterations MAXIMUM_ITERATIONS) {
                                      die(
                              "no valid files found");
                                  }    
                              }
                              echo 
                              $validFile;
                              "Dummheit redet viel..Klugheit denkt und schweigt.." [Amgervinus]

                              Kommentar

                              Lädt...
                              X