Archiv verlassen und diese Seite im Standarddesign anzeigen : guestbook
djfilla
12.08.2002, 09:26:19
tach zusammen
ich bastle gerade an einem gb.
mein problem ist das ich zu viele einträge zusehen bekomme. das heist es werden immer drei leere angefügt!!
und wenn ich mehr als 5 einträge habe zeigt es mir nur noch die 4 ersten an.
weis einer vielleicht abhilfe??
mfg djfilla
CyberAge
12.08.2002, 09:33:38
speichere mal dein script in eine txt-datei und lade diese hoch und poste einen link dazu! dann können wir uns den fehler ansehen!
aber sonst würde ich sagen, dass doch entweder ein fehler in deiner schleife ist oder wirklich leere einträge vorhanden sind!
Wie speicherst du die einträge denn? Per Dateien oder per Datenbank? Wäre nicht schlecht, wenn ein paar infos mehr vorhanden wären!
MfG CyberAge
djfilla
12.08.2002, 09:59:02
also das script ist hier
http://mitglied.lycos.de/alemfilli/script.txt
ich verwende eine mysql datenbank.
mit einer tabelle (id, name, herkunft, email, kommentar etc.)
djfilla
CyberAge
12.08.2002, 10:11:36
$anzahl= mysql_query("SELECT count(id) FROM gb");
echo $anzahl;
if ($result) {
echo "<table width="50%" align=center border="0">";
for ($i=0;$i<=$anzahl;$i++) {
$row = mysql_fetch_array($result);
also dieses count(id) fägt auf jedenfall schonmal mit der 1 an zu zählen. außerdem können sich durch dieses zählen fehler einschleichen. außerdem fängt deine forschleife mit 0 an, un somit sind schon zwei datensätze leer. ich würde folgendes in diese zeile schreiben:
$Anzahl = mysql_query ("SELECT * FROM gb");
$anzahl = mysql_fetch_array($Anzahl);
kommt oben hin und die for-schleife wird folgendermaßen abgeändert:
for($i=0; $i<$anzahl; $i++) {
das ist mein persönlicher verbesserungsvorschlag. Ich weiß einiger werden nun wieder sagen, dass ein SELECT * schlecht ist bzw. länger dauert, aber ich mache es so bei den meisten meiner Projekte und diese laufen a) einwandfrei und b) schnell.
wenn du dann
Nocheinmal Progman's weiser Beitrag zum Thema SELECT *
SELECT * benutzt man sowieso nicht
13.14. Warum soll ich nicht SELECT * schreiben?
http://www.dclp-faq.de/q-sql-select.html
Ich weiß einiger werden nun wieder sagen, dass ein SELECT * schlecht ist bzw. länger dauert, aber ich mache es so bei den meisten meiner Projekte und diese laufen a) einwandfrei und b) schnell.
Hmm, lasst mich es mit dem Blinker am Auto vergleichen. Du kannst auch gefahrlos abbiegen, ohne den Blinker zu setzen, wenn keine Autos auf der Straße sind. Bei vielen Autos kommt es ohne Blinker schon einmal zum Crash...
Mit anderen Worten: Bei kleinen Projekten läuft SELECT * noch ganz gut, aber sagen wir mal bei eBay wäre eine "SELECT * FROM Auktionen" warscheinlich der Grund für einen Systemcrash...
:-) Sebastian
CyberAge
12.08.2002, 10:43:28
aber sagen wir mal, ...
nneeeee, dafür öffne ich jetzt mal nen thread in den allgemeinen diskussionen! das will ich jetzt wissen!
djfilla
12.08.2002, 11:01:51
danke dir jetzt funktionierts bestens
ich versteh zwar nicht ganz warum
aber danke
djfilla
12.08.2002, 11:12:48
zu früh ge freut.
ich stecke in einer endlos schleife
kannst du dir vielleicht noch mal das script anschauen. habs nochmal rauf geladen
http://mitglied.lycos.de/alemfilli/script.txt
future
12.08.2002, 14:43:20
hi
möchte dir folgendes vorschlagen:
ersetze
$anzahl = mysql_fetch_array($Anzahl);
//(mit dieser php funktion werden alle datensätze von deiner abfrage in einem array abgelegt!)
durch
$anzahl=mysql_num_rows($Anzahl);
//(mit dieser php funktion werden die anzahl der datensätze(reihen/rows) von deiner abfrage gezählt! )
lg future
@Future:
SELECT COUNT() zählt doch schon die Anzahl...
mysql_num_rows($anzahl) würde 1 ergeben (weil ja eine Summe gebildet wurde)
=:-) Sebastian
future
12.08.2002, 19:14:27
im script wurde die abfrage mit " count "ausdokumentiert und durch ein "select * from" ersetzt !!!
http://mitglied.lycos.de/alemfilli/script.txt
lg future
Sorry, aber irgendwie überseh' ich die Links immer (vielleicht, sollte ich mal meine Auflösung kleiner schrauben)
Eigentlich brauchen wir gar kein SELECT COUNT oder mysql_num_rows(), weil die for-Schleife optimalerweise wegfallen kann durch
while($row = mysql_fetch_array($result));
So brauchen wir die Anzahl der Datensätze gar nicht kennen...
=:-) Sebastian
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.