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
Warum wird die Datenbank nicht ausgelesen?

Hallo,

ich erstelle für einen Bekannten eine Webseite die eine Datenbank beinhaltet. Auf XXAMP werden die Inhalte der Datenbank völlig korrekt ausgegeben. Heute habe ich die Dateien bei Strato hochgeladen und die SQL Datei bei Strato importiert. Die Zugangsdaten habe ich auf der Webseite per "kopieren" und "einfügen" eingetragen.

Trotzdem werden die Inhalte der Datenbank nicht angezeigt.

Mir gehen die Ideen aus.

Hier ist mein PHP Code

<?php
      error_reporting(E_ALL);

     // Verbindungsparameter für die Online-Datenbank
     $db_host = "rdbms.strato.de"; // Hostname
     $db_benutzername = "dbu*******"; // Datenbank-Benutzername
     $db_passwort = "****************"; // Datenbank-Passwort
     $db_name = "dbs********"; // Name Datenbank

      // Verbindung zur Datenbank herstellen
     $db = mysqli_connect($db_host, $db_benutzername, $db_passwort, $db_name);

     // Überprüfen, ob die Verbindung erfolgreich war
      if (!$db) {
          die("Verbindung fehlgeschlagen: " . mysqli_connect_error());
               }

      // Zeichensatz auf UTF-8 setzen
       mysqli_set_charset($db, "utf8");

      // SQL-Abfrage zum Auswählen aller Einträge aus der Tabelle "***ine"
      $abfrage = "SELECT * FROM ***ine";

     // SQL-Abfrage ausführen
      $ergebnis = mysqli_query($db, $abfrage);

      // Überprüfen, ob die Abfrage erfolgreich war
      if (!$ergebnis) {
      die("Abfrage fehlgeschlagen: " . mysqli_error($db));
                       }

       // Überprüfen, ob Daten gefunden wurden
       if (mysqli_num_rows($ergebnis) > 0) {
       // Daten aus der Abfrage anzeigen
       while ($listeeintrag = mysqli_fetch_assoc($ergebnis)) {
       echo "<tr>\n";
       echo "<td class='kurz'>" . $listeeintrag['datum'] . "</td>\n<td class='kurz'>" . $listeeintrag['uhrzeit'] . "</td>\n<td class='lang'>" . $listeeintrag['ereignis'] . "</td>\n";
       echo "</tr>\n";
         }
          } else {
       echo "Keine Daten gefunden.";
          }

        // Verbindung schließen
       mysqli_close($db);
?>

Vielen Dank für jede Hilfe

MySQL, PHP
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
Wie vererbt man PHP Bedingungen beim paginieren einer Tabelle an die folgenden Seiten?

Hallo,

eigentlich habe ich 2 Fragen zu PHP, aber das hätte nicht alles ich die Überschrift gepasst.

Frage 1

Ich erlerne gerade PHP und MySQL. Dafür habe ich in einer Datenbank eine Tabelle über Internet Radiostationen angelegt, mit Sendername, Land, Kontinent, StreamURL, Genre usw. Über ein Auswahlmenü lässt sich die Tabelle nach Sendernamen, Land oder Kontinent sortieren. Das klappt soweit auch. Damit aber nicht mehr als 20 Radiostationen auf einer Seite erscheinen, habe ich unter Zuhilfenahme eines Buches die Seiten paginiert (Steige da aber noch nicht so richtig durch). Wenn ich nun die Radiostationen nach Land oder Kontinent sortiere, dann klappt das zwar auf der ersten Seite aber auf der zweiten Seite ist wieder alles nach den Sendernamen sortiert.

Was muss ich machen, damit die Sortier – Auswahl auch an die folgenden Seiten übergeben wird?

Hier ist der PHP Code

<?php

$sortieren = $_POST['sortieren'];

if($sortieren == "Sendername") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY sendername LIMIT $start, $anzahl_pro_seite");

} elseif($sortieren == "Kontinent") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY kontinent LIMIT $start, $anzahl_pro_seite");

} elseif($sortieren == "Land") {

$ergebnis = $mysqli -> query("SELECT * FROM sender ORDER BY land LIMIT $start, $anzahl_pro_seite");

}

?>

Frage 2

Wie muss die Fall – Entscheidung formuliert werden?

Natürlich soll man Radiosender über ein Eingabeformular finden können. Auch das funktioniert. Allerdings möchte ich, wenn es keinen Sender mit dem entsprechenden Namen gibt, das ein Text wie z. B. "Leider kein Sender mit diesem Namen zu finden" erscheint. Dafür habe ich in der Fall – Entscheidung folgende 2 Dinge ausprobiert:

if($zeile == !array()) {

echo "Leider gab es keinen Sender mit dem Namen";

}

Das klappt nicht.

if($zeile == false) {

echo "Leider gab es keinen Sender mit dem Namen";

}

Das klappt auch nicht.

if($zeile == null) {

echo "Leider gab es keinen Sender mit dem Namen";

}

War auch 'ne Nullnummer :)

Hier ist der komplette Code dazu:

<body>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<label>Sendername eingeben:</label><br />

<input type="text" name="suchbegriff"/><br /><br />

<input type="submit" name="gesendet"/>

</form>

<?php

if(isset($_POST['gesendet'])) {

$suchbegriff = htmlspecialchars($_POST['suchbegriff']);

echo $suchbegriff . "<br />";

$db = mysqli_connect("localhost", "root");

mysqli_set_charset($db, "utf8");

mysqli_select_db($db, "radio2");

$sql = "SELECT * FROM sender WHERE sendername LIKE '%$suchbegriff%' ";

$erg = mysqli_query($db, $sql);

while($zeile = mysqli_fetch_assoc($erg)) {

echo $zeile['sendername'] . " ". $zeile['kontinent'] ." ". $zeile['land'] . " ". $zeile['ort'] . " ". $zeile['genre'] . " ". $zeile['streamurl'] . "<br /><br />" ;

}

if($zeile == !array()) {

echo "Leider gab es keinen Sender mit dem Namen";

}

}

?>

</body>

Danke für's lesen.

Computer, programmieren, MySQL, PHP
Weitere Inhalte können nur Nutzer sehen, die bei uns eingeloggt sind.