Zu viele Daten für Webseite?

wham1010
Hallo!
Folgendes Problem hab ich: lese mittels php eine mysql-Tabelle aus (25 Spalten) und gib diese gleich auf meiner html-Seite aus! Das funktioniert auch so weit, so gut. Sobald die Tabelle aber etwa 30 Zeilen erreicht, geht nix mehr (also da erscheint dann nur mehr eine weisse Seite und das wars) - hat irgendwer vielleicht eine Ahnung, woran das liegen könnte? Bin schon am Verzweifeln .... verwirrt

Danke schon mal im Voraus!
ThiefMaster
Poste mal den Code.
wham1010
sorry, hatte es vorher nicht formatiert...

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
<?php if (@mysql_connect("localhost"$User$password))
     {
     if (@mysql_select_db(datenbank))
       {
       $result=mysql_db_query("datenbank""INSERT INTO training VALUES(' ', '$User', $Datum, $Gewicht, $Mahlzeiten, $KH, $EW, $Fett, $Kcal, $Dauer, $Brust, $Ruecken, $Schulter, $Bizeps, $Trizeps, $Unterarm, $Beine, $Waden, $Bauch, $x, $y, $z, '$Bemerkungen')");    
       $erg = @mysql_query("SELECT id, datum, gewicht, anz_mahlz, kh, ew, fett, kcal, tr_dauer, brust, ruecken, schulter, bizeps, trizeps, unterarm, beine, waden, bauch, x, y, z, bemerkungen FROM training where name = '$User' order by id");
       if ($erg)
         {
         echo "<table border=\"1\">\n";
         echo "<tr>\n";
         echo "<th>ID</th><th>Datum</th><th>Gewicht</th><th>Anz_Mahlz</th><th>KH</th><th>EW</th><th>Fett</th><th>Kcal</th><th>Tr_dauer</th><th>Brust</th><th>Ruecken</th><th>Schulter</th><th>Bizeps</th><th>Trizeps</th><th>Unterarm</th><th>Beine</th><th>Waden</th><th>Bauch</th><th>x</th><th>y</th><th>z</th><th>Bemerkungen</th>\n";
         echo "</tr>\n";
         while($row mysql_fetch_row($erg))
           {    
           echo "<tr>\n";
           for($i=0$i<mysql_num_fields($erg); $i++)
             {
             switch($i)
               {
               case 0:
                 $farbe "#999999";
                 break;
               case 1:
                 $farbe "#AAAAAA";
                 break;
               case 2:
                 $farbe "#CCCCCC";
                 break;
               case 3:
                 $farbe "#8888FF";
                 break;
               case 4:
                 $farbe "#AAAAFF";
                 break;
               case 5:
                 $farbe "#BBBBFF";
                 break; 
               case 6:
                 $farbe "#CCCCFF";
                 break;
               case 7:
                 $farbe "#DDDDFF";
                 break;
               case 8:
                 $farbe "#44FF44";
                 break;
               case 9:
                 $farbe "#66FF66";
                 break;
               case 10:
                 $farbe "#77FF77";
                 break;
               case 11:
                 $farbe "#88FF77";
                 break;
               case 12:
                 $farbe "#99FF99";
                 break;
               case 13:
                 $farbe "#AAFFAA";
                 break;
               case 14:
                 $farbe "#BBFFBB";
                 break;
               case 15:
                 $farbe "#CCFFCC";
                 break;
               case 16:
                 $farbe "#DDFFDD";
                 break;
               case 17:
                 $farbe "#EEFFEE";
                 break; 
               case 18:
                 $farbe "#FF7777";
                 break;
               case 19:
                 $farbe "#FF9999";
                 break;
               case 20:
                 $farbe "#FFBBBB";
                 break;                                                                                                        
               default:
                 $farbe "#FFFFFF";  
               }     
             echo "<td bgcolor='$farbe'>" $row[$i] . "</td>\n"; 
             }
           echo "</tr>\n";
           }
         echo "</table>\n";
       }
       else
         echo "<br><i> Es konnten keine Datens&auml;tze gefunden werden!</i><br>\n";
     }
     else
       echo "<br><i>Die Verbindung zur Datenbank ist im Moment nicht m&ouml;glich!</i><br>\n";
     mysql_close();
   }
   else
     echo "<br><i>Der Server ist wegen Wartungsarbeiten vor&uuml;bergehend nicht erreichbar!</i><br>\n"?>
tkshorty
also ich wüsst jetzt net, woran das liegen könnte aber wieso lässt du nicht einfach immer nur 25 oder 30 auf einer seite anzeigen und guckst mal ob es dann klappt
daHooligan
kann es sein, dass die Bearbietungszeit für das PHP zu lang ist und der einfach nur ausliest und dann zwischendrin die ABfrage gecancelled wird und somit die Daten nicht mehr ausgegeben werden??
vapor
Nein? Zunge raus
wham1010
hab jetzt ein wenig herumexperimentiert und bin nun auf folgendes drauf gekommen:

wenn ich statt der Zeile
php:
1:
<?php echo "<td bgcolor='$farbe'>" $row[$i] . "</td>\n"?>


folgendes eingebe:
php:
1:
<?php echo "TEST\n"?>


funktioniert die Ausgabe einwandfrei, auch wenn da hunderte Zeilen vorhanden sind.
Sobald ich aber das Wort "TEST" innerhald der td´s setze

php:
1:
<?php echo "<td>TEST</td>\n"?>


bleibt mir das ganze wieder hängen und gibt nix aus. Vielleicht hilft das bei der Lösung des Problems ein wenig weiter!

Danke nochmal
wham1010
Nachtrag:

php:
1:
<?php echo "$row[$i]\n"?>


funktioniert übrigens auch, nur eben, wenn ich <td></td> weglasse (was aber dringend notwendig ist Augenzwinkern )
tkshorty
ok das :
code:
1:
echo "<td bgcolor='$farbe'>" . $row[$i] . "</td>\n"; 

net klappt is ja klar. hab ich aber auch erst übersehen.
es muss :
code:
1:
echo "<td bgcolor=\"$farbe\">" . $row[$i] . "</td>\n"; 

heißen

aber
code:
1:
echo "<td>TEST</td>\n"; 

müsste eigentlich klappen. kannst du dir den quelltext von der ausgegebenen html seite anzeigen lassen?
vapor
Zitat:
Original von tkshorty
ok das :
code:
1:
echo "<td bgcolor='$farbe'>" . $row[$i] . "</td>\n"; 

net klappt is ja klar. hab ich aber auch erst übersehen.


Ist korrekt escaped, funktioniert i.d.R. Wieso sollte es klar sein das dies nicht funktioniert??

Erklär im nichts, wovon du selbst nichts weißt!!
wham1010
so, hab das ganze jetzt von einem anderen rechner ausprobiert (an dem kein Server installiert ist) - dasselbe! Bei 15 Datensätzen funktionierts reibungslos, sobald es über 20 sind, erscheint entweder eine leere Seite (Quelltext kann man sich anzeigen lassen) oder es erscheint die Meldung:

------------------------------------------------------
Die Seite kann nicht angezeigt werden.
Die gew. Seite ist zurzeit nicht verfügbar. Möglicherweise sind technische Schwierigkeiten aufgetreten oder sie sollten die Browsereinstellungen überprüfen.
versuchen sie folgendes:

blablabla....

Fehler: Server oder DNS kann nicht gefunden werden

------------------------------------------------------

wobei der Fehler ja nicht stimmen kann, weils ja mit 15 Datensätzen funktioniert, hmmm verwirrt
tkshorty
sorry war aus was für einem grund auch immer der überzeugung das html nur " und nicht ' akzeptiert.
wham1010
irgendwie muss es doch an html oder den browser liegen, denk ich. Hab jetzt folgendes eingefügt als echo-Befehl:

php:
1:
<?php echo "<td bgcolor='$farbe'>abcde</td>\n"?>


So funktioniert es NOCH bei 22 Spalten und 15 Zeilen! Sobald ich aber

php:
1:
<?php echo "<td bgcolor='$farbe'>abcdef</td>\n"?>


, also 1 Zeichen mehr pro Zelle einfüge, schafft er es nicht mehr, die Tabelle anzuzeigen. Hat also gar nichts mit der mysql-Abfrage zu tun.
wham1010
ich hoff´, ich nerv Euch nicht *g*! hab folgendes kurzes listing zusammengestellt und würd mich freuen, wenn ihr das auch bei euch testen würdet. So wie es unten steht, zeigt er mir die Tabelle einwandfrei an. Sobald ich aber einen Wert verändere (zB den Zeilenwert auf 40 erhöhe) wars das. Funktioniert das bei euch? oder auch nicht? wenn ja, bis zu welchem wert denn? Danke!

php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:

       <html>
       <body>
         <table border="1">
         <?php
         for($j=0$j<=30$j++)      //Zeilen
           {    
           echo "<tr>\n";
           for($i=0$i<=25$i++)    //Spalten
             {
             echo "<td>test</td>\n";
             }
           echo "</tr>\n";
           }
         ?>  
         </table>
       </body>  
       </html>
vapor
Hab als Zeilenwert 50 Freude
Und er ballert alles durch - Augen rollen
neonator
http://www.planetcoding.net/thread/threa...anetcoding.html

das problem hatte ich auch schon Augenzwinkern

mach das mit ob_start() ^^ ...
das ist vieel besser.. ich hab atm bei mir 112 kontakte drin, mit einem ziemlich aufwändigen design ca 17 spalten ...
nach wörd 380'066 zeichen Zunge raus
er machts brav, da er alles aufs mal ausgibt... ohn dieses ob_start würde es garantiert nicht funktionieren...

das problem bei so grossen table ist aber, dass es übers internet recht lahm ist.. aber ich brauchs eh nur localhost (adressbuch)

gruss

jone
neonator
Zitat:
Original von vapor
Hab als Zeilenwert 50 Freude
Und er ballert alles durch - Augen rollen

habs grad mal mit "meiner" version getestet...

1000 ohne probleme!

http://test.jone.ch/wham/

naja, ein bisschen lahm wird der browser schon beim anzeigen kichern
(mozilla firefox)

meine version:
php:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
<?
ob_start();
?>
       <html>
       <body>
         <table border="1">
         <?php
         for($j=0$j<=1000$j++)      //Zeilen
           {    
           echo '<tr>'."\n";
           for($i=0$i<=25$i++)    //Spalten
             {
             echo '<td>test <br>'.$j.'<br>'.$i.'</td>'."\n";
             }
           echo '</tr>'."\n";
           }
         ?>  
         </table>
       </body>  
       </html>
<?
$ob_temp   ob_get_contents();
ob_end_clean();
echo $ob_temp;
?>



gruss
vapor
Du bist doch krank.. Zunge raus
neonator
hmm.. wieso ?
man muss das nur durchdacht coden Augenzwinkern

alles auf einmal ausgeben, dann kommt man auf eine rechte anzahl zeichen...
ich codiers nochmal schnell um..

nun kann man noch ?a=[zahl] eingeben Zunge raus

ist doch lustig, mal ein bisschen php austesten Augenzwinkern

hf Zunge raus
wham1010
super - danke!! ja, so funzt es auch bei mir! habs grad mit 5000 zeilen und 50 spalten ausgetestet, aber nicht über localhost, sonders wirklich übers net! ein paar sekunden warten und schon is alles da!! (pro zelle zwar nur 5 buchstaben, aber trotzdem ziemlich akzeptabel Augenzwinkern )