Ankündigung

Einklappen
Keine Ankündigung bisher.

Bild nach Datum ausgeben

Einklappen

Neue Werbung 2019

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

  • Bild nach Datum ausgeben

    Schönen guten Abend an alle!
    Nachdem ich mich einige Stunden mit meinem Problem beschäftigt habe, komme ich nicht mehr weiter. Ich möchte ein Bild abhängig vom aktuellen Datum ausgeben. Das bekomme ich auch hin.

    PHP-Code:
    $timestamp time();
    $datum date("m-d-y"$timestamp);
    echo 
    '<','img ','src=',$datum,'.png" width="600" alt="Hier sollte das aktuelle Bild zu sehen sein.">'
    Da es nicht für jeden Tag ein Bild gibt, möchte ich für diese Tage einen Hinweis anzeigen, quasi ein alternatives Bild. Alle Bilder und php-Dateien liegen im gleichen Verzeichnis. Mit dem neuen Code wird ein für den aktuellen Tag vorhandene Bild auch problemlos angezeigt, aber wenn kein Bild vorhanden ist, wird nur der alt-text angezeigt, nicht jedoch der Platzhalter. Was mache ich falsch? Vielen Dank, dass ihr euch das anschaut!

    PHP-Code:
    $timestamp time();
    $datum date("m-d-y"$timestamp);
    $filename $datum;
    if (
    file_exists($filename).png) {
        echo 
    '<','img ','src=',$datum,'.png" width="600" alt="Hier sollte der aktuelle Dienst zu sehen sein.">';
    } else {
        echo 
    '<img src="platzhalter.png" alt="Platzhalter">';


  • #2
    Das .png hinter file_exists ist falsch und sorgt dafür, dass der Ausdruck immer true ist.
    Wenn du das error_reporting hochdrehst müsstest du das auch angezeigt bekommen:
    Code:
    Use of undefined constant png - assumed 'png' (this will throw an Error in a future version of PHP)
    Und man verknüpft auch Strings nicht mit Komma sondern mit Punkt, siehe http://php.net/manual/de/language.operators.string.php
    Bei echo funktioniert das zwar auch mit Komma, aber bei file_exists auf jeden Fall den Punkt verwenden zum verknüpfen.
    sorry, shift-taste kaputt

    Kommentar


    • #3
      Zitat von Meister1900 Beitrag anzeigen
      Und man verknüpft auch Strings nicht mit Komma sondern mit Punkt, siehe http://php.net/manual/de/language.operators.string.php
      Jein. Prinzipiell hast du recht, in dem Fall (direktes Ausgeben mit echo) geht aber auch ein Komma da sich echo dabei wie eine Funktion verhält und man damit eben mehrere auszugebende Parameter übergibt, siehe Handbuch.

      Kommentar


      • #4
        Jo, habe das noch ergänzt.
        sorry, shift-taste kaputt

        Kommentar


        • #5
          Danke für die Antworten! Wenn ich das .png hinter file_exists weglasse dann wird ein für den aktuellen Tag vorhandenes Bild nicht angezeigt, dafür der Platzhalter.
          Bei echo funktioniert das zwar auch mit Komma, aber bei file_exists auf jeden Fall den Punkt verwenden zum verknüpfen.
          Das ist eben der Knackpunkt, dass ich es nicht hinbekomme, $filename mit der Dateiendung zu verknüpfen, weil diese ja selbst einen Punkt enthält.

          Leider sind viele Erklärungen auf die verwiesen wird für mich unverständlich, weil meine Englischkenntnisse dafür unzureichend und automatische Übersetzungen meist unverständlich sind.

          Kommentar


          • #6
            Grundlagen lernen sollte helfen. String-Verknüpfung wird eigentlich in jedem guten Grundlagentutorial oder auch Grundlagenbuch durchgenommen.

            PHP-Code:
            $filename date('m-d-y') . '.png'
            PHP-Code:
            <?php if (file_exists($filename)): ?>
                <img src="<?= htmlspecialchars($filenameENT_COMPAT'UTF-8'?>" alt="Hier sollte der aktuelle Dienst zu sehen sein." />
            <?php else: ?>
                <img src="platzhalter.png" alt="Platzhalter" />
            <?php endif; ?>

            Kommentar


            • #7
              Jetzt hab ich's! (file_exists($filename).'.png') ist die Lösung
              Was ein zusätzlicher Punkt und zwei Apostrophe ausmachen.
              Nochmals herzlichen Dank, vor allem dafür, dass ihr mir nur einen Denkanstoß und nicht die fertige Lösung präsentiert habt, so lerne ich besser!

              Ergänzung: hellbringer Deine Lösung habe ich erst nach abschicken meiner Lösung gesehen. Hier noch mal mein kompletter funktionierender Code.
              PHP-Code:
              $timestamp time();
              $datum date("m-d-y"$timestamp);
              $filename $datum;
              if (
              file_exists($filename).'.png') {
                  echo 
              '<','img ','src=',$datum,'.png" width="600" alt="Hier sollte der aktuelle Dienst zu sehen sein.">';
              } else {
                  echo 
              '<img src="platzhalter.png" alt="Platzhalter">';
              }

              ?> 

              Kommentar


              • #8
                Zitat von andreas63 Beitrag anzeigen
                Jetzt hab ich's! (file_exists($filename).'.png') ist die Lösung
                Nein. So hast du die Bedingung »true.'.png'« bzw. »false.'.png'« was immer true ergibt. Das »'.png'« muss direkt hinter $filename, vor die schließende Klammer von file_exists (siehe #6 von hellbringer).

                Kommentar


                • #9
                  tk1234 Ja, sorry, hab mich zu früh gefreut. Der nicht gelöschte Cache war schuld, also am Ende doch ich. Jetzt funktioniert es aber tatsächlich!

                  Kommentar

                  Lädt...
                  X