Ankündigung

Einklappen
Keine Ankündigung bisher.

Eigenartige Quellcode-Ausgabe (Nicht richtig übermittelt?)

Einklappen

Neue Werbung 2019

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

  • Eigenartige Quellcode-Ausgabe (Nicht richtig übermittelt?)

    Hi,

    ich habe ein eigenartiges Problem.

    Ich habe eine Website erstellt mit php und MySQL-Datenbank.
    Jetzt habe ich bei einer Abfrage einer Tabelle das Problem, dass mir der Server die Seite nicht immer komplett übermittelt.
    Das bedeutet - (meine Seite besteht aus drei Teilen) - dass zum Beispiel nur der erste Teile und ein Teil des zweiten Teils übermittelt wird. Der dritte Teil gar nicht. Es fehlt auch einfach der Quellcode zum Ende der Seite, sprich

    - das Schließen der offenen Tabellen
    - </body>
    - </html>

    Manchmal kommt es auch vor, dass auf der nur halb übermittelten Seite so komische Textzeichen auftauchen, die ich nicht deuten kann.
    Es ist auch immer unregelmäßig, wie viel der Seite übermittelt wird. Ist also nicht immer gleich.

    Bei anderen Tabellen-Abfragen kommt das nicht vor.

    Das passiert auf meiner Testumgebung auf meinem lokalen Rechner (PHP5, MySQL 4.1.12). Auf meinem Testaccount über das Web passiert das komischerweise nicht.

    Weiß da jemand Rat?

    Besten Dank für die Hilfe.


  • #2
    dann hast du ein fehler in einer abfrage. es kommt machmal vor, das die abfrage stirbt ohne fehlermeldung.
    versuch das mal mit mysql_error() zu analysieren. deswegen fehlt dann ja auch der rest vom code.

    Kommentar


    • #3
      Kannst den Code oder die wichtigen Elemente posten? Dann ist der Fehler sicher schneller gefunden wenns am code liegt. Könnte aber auch am Server liegen, wenn du´s übers web abfragst...
      Das Leben ist ein Binäres Sytem
      .... Alles nur Nullen und Einser!

      Kommentar


      • #4
        Wie lange dauert die Abarbeitung des Scripts?`
        Evtl. ist das Zeitlimit erreicht.
        **********************************
        Nein, ich bin nicht die Signatur.
        Ich putze hier nur.
        **********************************

        Kommentar


        • #5
          ini_set("max_execution_time", 120);
          Setz das einfach mal lokal. Oder guck direkt in die php.ini, was der aktuelle Wert ist.
          Ansonsten
          Kannst den Code oder die wichtigen Elemente posten? Dann ist der Fehler sicher schneller gefunden wenns am code liegt. Könnte aber auch am Server liegen, wenn du´s übers web abfragst...

          Kommentar


          • #6
            Hier kommt erstmal der Code:

            PHP-Code:
            <?php
            $sqlString 
            "SELECT * FROM categoryawards WHERE categoryawards.categoryid = " .$_GET['category']. " AND categoryawards.filmid = " .$_GET['id']." ORDER BY categoryawards.awards_year DESC;";

            $sqlString2 "SELECT categoryawards.awards_headline FROM categoryawards WHERE categoryawards.filmid = " .$_GET['id']." AND categoryawards.awards_headline <> '';";
            $RSaward mysql_query($sqlString2);
            $RSawards mysql_query($sqlString);

            $award mysql_fetch_array($RSaward);
            print 
            "<h1>" $award["awards_headline"] . "</h1>";
            mysql_free_result($RSaward);


            print 
            "<table border='0' cellpadding='0' cellspacing='0' width='100%' class='textnormal'>";

            while (
            $awards mysql_fetch_array($RSawards)){
            ?>

            <tr>
              <td width="100%" colspan="2" bgcolor="#FFFFFF">[b]<font color="#000000"><?= $awards["awards_name"?></font>[/b]

              </td>
            </tr>
            ...

            <?
            }

            print "</table>";
            mysql_free_result($RSawards);
            ?>
            Ich gebe das Abfrageergebnis in einer Schleifenfunktion (while) aus. Im Moment habe ich so maximal 20 Datensätze nicht mehr.

            Wenn die Seite korrekt geladen ist, dann geht das in Millisekunden.

            Der Code oben gehört in den Hauptteil. Links habe ich ein Inhaltsverzeichnis, das immer korrekt geladen wird. Rechts daneben ebenfalls noch eine Abfrage, die dann aber nicht mehr erscheint.

            Der timeout ist in allen aktiven Zeilen in der php.ini auf 60 sekunden eingestellt.


            NACHTRAG:
            Kommt es denn tatsächlich zu einem Abfragefehler? Immerhin werden ja einige Datensätze des Abfrageergebnisses ausgegeben.

            INTERESSANT:
            Habs eben noch mal versucht. Bei einer Aktualisierung der Seite hat er mit den Quellcode im Browserfenster angezeigt (nur die generierte html-Seite - kein PHP) in Klartext.
            Ein zweites Mal konnte ich die index.php speichern - ähnlich bei einem Downloadfenster (Öffnen oder Speichern). ???

            Kommentar


            • #7
              Hab zwar schon so manches getrunken aber hoffe ich hab den Sinn verstanden. Habs etwas einfacher zusammengebastelt( aus dem 2.query bin ich nicht ganz schlau geworden aber naja) :wink:

              <?php
              //mit ner Haupt-Tabelle kannst das auseinanderhalten
              echo "<table border='0' cellpadding='0' cellspacing='0' width='100%' class='textnormal'>";
              echo "<tr><td>";

              //links und rechts bekommen ne eigenen table
              echo "<table>";

              //erste abfrage für links
              $sqlstring1= mysql_query("select * from categoryawards where categoryid=".$_GET['category']." and filmid=".$_get['id']." order by awards_year desc");
              while($output1 = mysql_fetch_assoc($sqlstring1))
              {
              echo "
              <tr>
              <td width='100%' colspan='2' bgcolor='#FFFFFF'><font color='#000000'>".$output1['awards_name']." </font>
              </td>
              </tr>";
              }
              echo "</table>";
              echo "</td><td>";

              //zweite abfrage für rechts
              //zweite querydef. hab ich nicht genau verstanden und awards_headline wurde selektiert aber auch "filmid" wurde abgefragt?

              $sqlstring2=mysql_query("select * from categoryawards where filmid =".$_GET['id']." ");
              while($output1 = mysql_fetch_assoc($sqlstring1))
              {
              echo "
              <tr>
              <td width='100%' colspan='2' bgcolor='#FFFFFF'><font color='#000000'>".$output2['awards_name']." </font>
              </td>
              </tr>";
              }
              echo "</table>";
              echo "</td></tr>";
              ?>

              So müsste es wenn ich es recht verstanden habe gehen, aber ich bin eh voll
              Das Leben ist ein Binäres Sytem
              .... Alles nur Nullen und Einser!

              Kommentar


              • #8
                Also die 2. Abfrage kannste komplett vernachlässigen. Die ist nur da, um eine Überschrift aus der Tabelle auszulesen. Hat nichts mit rechts oder links zu tun. Ist die jeweilige Überschrift für den Mittelteil.

                Also hier der geänderte Code:

                PHP-Code:
                <?php
                $sqlString 
                "SELECT * FROM categoryawards WHERE categoryawards.categoryid = " .$_GET['category']. " AND categoryawards.filmid = " .$_GET['id']." ORDER BY categoryawards.awards_year DESC;";

                $RSawards mysql_query($sqlString);

                print 
                "<table border='0' cellpadding='0' cellspacing='0' width='100%' class='textnormal'>";

                while (
                $awards mysql_fetch_array($RSawards)){
                ?>

                <tr>
                  <td width="100%" colspan="2" bgcolor="#FFFFFF">[b]<font color="#000000"> <?= $awards["awards_name"?></font>[/b]

                  </td>
                </tr>
                ...

                <?
                }

                print "</table>";
                mysql_free_result($RSawards);
                ?>

                ?>

                Kommentar


                • #9
                  Oder kann es sein, dass es an einer zu komplexen Tabellenstruktur liegt? Ich habe schon einige verschachtelte Tabellen programmiert.

                  Gibt es die Möglichkeit, die Seite erst komplett auf dem Server zu generieren und dann an den Client zu übermitteln? Oder wird das sowieso so gemacht?

                  Habe auch shcon versucht, eine Transaktion zu verwenden, auch mysql_error() bringt keine Ergebnisse Es tritt demnach gar kein Fehler auf.

                  Kommentar


                  • #10
                    Zitat von reimondo
                    Gibt es die Möglichkeit, die Seite erst komplett auf dem Server zu generieren und dann an den Client zu übermitteln?
                    Ja, mit ob_start() werden alle Daten in einen Puffer geschrieben.

                    Zitat von reimondo
                    INTERESSANT:
                    Habs eben noch mal versucht. Bei einer Aktualisierung der Seite hat er mit den Quellcode im Browserfenster angezeigt (nur die generierte html-Seite - kein PHP) in Klartext.
                    Ein zweites Mal konnte ich die index.php speichern - ähnlich bei einem Downloadfenster (Öffnen oder Speichern). ???
                    Da scheint anscheinend irgendetwas mit den Headerinformationen nicht zu stimmen. Kann mir nur schwer vorstellen, dass das an einem Fehler in Deinem Skript liegen soll...

                    Kommentar


                    • #11
                      Also im Header steht eigentlich nichts drin, außer

                      Code:
                      <meta http-equiv="Content-Language" content="de">
                      <meta name="title" content="">
                      <meta name="author" content="">
                      <meta name="publisher" content="">
                      <meta name="copyright" content="">
                      <meta name="description" content="">
                      <meta name="Content-Language" content="de">
                      <meta name="keywords" content="">
                      <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
                      Das wars. Keine Session-Variablen und die Zeile habe ich auch schon auskommentiert:

                      PHP-Code:
                      <?php
                      header
                      ("Cache-Control: no-cache, must-revalidate");

                      ?>

                      Kommentar

                      Lädt...
                      X