PDA

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

SPiC
12.08.2002, 10:36:52
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

SPiC
12.08.2002, 15:33:01
@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

SPiC
12.08.2002, 19:40:22
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