Hallo zusammen,
die oben, von mir genannte, Möglichkeit hat sich leider nicht bewährt.
Die Tabelle wurde immer größer und die Zeit für die Abfragen immer länger.
Hier versuche ich zu zeigen, wie man das Mehrfachbewerten verhindern kann, indem das Formular ausgeblendet wird.
Benötigt wird auf jeden Fall ein neues Feld in der Datenbank bei 4images_images.
Legt zunächst ein neues Feld am Ende der Tabelle 4images_images an.
Nennt dieses Feld z.B. :
voters
TYP Text
In dieses Feld werden wir eintragen, wenn jemand ein Bild bewertet.
Wenn später ein Bild aufgerufen wird, wird diese Spalte ausgelesen und das rate_formular verschwindet, wenn der User schon bewertet hat.
im Ordner includes findet Ihr die Datei:
page_header.php
In Zeile 245 steht:
update_image_rating($id, $rating);
Bitte ändern in:
update_image_rating($id, $rating, $user_info['user_name']);
in der functions.php Zeile 525 steht:
function update_image_rating($image_id, $rating) {
Bitte ändern in:
function update_image_rating($image_id, $rating, $user) {
Zeile 527:
$sql = "SELECT cat_id, image_votes, image_rating
Bitte ändern in:
$sql = "SELECT cat_id, image_votes, image_rating, voters
Unter Zeile 535 $old_rating einfügen:
$old_voters = $image_row['voters'];
$new_voters = $old_voters.",".$user;
Zeile 539:
SET image_votes = ($old_votes + 1), image_rating = '$new_rating'
Bitte ändern in:
SET image_votes = ($old_votes + 1), image_rating = '$new_rating', voters = '$new_voters'
Ab jetzt sollte in der Datenbank bei jedem Bild stehen, wer schon bewertet hat.
Fehlt noch das Auslesen.
Öffne die details.php
in Zeile 46 steht:
$sql = "SELECT i.image_id, i.cat_id, i.us..................
Füge i.voters hinzu:
$sql = "SELECT i.voters, i.image_id, i.cat_id, i.us..........
Füge nach Zeile 485, unmittelbar vor Clickstream folgendes ein:
if (strpos($image_row['voters'], $user_info['user_name'])) $site_template->register_vars("rate_form", "");
Fertig. Ich hoffe es klappt alles. Habe es gerade nochmal so geteset, es dürften keine Fehler auftauchen. Garantie übernehme ich aber trotzdem nicht.
Immer wenn ein User ein Bild schon bewertet hat, wird das Formular ausgeblendet. Egal ob er die Cookies löscht oder nicht.