php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005-2

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.10.2005, 17:41  
Benutzer
 
Registriert seit: 25.09.2005
Beiträge: 41
reimondo
Standard 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 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 25.10.2005, 17:56  
Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 92
Frank Burian ist zur Zeit noch ein unbeschriebenes Blatt
Standard

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.
Frank Burian ist offline  
Alt 25.10.2005, 19:32  
Neuer Benutzer
 
Registriert seit: 25.10.2005
Beiträge: 23
DerN8WaechterX
Standard

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!
DerN8WaechterX ist offline  
Alt 25.10.2005, 20:07  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Wie lange dauert die Abarbeitung des Scripts?`
Evtl. ist das Zeitlimit erreicht.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 25.10.2005, 20:17  
Gast
 
Beiträge: n/a
Standard

ini_set("max_execution_time", 120);
Setz das einfach mal lokal. Oder guck direkt in die php.ini, was der aktuelle Wert ist.
Ansonsten
Zitat:
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...
 
Alt 25.10.2005, 20:43  
Benutzer
 
Registriert seit: 25.09.2005
Beiträge: 41
reimondo
Standard

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). ???
reimondo ist offline  
Alt 25.10.2005, 22:06  
Neuer Benutzer
 
Registriert seit: 25.10.2005
Beiträge: 23
DerN8WaechterX
Standard

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
DerN8WaechterX ist offline  
Alt 25.10.2005, 22:37  
Benutzer
 
Registriert seit: 25.09.2005
Beiträge: 41
reimondo
Standard

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);
?>

?>
reimondo ist offline  
Alt 25.10.2005, 22:49  
Benutzer
 
Registriert seit: 25.09.2005
Beiträge: 41
reimondo
Standard

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.
reimondo ist offline  
Alt 25.10.2005, 23:37  
Gast
 
Beiträge: n/a
Standard

Zitat:
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:
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...
 
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe von echo funktioniert nicht richtig Schiedsrichter PHP Tipps 2005 4 11.03.2005 14:24
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.