Wie lässt sich folgendes Problem mit Dompdf lösen?

Hallo,

ich möchte mit PHP PDF-Datei erzeugen und wollte gerne Dompdf dafür benutzen. Dabei tritt jetzt folgender Fehler auf: Es wird ein leeres PDF-Dokument erzeugt, ob wohl Text eingegeben wurde, und dieses Dokument wird in meinem Download Ordner gespeichert. Wenn ich das Dokument öffne, wird mir angezeigt, dass es sich nicht um eine PDF - Datei handelt bzw. das sie defekt ist. Nun habe ich mir die "autoload.php", die mit Dompdf geliefert wurde, genauer angesehen.

if (PHP_VERSION_ID < 50600) {
    if (!headers_sent()) {
        header('HTTP/1.1 500 Internal Server Error');
    }
    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
    if (!ini_get('display_errors')) {
        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
            fwrite(STDERR, $err);
        } elseif (!headers_sent()) {
            echo $err;
        }
    }
    trigger_error(
        $err,
        E_USER_ERROR
    );
}


require_once __DIR__ . '/composer/autoload_real.php';


return ComposerAutoloaderInitac2d307f4ed514763a8119f3523066bb::getLoader();

Der letzte Eintrag "return ComposerAutoloaderInitac2d307f4ed514763a8119f3523066bb::getLoader();" ist rot unterstrichen und VSC gibt diese Fehlermeldung aus: Undefined type 'ComposerAutoloaderInitac2d307f4ed514763a8119f3523066bb'.intelephense(P1009)

Vielleicht hatte hier schon mal jemand das gleiche problem und kann mir helfen.

Danke für jede Hilfe

PHP, PDF-Datei

Wie erstelle ich mit PHP das durchzählen der Tage in einem Monatskalender richtig?

Hallo,

ich übe PHP und erstelle gerade einen Monatskalender in einer Tabelle. In meinem Code habe ich irgendwo einen Logikfehler. Zum Beispiel beginnt der Monat Februar in diesem Jahr an einem Donnerstag. Der Kalender erzeugt korrekt 3 leere Zellen für Mo, Di und Mi. Am Donnerstag beginnt die Zählung der Tage aber nicht mit 1 sondern mit 4. Wie erreiche ich, dass die Zähluing der Tage erst nach erzeugen der leeren Zellen am Monatsanfang beginnt. Es wäre nett wenn sich das mal jemand ansieht und mir auch die Logik erklärt, damit ich das Ganze verstehe.

Vielen Dank für's Lesen

Hier ist der Code:

<?php
       $gesamt_tage = date("t");
       $einzel_tage = 1;
       $akt_tag = date("j");

       $leer_zellen = date("N", strtotime(date("Y-m-01"))) - 1;


    ?>

    <table border="1" cellpadding="1" cellspacing="1" summary="">
       <thead>
           <tr>
               <th>Mo</th>
               <th>Di</th>
               <th>Mi</th>
               <th>Do</th>
               <th>Fr</th>
               <th>Sa</th>
               <th>So</th>
           </tr>
       </thead>

       <?php

           for($tr = 1; $tr <= 5; $tr++) {
               echo "<tr>";

                   for($td = 1; $td <= 7; $td++) {
                       if($einzel_tage <= $leer_zellen) {
                           echo "<td>&nbsp;</td>";
                           $einzel_tage++;
                       } else {
                           echo "<td>";
                           if($einzel_tage <= $gesamt_tage) {     
                               echo $einzel_tage++;

                           }
                       echo "</td>\n";
                       }
                   }


               echo "</tr>\n";
           }



        ?>


</table>
Schleifen, PHP

Wo liegt der Fehler, dass JavaScript neu hinzugefügte Bilder nicht berücksichtigt?

Hallo,

ich lerne gerade JavaScript.

Um es zu üben, habe ich ein kleines Memoryspiel programmiert. Dabei sollen aus mehreren Bilder per Zufall zehn Bildpaare ausgewählt und auf der Seite angezeigt werden. Als ich heute weiter Bilder eingefügt habe, fiel mir auf, dass die neu hinzugefügten Bilder nicht vom Zufallsgenerator berücksichtigt werden. Leider finde ich den Fehler nicht.

Hier ist mein Code:

const bilder = [
  'Memory/hund1.png',
  'Memory/katze1.png',
  'Memory/blume1.png',
  'Memory/blitz1.png',
  'Memory/hexe.png',
  'Memory/ufo.png',
  'Memory/frau.png',
  'Memory/geist.png',
  'Memory/papagei.png',
  'Memory/schmetterling.png',
  'Memory/taschenuhr.png',
  'Memory/kompass.png',
  'Memory/hasen.png',
  'Memory/springbrunnen.png',
  'Memory/ballon.png',
  'Memory/daenerys.png',
  'Memory/dino.png',
  'Memory/erde.png',
  'Memory/frosch.png',
  'Memory/laub.png',
  'Memory/orange.png',
  'Memory/paar.png',
  'Memory/schloss.png',
  'Memory/teddy.png',
  'Memory/tiger.png',
  'Memory/tropen.png',
  'Memory/wasserfall.png',
  'Memory/biene.png',
  'Memory/mädchen.png',
  'Memory/villa.png',
  'Memory/insel.png',
  'Memory/insel2.png',
  'Memory/wettersymbol.png',
  'Memory/altesauto.png',
  'Memory/ente.png',
  'Memory/kolibri.png',
  'Memory/tinkerbell.png',
  'Memory/fraukatze.png',
  'Memory/vögellaub.png',
  'Memory/sphinx.png',
  'Memory/skulptur.png',
  'Memory/schach.png',
  'Memory/raben.png',
  'Memory/hochhaus.png',
  'Memory/zitronen.png',
  'Memory/lstand.png',
  'Memory/limonade.png',
  'Memory/trinken.png',
  'Memory/hexe2.png',
  'Memory/leuchtturm.png',
  'Memory/leuchtturm2.png',
  'Memory/dänemark.png',
  'Memory/dänemark2.png',
  'Memory/schienen.png',
  'Memory/kuba.png',
  'Memory/havanna.png',
  'Memory/tinkerbell.png',
  'Memory/fraukatze.png',
  'Memory/vögellaub.png',
  'Memory/sphinx.png',
  'Memory/skulptur.png',
  'Memory/schach.png',
  'Memory/raben.png',
  'Memory/hochhaus.png',
  'Memory/zitronen.png',
  'Memory/lstand.png',
  'Memory/limonade.png',
  'Memory/trinken.png',
  'Memory/hexe2.png',
  'Memory/leuchtturm.png',
  'Memory/leuchtturm2.png',
  'Memory/dänemark.png',
  'Memory/dänemark2.png',
  'Memory/schienen.png',
  'Memory/kuba.png',
  'Memory/havanna.png'
];
let karten = [];
let aufgedeckteKarten = 0;
let ersteKarte = null;
let zweiteKarte = null;
let übereinstimmendeKarten = 0;
let spielfeldGesperrt = false;

function kartenMischen() {
  const ausgewählteBilder = bilder.slice(0);
  karten = ausgewählteBilder.sort(() => Math.random() - 0.5);
  karten = karten.slice(0, 10).concat(karten.slice(0, 10));
}

function karteUmdrehen(karte) {
  if (spielfeldGesperrt) return;
  if (karte === ersteKarte) return;

  karte.style.backgroundImage = `url(${karte.dataset.bild})`;

  if (!ersteKarte) {
    ersteKarte = karte;
  }
  else {
    zweiteKarte = karte;
    übereinstimmungPrüfen();
  }
}

function übereinstimmungPrüfen() {
  spielfeldGesperrt = true;

  if (ersteKarte.dataset.bild === zweiteKarte.dataset.bild) {
    übereinstimmendeKarten += 2;

    if (übereinstimmendeKarten === karten.length) {
      alert('Herzlichen Glückwunsch! Du hast gewonnen!');
    }

    kartenDeaktivieren();
  }
  else {
    setTimeout(() => {
      ersteKarte.style.backgroundImage = 'none';
      zweiteKarte.style.backgroundImage = 'none';
      kartenZurücksetzen();
    }, 1000);
  }
}

function kartenDeaktivieren() {
  ersteKarte.removeEventListener('click', () => karteUmdrehen(ersteKarte));
  zweiteKarte.removeEventListener('click', () => karteUmdrehen(zweiteKarte));
  kartenZurücksetzen();
}

function kartenZurücksetzen() {
  [ersteKarte, zweiteKarte] = [null, null];
  spielfeldGesperrt = false;
}

const spielfeld = document.getElementById('spielfeld');
kartenMischen();

for (let i = 0; i < karten.length; i++) {
  const karte = document.createElement('div');
  karte.classList.add('karte');
  karte.dataset.bild = karten[i];
  karte.style.backgroundImage = 'none';
  karte.addEventListener('click', () => karteUmdrehen(karte));
  spielfeld.appendChild(karte);
}

Es wäre schön wenn mir jemand sagt, wo mein Fehler liegt.

Danke

Spiele, JavaScript

Wie gebe ich bei PHP mehrere Bedingungen in einer Schleife ein?

Hallo,

ich möchte gerne 2 Bedingungen in einer PHP for – Schleife unterbringen.

Dazu habe ich mich an diese Anleitung gehalten und die beiden Bedingungen mit dem && Operator verknüpft.

https://www.php.de/forum/webentwicklung/php-einsteiger/php-tipps-2006/41760-while-schleife-mit-mehreren-bedingungen

Trotzdem bekomme ich ständig die Fehlermeldung, das PHP kein ; (Strichpunkt) erwartet, sondern eine schließende runde Klammer.

Mein Editor zeigt mir den Fehler in der zweiten for – Schleife bei der Variablen $tageszahl an. Dort wird der Strichpunkt bemängelt.

Desweiteren habe ich versucht, beide Bedingungen zusätzlich in runde Klammern zu setzten. Da wird dann außer dem Strichpunkt auch noch der && Operator bemängelt.

Hier ist mein Code:

        <table border="1">
            <tr>
                <th>Mo</th>
                <th>Di</th>
                <th>Mi</th>
                <th>Do</th>
                <th>Fr</th>
                <th>Sa</th>
                <th>So</th>
            </tr>
        <?php 
            
            $reihen = 6;
            $zellen = 7; 
            $enddatum_monat = date("t");
            
            for($tr = 1; $tr <= $reihen; $tr++ ) {
                echo "<tr>";
                for($td = 1; $td <= $zellen; $td++ && $tageszahl = 1; $tageszahl <= $eintrag; $tageszahl++)  {
                    echo "<td> $tageszahl </td>"; 
                }
                
                echo "</tr>";
            }           

        ?>
        </table>

Es wäre nett, wenn mir jemand zeigen würde, wie mehrere Bedingungen korrekt in einer Schleife untergebracht werden.

Danke

Computer, programmieren, Schleifen, PHP

Wie kann ich bei Javascript eine andere Zeitzone anzeigen?

Hallo,

ich habe absolut keine Ahnung von Javascript, bin aber jetzt darauf angewiesen.

Ich möchte gerne auf einer Webseite die fortlaufende Uhrzeit für ein paar Städte in verschiedenen Zeitzonen anzeigen. Bei PHP wäre das sehr einfach indem ich für Melbourne z.B. folgendes eingebe:

date_default_timezone_set('Australia/Melbourne');

Aber leider kann PHP ja keine fortlaufende Uhrzeit anzeigen

Nun habe ich dieses Javascript Programm im Internet entdeckt und das entspricht auch meinen Vorstellungen. Nur wie kann ich hier andere Zeitzonen einstellen?

   <h3>Berlin</h3>
   <p id="zeit_berlin">
       <script>
           window.setInterval("datum()",1000);

           function datum() {
              var zeit = new Date ();
              var stunde = (zeit.getHours() < 10 ? '0' + zeit.getHours() : zeit.getHours());
              var minute = (zeit.getMinutes() < 10 ? '0' + zeit.getMinutes() : zeit.getMinutes());
              var sekunde = (zeit.getSeconds() < 10 ? '0' + zeit.getSeconds() : zeit.getSeconds());
              document.getElementById("zeit_berlin").innerHTML = ' '
              + stunde + ':' + minute + ':' + sekunde;
           }

           datum();

       </script>
   </p>

Vielen Dank für jede Hilfe.

Computer, JavaScript, Zeitzonen
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.