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

  • reimondo
    hat ein Thema erstellt Eigenartige Quellcode-Ausgabe (Nicht richtig übermittelt?).

    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.

  • reimondo
    antwortet
    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");

    ?>

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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...

    Einen Kommentar schreiben:


  • reimondo
    antwortet
    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.

    Einen Kommentar schreiben:


  • reimondo
    antwortet
    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);
    ?>

    ?>

    Einen Kommentar schreiben:


  • DerN8WaechterX
    antwortet
    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

    Einen Kommentar schreiben:


  • reimondo
    antwortet
    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). ???

    Einen Kommentar schreiben:


  • Gast-Avatar
    Ein Gast antwortete
    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...

    Einen Kommentar schreiben:


  • Der_Gerhard
    antwortet
    Wie lange dauert die Abarbeitung des Scripts?`
    Evtl. ist das Zeitlimit erreicht.

    Einen Kommentar schreiben:


  • DerN8WaechterX
    antwortet
    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...

    Einen Kommentar schreiben:


  • Frank Burian
    antwortet
    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.

    Einen Kommentar schreiben:

Lädt...
X