WebWork Magazin - Webseiten erstellen lassen, Online Medien, html

Webhoster, Webhosting Provider und Domain registrieren

Home | Registrieren | Einloggen | Suchen | Aktuelles | GSL-Webservice | Suleitec Webhosting
Reparatur-Forum | Elektro forum | Ersatzteilshop Haushalt und Elektronik



Im Homepage und Webhosting-Forum --- Gästebuch Teil 2

Scripte und Programme für PHP, MYSQL. Diskussionen zur Programmierung im Web. Fragen zu CMS, Blogsoftware, Shops, Newsletter und vielen weiteren Scripten.

Forum » PHP & MySQL » Gästebuch Teil 2 - 21 Nov 2024 Antworten
im Forum für Webhosting Homepage gefunden:
Gästebuch Teil 2
DreamPromise
Mausakrobat
Threadstarter




Beiträge: 171

Hi

Seit einiger Zeit versuche ich mal wieder mein Gästebuch aufzuräumen.
Nun hab ich einige Einträge gelöscht.
Nun wird ein neuer Eintrag falsch angezeigt weil die ID nicht mehr in der Reihenfolge ist.
Also muß ich jedesmal die Einträge in der Datenbank einzeln aufrufen und die ID ändern.

Wie kann ich denn das Problem nur dauerhaft in den Griff bekommen?

JENS


  Profil   Editieren   Zitieren
HG
Posting-Schinder




Beiträge: 520

In der Datenbankabfrage einfach nicht nach der id sortieren, sondern nach dem Eintragsdatum. Oder darauf achten, daß die id immer um einen Zähler gesteigert wird, und nicht die nächste freie Zahl.

HG

---
www.kuminatano.de

  Profil   E-Mail   Website   Editieren   Zitieren
DreamPromise
Mausakrobat
Threadstarter




Beiträge: 171

Hi

Also wenn ich den Zähler immer um eins erhöhe und dann aber mal mittendrinn ein Eintrag rausnehmen muß hab ich wieder das gleiche Problem.

Wie muß ich dann was ändern wenn ich nach Datum sortiere?

Oder ist es vielleicht besser wenn ich die ID völlig entferne ?

JENS

  Profil   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Poste mal bitte deinen Code, mit dem du das anzeigst.

  Profil   Editieren   Zitieren
DreamPromise
Mausakrobat
Threadstarter




Beiträge: 171

Hallo

Ich hab den Quelltext mal hier hinterlegt.

Wär nicht schlecht wenn du mir da mal helfen könntest da ich keine Ahnung von hab.
Das hat mir mal einer gemacht den ich nun irgendwie nicht mehr zu fassen bekommen.

Danke schon mal.

  Profil   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Oha, da blickt auch nur der durch, der es geschrieben hat.

Ich glaube dein Problem ist ,dass du nicht mit While abreitest. Damit würde das viel einfacher. Ich kann dir ja mal gerad einfach den relevanten Teil meines Gästebuchs hier posten. Darfst dich nur nicht wundern, weil ich eine MySQL-Klasse benutze, was aber nicht so viel zur Sache tut.

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:
if (!isset($seite)) {
	$seite = 1;
}

include_once("guestbook/replace.inc.php");

//Berechnung der Einträge für die aktuelle Seite
$anfang = ($seite - 1) * $settings['guestbook_pageentries'];
$ende = $anfang + $settings['guestbook_pageentries'];
$result = $mysql->query("SELECT count(*) FROM guestbook");
$gesamt = $mysql->get_data($result, 2);
$gesamt = $gesamt[0];
$seiten = ceil($gesamt / $settings['guestbook_pageentries']);
$eintragnow = $gesamt - $anfang;

//Anfrage an die Datenbank für die Einträge
$result = $mysql->query("SELECT * FROM guestbook ORDER BY id DESC LIMIT ".$anfang.", ".$settings['guestbook_pageentries']);

//Ausgabe der einzelnen Einträge
while ($zeile = $mysql->get_data($result, 1)) {

	echo "
 ".$eintragnow.". ".stripslashes($zeile['name'])." ($zeile[date])
".replace(stripslashes($zeile['text'])); if ($zeile['comment'] <> "") { echo "
-------------------------------------- ".replace(stripslashes($zeile['comment']))."
"; } echo "
"; if ($zeile['email'] <> "") { echo "\"".$zeile['email']."\""; } if ($zeile['homepage'] <> "") { echo " \"".$zeile['homepage']."\""; } if ($zeile['icq'] <> "") { echo " \"".$zeile['icq']."\""; } echo "
"; $eintragnow--; }; echo " "; //Pfeilnavigation links if ($seite > 1) { echo "<<"; } else { echo "<<"; }; //Zahlenleiste echo " |"; for ($i=1;$i<=$seiten;$i++) { if ($i == $seite) { echo " $i"; } else { echo " $i"; }; }; echo " |"; //Pfeilnavigation rechts if ($ende < $gesamt) { echo " >>"; } else { echo " >>"; }; ?>


Guck dir mal den Query und dann die Ausgabe mit der While-Schleife an. Das regelt gelöschte IDs automatisch.

Diese Nachricht wurde geändert von: languitar
  Profil   Editieren   Zitieren
DreamPromise
Mausakrobat
Threadstarter




Beiträge: 171

Hallo

Als ich blicke weder bei mir noch bei dir durch

  Profil   Editieren   Zitieren
Andreas S
Otto-Normal-Poster




Beiträge: 81

DreamPromise schrieb am 14.09.2003 23:47
Wie muß ich dann was ändern wenn ich nach Datum sortiere?


1:
$query .= "ORDER BY gb_id DESC ";


ändern in:

1:
$query .= "ORDER BY datum DESC, uhrzeit DESC ";

  Profil   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Grenz dein Problem doch mal ein. Das ist immer ganz Hilfreich beim erklären.
Ich geb dir mal nen kurzen Überblick wie mein Code funktioniert:

replace.inc.php enthält eine Funktion zum Ersetzen der Smilies, ist also erst mal nicht wichtig.
Ab Zeile 7 geht es los mit einigen Berechnungen. Dabei osllte man wissen, dass $settings['guestbook_pageentries'] die Anzahl der Einträge pro Seite enthält. Das lege ich vorher fest. Du kannst da natürlich auch einfach direkt ne Zahl immer hinschreiben.
Zeile 8: Berechnung des ersten Anzuzeigenden Eintrags. $seite wird dabei über die Adresszeile übergeben (und jetzt lüncht mich nicht wegen register_globals = on).
Zeile 9: berechnet den letzen Eintrag, der auf der jeweiligen Seite angezeigt wird. Also Starteintrag + Anzahl der Einträge, die angezeigt werden sollen.
Zeile 10 - 12:: Hier frage ich kurz die Anzahl aller Einträge ab. Die steht nachher in $gesamt.
Zeile 13: Hier wird die Anzahl aller Seiten augerechnet, die das Gästebuch hat (ceil = aufrunden, da ja auch unvollständige Seiten angezeigt werden sollen).
Zeile 14: Hier wird gerade noch die Nummer für die durchlaufende Nummerireung der Einträge in der Ausgabe berechnet.

Jetzt kommt die eigentliche Ausgabe:
Zeile 17: Hier frage ich erst mal alle entsprechenden Einträge aus der Datenbank ab. Dabei wird LIMIT benutzt. Der erste Parameter gibt dabei an, beim wievielten Datenbankeintrag begonnen werden soll auszulesen; der zweite Parameter sagt wie viele Einträge von da aus ausgelsen werden sollen. &mysql->query ust im grunde übrigens die Funtkion mysql_query()
Ich habe jetzt also alle Einträge, die ich auf der ensprechenden seite anzeigen möchte im der Variable $result.
Zeile 20ff.: Hier beginnt die While-Schleife, mit der jetzt die Einträge abgearbeitet werden. While und MySQL sind quasi untrennbar. While geht jetzt einfach alle Einträge in $result durch und legt dabei den jeweiligen Eintrag mit Hilfe von mysql_fetch_array in $zeile ab. In den folgenden Zeilen passiert dann einfach nur noch die Ausgabe mit den ganzen Fällen (Smilies umwandeln, Wenn Emailadresse gesetzt -> Symbol anzeigen etc...)
Zeile 63ff.: Hier erstelle ich jetzt kurz noch die Navigation für das Gästebuch.

Ich hoffe das hilft dir weiter. Du musst dich einfach mal ein bisschen eiarbeiten. Mal ein paar Sachen umbauen, den query etwas verändern und einfach gucken was passiert und dann schlussfolgern, weiso das so passiert ist.

  Profil   Editieren   Zitieren
DreamPromise
Mausakrobat
Threadstarter




Beiträge: 171

Hallo

So gehts leider auch nicht.
Ich hab gerade mal einen Testeintrag gemacht.
Der erscheint nun auf einer neuen Seite.
Wenn ich aber die ID entsprechend anpasse damit die der vorherigen Eintrag um eins erhöht ist,zeigt das Gästebuch die Einträge wieder richtig an.

JENS

  Profil   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Ja, du hast ja auch enen grundsätzlich fehler in deinem Konzept, da du nicht mit While arbeitest. An der Schleife wie bei mri wirst du nicht dran vorbeikommen

  Profil   Editieren   Zitieren
DreamPromise
Mausakrobat
Threadstarter




Beiträge: 171

Hallo

Ja das dachte ich mir schon

Aber ich hab nicht die Erfahrung das neu zumachen.....bzw das zu ändern.

Dann muß ich wohl so wie bisher weiter machen und die IP´s immer anpassen...

Hab´s ja bis jetzt auch immer gemacht...was sollt.

Danke für deine Hilfe.

  Profil   Editieren   Zitieren
languitar
Foren-Team




Beiträge: 2795

Wieso? Ich hab dir doch gerade schon fast das fertige Gästebuch geliefert. Müsstest gerade nur wieder die Bruchstücke der MySQL-Klasse in normale PHP-Befehle ändern und das auf deine Tabellenstruktur anpassen.
Außerdem wenn du wenig arbeit haben möchtest, dann nimm einfach das feedbook. Es wäre nur gerade etwas Arbeit die ganzen Einträge zu übertragen, dafür gibt es dabei dann einen super Administrationsbereich bie dem du ganz ohen PHP-Kenntnisse auskommst.

Gruß
Johannes

  Profil   Editieren   Zitieren
 

Antworten
Forum » PHP & MySQL » Gästebuch Teil 2

Aktuelle Beiträge zur Hilfe im Forum für Homepage - Gästebuch Teil 2 im Forum Homepage Hosting AntwortenLetztes Posting
Cybersicherheit für Unternehmen
in "PHP & MySQL"
3 18.11.2024 14:05 von Gaswer
Wirtschaftslage in der Ukraine
in "PHP & MySQL"
3 22.10.2024 15:04 von Gaswer
Rangliste (Ohne Mysql) (Kompliziertes Ordner System)
in "PHP & MySQL"
3 19.07.2021 06:00 von newtopblog
kleines problem mit phpadmin
in "PHP & MySQL"
5 11.04.2021 22:22 von Zavylon
Counter mit PHP
in "PHP & MySQL"
4 22.03.2021 16:29 von Robeni
Fehlermeldung beim Importieren der Datenbank in phpmyadmin
in "PHP & MySQL"
0 02.08.2019 22:14 von iFuchs
CMS für Online Shop
in "PHP & MySQL"
18 26.05.2019 13:29 von raiserle
Regestrierungproblem
in "PHP & MySQL"
3 28.11.2018 13:20 von norbertofahey
PHP Datum ausgeben?
in "PHP & MySQL"
1 19.10.2018 10:04 von Klaus1973
PHP befehl ausführen
in "PHP & MySQL"
11 16.08.2018 09:08 von Klaus1973
Visual Composer selber programmieren?
in "PHP & MySQL"
0 22.01.2017 23:45 von Redji



Besucher : 8126539    Heute : 457     Gestern : 463     Online : 233     21.11.2024    14:31      0 Besucher in den letzten 60 Sekunden        
Nach oben