PHP-Bewertungssystem mit mySQL
Köffi
- php
Hallo, ich bin gerade dabei mir ein mySQL-Datenbank mit Sprüchen aufzustellen. Gleichzeitig versuche ich ein Votes-System zu integrieren so dass die User die Sprüche bewerten können.
Ich habe das so geregelt, dass falls der Benutzer auf den Link klickt, öffnet sich eine neue PHP-Datei, die die ID übergeben bekommt, die den entsprechenden Vote in der mySQL-Datenbank um 1 hochzählt. Gleichzeitig öffnet sich eine Alertbox mit dem Hinweis, dass eine Bewertung abgegeben wurde.
Das sieht dann so aus:
echo "Spruch voten: <a href="datei.php?ID=$row[ID]" onclick='alert("Vielen Dank für deine Bewertung")>Voten</a>";
Ich würde das ganze gerne in 2 Punkten verändern:
1. Das datei.php soll sich "nur noch im Hintergrund" also nicht sichtbar öffnen, und nur die Alertbox sollte angezeigt werden und der Votewert in der Datenbank trotzdem um eins hochgezählt werden.
2. Wenn ein User seine Bewertung abgegeben hat, sollte der Link verschwinden, oder beim erneuten Klicken sollte die Bewertung nicht mehr gezählt werden und zum Beispiel angezeigt werden, dass der Benutzer bereits eine Bewertung abgegeben hat.
Ich hoffe jemand kann mir helfen...
Vielen Dank
Köffi
Hallo,
du hast ja eine Datei in der der Spruch ist:
Frage im mit GET einen Wert ab, und wenn dieser erfüllt wurde, wird der Wert in der DB um 1 erhöht. Wenn man auf den Link klickt erfüllt sich diese Anweisung (ziel.php?vote=123)
Entweder arbeitest du mit ip oder mit Session um zu überprüfen, ob er für den Spruch schon gevotet hat. Wenn dies der fall ist, wird der link nicht angezeigt.
MFG
Andavos
hmm... irgendwie werde ich aus deinen Formulierungen nicht schlau... Was meinst du mit Datei? Der Spruch ist in der Datenbank, ich greife dann immer einfach auf ein Feld zu:
also mit UPDATE spruch set vote = vote + 1
Ich weiß nicht, was du mit dem GET meinst...
Vielleicht könntest du das mit der IP und so auch noch einmal etwas genauer erläutern...
danke im Voraus
Köffi
yo,
letzlich musst du eine "message" an den server schicken, weil sich dort die datenbank befindet. eine möglichkeit wäre, die gleiche seite nochmal abzurufen und dort ein zusätzlichen programmteil einbauen, der eine gültige id nummer über get oder post abfängt. ist dies der fall, erhöht diser programmteil den ensprechen spruch um eins. damit nicht ein user immerzu auf diesen link clickt, solltest du irgendwie seine ip nummer oder eine session-nummer zwischenspeichern. wie bereits gesagt wurde, wird der ensprechende link nicht mehr angezeigt, wenn bei gleicher ip/session ein flag gestzt wurde, sprich ein voting schon erfolgte. sinnbildlich in etwas so.
if ($ipnummer==die_gleiche AND $gevotet==ja)
{
ausgabe: "vielen dank für das voting"
}
else
{
ausgabe: link anzeigen
}
aber auch dein server seitiges script muss auf so etwas reagieren, da man ja einen link auch "künstlich" erzeugen kann. für den benutzer sieht es dann so aus, als wenn einfach der link verschwinden würde, viellleicht noch mit einer kleinen message, dass erfolgreich gevotet wurde mit einem kleinen dankeschön.
Ilja