Ergebnis 1 bis 6 von 6

Thema: Bewertungssystem: Ich verzweifle.....

  1. #1
    TP-Member
    Registriert seit
    Feb 2003
    Beiträge
    82

    Bewertungssystem: Ich verzweifle.....

    Hallo,

    ich bin nun seit 1,5h auf der Suche nach einer Lösung für mein Problem, aber weder Google, noch diverse PHP-Seiten brachten mich weiter...

    Ich habe folgendes vor (Beispiel):

    Eine Seite mit 10 Vorschaubildern.
    Einloggen erforderlich.
    Klick auf das Bild: Bild erscheint gross, und es gibt eine Kommentar und Bewertungsmöglichkeit.
    Kommentar klappt einwandfrei, Bewertungen funktionieren auch (1-10Punkte 1=schlecht 10=super | (Durchschnittspunkte= aktuelle wertung + vergeben Punkte) / anzahl der stimmen)

    Des ganze wird in eine DB eingetragen.

    Bis dahin war die Welt noch in Ordnung, bis man natürlich bemerkt, das ein User leider beliebig oft bewerten könnte und somit gefakte Bewertungen zu Stande kommen.
    Nun habe ich mir überlegt das ich ja jeden User in der DB habe, und man es doch realisieren könnte das jeder User bei jedem Bild nur eine Stimme hat und danach dieses Bild, was er grade bewertet hat, nicht mehr bewerten kann.

    Nur leider fehlt mir da total der Ansatz wie ich das in einer Datenbank festhalten soll.......

    Mein erster Gedanke war eine Tabelle in der jedes Bild mit seiner ID vorkommt und die Bewertungskontrolle, also 2 spalten (bild_id, bewertete user). Nun müsste ich ja irgendwie diese 2. spalte immer erweitern wenn ein neuer user gevotet hat, bzw. ich muss sie ja auch auslesen, ob bei der bild_id userX gevotet hat......grml, aber das is mist :-( Oooooder, ich lege immer wnen jemand votet eine neue Zeile an (INSERT) mit bild_id und user_id und kontrolliere dann da nach ob der aktuelle user beim aktuellen bild gevotet hat. Nur wird diese Tabelle natürlich irgendwann megalang (20.000 Bilder / 5000 User) Wenn jeder dritte nur jedes vierte Bild bewertet....omg...

    Alternativ hatte ich über eine IP-Sperre nachgedacht, aber letztendlich komme ich an die selbe stelle, nämlich das ich die IP die ein Bild niht mehr bewerten darf ja irgendwie dem Bild zuordnen muss.....

    Hat da jemand von euch eine Idee,oder gehe ich da vielleicht völlig falsch ran ?
    Geändert von Schakal81 (25.06.2007 um 15:43 Uhr)

  2. #2
    TP-Moderator Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.666
    Setz doch einfach in Deine Bewertungstabelle neben der Bewertung auch die ID des Users ein. Die Bewertungstabelle liest Du ja eh aus um den Durchschnitt zu berechnen, dann kannst Du auch prüfen, ob der aktuell eingeloggte Benutzer eine Stimme abgegeben hat.

    Und guck Dir auch mal das an: Normalisierung
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  3. #3
    TP-Member
    Registriert seit
    Feb 2003
    Beiträge
    82
    Klar kann man das in einer Tabelle machen, wäre natürlich das beste, wollte des im beispiel nur so einfach wie möglich halten....ok, also in der Bewertungstabelle:

    id---bild_id---punkte---anzahl_stimmen---user_die_bewertet_haben
    1-----4--------134-----------18---------------???????????--------


    Genau des is ja der Knackpunkt, was schreib ich da hinten rein ? Wenn da z.b. ne 3 drin steht, denn hat user3 des bild bewertet

    id---bild_id---punkte---anzahl_stimmen---user_id_die_bewertet_haben
    1-----4--------134-----------18---------------------3-----------

    und bekommt die meldung "Du hast schon bewertet". Was aber wenn nun User4 und User7 das Bild auch bewerten ?


    Ich hab des Gefühl, ich hab ne echte Denkblockade...es is bestimmt irsinnig einfach, aber ich steck da voll fest



    *edit*
    Nachdem ich mir deine Seite angeschaut habe(ich hör ja net des erste mal davon ^^) würde ich bei der 1. NF liegen eine Tabelle mit den bildern, beschreibungen aufnahmedatum usw. halt mit den bewertungsdaten (stimmen und co., wo die bild_id öfters vorkommt und dahinter der entsprechende User gesetzt wirde, der bewertet hat.........ne, moment, denn sind auch die Bewertungspunkte ja redundant, weil sie immer wieder vorkommen,also wäre dort eine Trennung zu empfehlen, indem ich in der 1.Tabelle die Bilddaten und Bewertungen speichere (jede zeile einmalig) und die 2. Tabelle mit den Bewertungssperren enthält dann die genannten zeilen mit X mal der Bild_id und dazu die user_id die gesperrt sind (wobei X dann die Anzahl deruser wäre, die bewertet haben)

    Es sei denn man Speichert alle user die bewertet haben in EINER Zelle, dann erübrigt sich die dritte Tabelle und ich könnte das in der 2. Tabelle mit eintragen...


    So, jetzt sagt mir bitte das ich die Sache viel zu sehr verkompliziere, und es viel viel einfacher geht ^^
    Geändert von Schakal81 (25.06.2007 um 16:02 Uhr)

  4. #4
    TP-Moderator Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.666
    Du solltest die Berechnungen wie "Anzahl Stimmen" und "Punkte" nicht in einer Tabelle ablegen sondern immer aus der Tabelle berechnen.

    Die Tabelle sollte so aussehen:
    Code:
    id|bild_id|user_id|bewertung|
    1|4|7|5
    2|4|3|8
    In diesem Fall haben Benutzer 7 und Benutzer 3 für Bild Nr. 4 abgestimmt. Der einer mit einer 5 der andere mit einer 8.
    Anzahl Stimmen und Punkt kriegst Du dann so raus:
    Code:
    SELECT count(*) AS AnzahlStimme, sum(bewertung) AS Punkte from bewertungen WHERE bild_id = 4
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

  5. #5
    TP-Member
    Registriert seit
    Feb 2003
    Beiträge
    82
    Passt, wackelt und hat Luft....

    Habs so gemacht, und funzt einwandfrei.
    Hatte echt gedacht ich könnte die doppelten Einträge (mehrmals die bild_id) sparen, aber wohl net, und so gehts ja.

    Achja, mit der Berechnung, da hätt ich auch drauf kommen könnne...is natürlich einfacher

    THX !!!

  6. #6
    TP-Moderator Avatar von Cybergreek
    Registriert seit
    Nov 2005
    Ort
    Köln
    Beiträge
    1.666
    Zitat Zitat von Schakal81 Beitrag anzeigen
    THX !!!
    You're Welcome
    Grüße vom Griechen,
    Cybergreek!

    everygain Translator - eine Firefox-Erweiterung, damit der Grieche Euch besser versteht

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

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