Ankündigung

Einklappen
Keine Ankündigung bisher.

include() setzt ein "?"

Einklappen

Neue Werbung 2019

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

  • include() setzt ein "?"

    Hallo,
    meine Seite wird durch viele verschiedene Komponenten mithilfe der include() Funktion generiert.
    Leider wird seit gestern am Ende der Hauptseite bzw. am Anfang der eingesetzten (Mithilfe von include) Seite ein "?" gesetzt.
    Dieses Fragezeichen wird im Quellcode direkt nicht angezeigt, sondern erst beim kopieren des Quellcodes in einen Editor der bereits auf HTML eingestellt ist.
    Alle Dateien sind bereits in UTF-8 kodiert und in der ebenfalls eingesetzten Header Datei beginnt der Code mit "header("Content-Type: text/html; charset=utf-8");", welcher nochmals durch den dementsprechenden HTML Meta-Tag "verstärkt" wird.

    Leider weiß ich gerade nicht mehr weiter und würde mich um mögliche Lösungsvorschläge freuen.

    Gruß,
    Max

  • #2
    Bitte Beispielcode posten, bei dem das Problem nachvollziehbar auftritt.

    Kommentar


    • #3
      head.php
      PHP-Code:
      <?php
      header
      ("Content-Type: text/html; charset=utf-8");
      include(
      "config/mysql.php");

          
      $projektsettings mysql_query("SELECT * FROM settings WHERE id = '1'");
          while(
      $projekts mysql_fetch_object($projektsettings)) {
      ?>
      <!DOCTYPE html>
      <html lang="de">
      <head>
        <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
        <title><?php echo $projekts->projektname?> - <?php echo $projekts->title?></title>
        <link href="css/bootstrap.min.css" rel="stylesheet">
        <link href="css/font-awesome.min.css" rel="stylesheet" type="text/css">
        <link href="css/sb-admin.min.css" rel="stylesheet">
        <link href="css/style.css" rel="stylesheet">
        <script src="js/Chart.bundle.min.js"></script>
      </head>
      <?php ?>
      <body class="fixed-nav sticky-footer bg-dark" id="page-top">
      index.php
      PHP-Code:
      <?php
      include("components/head.php");

      // Hier wäre der HTML Code

        
      <?php
      include("components/footer.php");
      ?>

      footer.php
      PHP-Code:
             //  Footer HTML
      <?php
      mysql_close
      ()
      ?>

      Kommentar


      • #4
        Insofern das kein kopier Fehler ist, wird bei deiner Index.php das PHP-Script nicht mittels "?>" beendet.

        Schau dir bitte mysqli oder vorzugsweise PDO an. MySQL wird schon seit langem nicht mehr unterstützt und gilt als ein Sicherheitsrisiko!

        Kommentar


        • #5
          Zitat von Holyfuture Beitrag anzeigen
          Insofern das kein kopier Fehler ist, wird bei deiner Index.php das PHP-Script nicht mittels "?>" beendet.

          Schau dir bitte mysqli oder vorzugsweise PDO an. MySQL wird schon seit langem nicht mehr unterstützt und gilt als ein Sicherheitsrisiko!
          War leider nur ein Kopierfehler.

          Bezüglich MySQL und der damit verbundenen, alten Technik werde ich mich demnächst fortbilden.

          Kommentar


          • #6
            Ein Fragezeichen am Anfang einer Datei ist immer ein gutes Anzeichen dafür, dass die Datei mit "BOM" gespeichert wurde. Speichere die Datei(en) mal ohne BOM und versuche es erneut.

            Überdenke bitte auch nochmals den Aufbau deiner Seite, sollte deine Datenbankabfrage mehrere Ergebnisse liefern, erzeugst du invalides HTML. Wenn du allerdings sicher weißt, dass nur ein Ergebnis zu Erwarten ist, dann mach keine Schleife...

            Kommentar


            • #7
              Zitat von Teo Beitrag anzeigen
              Ein Fragezeichen am Anfang einer Datei ist immer ein gutes Anzeichen dafür, dass die Datei mit "BOM" gespeichert wurde. Speichere die Datei(en) mal ohne BOM und versuche es erneut.

              Überdenke bitte auch nochmals den Aufbau deiner Seite, sollte deine Datenbankabfrage mehrere Ergebnisse liefern, erzeugst du invalides HTML. Wenn du allerdings sicher weißt, dass nur ein Ergebnis zu Erwarten ist, dann mach keine Schleife...
              Vielen Dank für die schnelle Antwort.
              Hatte die Dateien alle normal als UTF-8 gespeichert, nachdem ich diese nun als UTF-8 ohne BOM gespeichert haben, funktioniert wieder alles einwandfrei

              Kommentar


              • #8
                Bitte beachte das EVA-Prinzip ( https://php-de.github.io/jumpto/eva-prinzip/ ) und lasse mal dein erzeugtes HTML mal validieren, das muss ja eine Katastrophe sein. https://validator.w3.org/

                zB: Du wiederholst in der Schleife das <html> Tag:
                PHP-Code:
                    while($projekts mysql_fetch_object($projektsettings)) {
                ?>
                <!DOCTYPE html>
                <html lang="de">
                <head> 

                LG
                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


                • #9
                  hausl
                  sofern das WHERE id='1' nur ein Ergebnis zurück liefert nicht, aber das wurde in Beitrag #6 schon erwähnt, das eine Schleife hier Unsinn ist.
                  Id sollte hier auch ein Integer-Typ sein und kein String.

                  Kommentar


                  • #10
                    Bei normalisierter Datenbank ist die Chance auf ein Ergebnis mit Datensätzen > 1 relativ hoch, daher sollte das schon erwähnt werden.
                    Auch wenn ich davon ausgehe, dass eher keine Normalisierung vorherrscht.
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Ein bisschen Mitdenken von Seiten desjenigen ...
                      Ach vergiss es, hast ja recht.

                      Kommentar

                      Lädt...
                      X