Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Konzept für Tabellenaufbau

  1. #1
    Alexandra1991
    Gast

    Standard Konzept für Tabellenaufbau

    Hallo liebe forum-hilfe Gemeinschaft,

    ich habe vor ein paar Wochen mit einem neuen Projekte begonnen und würde nun gerne ein Bewertungssystem einbauen. Bewerten kann man Produkte, welche User in die DB eintragen können. Abgesehen davon will ich auch noch eine Pinnwand für jedes Produkt einführen.

    Mit einem Daumen nach oben, soll man ein Produkt mit +1 bewerten können und mit einem Daumen nach unten eben mit -1.
    Jedes Produkt erhält eine Pinnwand, wo Leute ein Feedback hinterlassen können (also sowas in die Art Gästebuch).

    Das selber zu programmieren ist kein Problem, das Problem liegt bei dem Tabellenaufbau, denn ich muss für das ganze auch noch eine IP Sperre einführen, sprich ein User kann mit seiner IP ein Produkt nur 1mal bewerten.

    Ich habe derzeit in meiner Datenbank (MySql) eine Tabelle namens "Produkte". Dort steht unter anderem die "id", der "Titel" und eine "Beschreibung" des Produkts.
    Beim eintragen eines Produktes wird es in die Tabelle "Produkte" geschrieben. In diese Tabelle würde noch eine Spalte mit Stimmen hinzukommen, sprich wenn 10 Leute auf "Daumen nach oben" klicken, hat das Produkt die Zahl 10 in der Spalte Stimmen.

    Für die IP überprüfung bräucht ich jetzt aber für jedes Produkt eine neue Tabelle, da ich ja alle Ip Adressen, die bereits abgestimmt haben, in die DB eintragen muss, um erneute Bewertungen zu verhindern.

    Habe ich nun 1000 Produkte in der Tabelle "Produkte" stehen, brauch ich für jedes einzelne Produkt eine Tabelle - das wären tausend Tabellen - und in jeder dieser Tabellen können wiederum tausende von Ip Adressen stehen. Hinzu kommt noch, dass jedes Produkt ne Pinnwand bekommt. User können ihren Namen + eine Nachricht hinterlassen. Name und Nachricht werden in die Tabelle eingetragen, wo auch die Ip Adressen stehen, die bereits abgestimmt haben.

    Ich hab dann also enorm viele Tabellen und diese haben wiederrum enorm viel Inhalt - ich nehme mal an das wirkt sich dann auch sehr stark auf die Ladezeiten aus?

    Also was mich interessiert ist, wie man ein Bewertungssystem und eine Pinnwand für jedes Produkt mit möglichst wenig Tabellen hinbekommt.
    Ich hoffe ich habe mich verständlich ausgedrückt

    Mit freundlichen Grüßen
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    König(in)
    Registriert seit
    07.02.2009
    Ort
    Leipzig
    Beiträge
    1.391
    Danke
    2
    Bekam 21 mal "Danke" in 20 Postings

    Standard AW: Konzept für Tabellenaufbau

    Erstell für die Bewertungen eine (!) zweite Tabelle. Diese sollte aus den Spalten

    produktid
    ip
    bewertung

    bestehen. "produktid" sollte mit der "id" aus "produkte" gefüllt sein, in ip die IP des Besuchers und bei "bewertung" jeweils "-1" oder "1" - nichts anderes. Ein Datensatz sähe dann so aus:

    42 | 1.2.3.4 | -1

    So kannst Du für ein Produkt dann die Bewertungen summieren:
    Code:
    select SUM(bewertungstabelle.bewertung) from produkte
    left join bewertungstabelle on bewertungstabelle.produktid = produkte.id
    group by produkte.id
    Soweit klar? Du brauchst nicht unnötig viele Tabellen. Das was Du machen musst nennt sich Normalisierung deines Datenbankmodells. Und dabei käme o.g. vorgehen heraus.

    Btw. ist eine Sperre per IP ungenügend. Nicht jeder Nutzer hat ständig die selbe ip. Manche haben dank Proxy-Netzwerken auch bei jedem Aufruf der Seite eine andere IP. Besser ist eine Kombination aus IP, Browser und ggfs. auch Bildschirminfo sowie eine Zeitsperre (nur 1 mal täglich oder ähnlich).

  3. #3
    Alexandra19
    Gast

    Standard AW: Konzept für Tabellenaufbau

    Hallo threadi,

    danke erstmal für deine Antwort.


    Brauche 4 Felder für die Pinnwand: id(damit ich die Einträge den Produkten zuordnen kann), Name, Message und Abschicksdatum.

    Wenn ich für die ganze IP Sperre Nur ein Tabelle brauch, kann ich doch praktisch die ganzen Pinnwänder Einträge auch in einer Tabelle sammeln!?
    Sehe ich das so richtig?

    liebe grüße

  4. #4
    Pion
    Gast

    Standard AW: Konzept für Tabellenaufbau

    Das siehst du so richtig, passe aber bischen mit der Namensgebung und Großkleinschreibung auf

    Empfehlenswert ist in der DB kleinschreibung auf english


    mfg

  5. #5
    Alexandra191991
    Gast

    Standard AW: Konzept für Tabellenaufbau

    Hi Pion,

    alles klar, ich werde darauf achten.

    Habt mir sehr weitergeholfen, danke euch vielmals!

    liebe grüße

  6. #6
    Alexandra191231231
    Gast

    Standard AW: Konzept für Tabellenaufbau

    Hi Leute,

    sitzte gerade an der Pinnwand, derzeit aber ohne großen Erfolg

    Ich hab nun in meiner Datenbank eine Tabelle namens "pinnwand" erstellt.
    Wie schon erzählt erhält jedes Produkt eine eigene Tabelle.

    So sieht die Tabelle Pinnwand aus:

    +----+--------+--------+-------+
    | i d | datum | name | inhalt |
    +----+--------+--------+-------+
    +----+--------+--------+-------+
    | 1 | 2010 | test | blabl |
    | 1 | 2010 | test | blabl |
    | 1 | 2010 | test | blabl |
    | 2 | 2010 | test | blabl |
    | 2 | 2010 | test | blabl |
    | 2 | 2010 | test | blabl |
    +----+-------+----------+------+


    Problem: fehlerhaftes auslesen der Pinnwandeinträge:

    Per Suche kann man nach Produkten suchen. Neben jeden Produkt steht folgender Link:

    <a href="index.php?action=pinnwand&produkt='.$produkt->id.'">Pinnwand</a>

    Die Variable "$websites->id" enthält die id des Produktes. Wenn man auf oberen Link klickt, wird man auf die index.php weitergeleitet und dort wird überprüft, welchen Wert die Variable "action" enthält, in dem Fall ist der Wert der Variable "pinnwand" - dadurch wird die pinnwand.php includet.
    In der pinnwand.php überprüfe ob die produkt id überhaupt existiert, wenn nicht, wird alles abgebrochen, ansonsten werden die Einträge die mit der id übereinstimmen ausgegeben.
    Leider wird bei allen Produkte alle Einträge ausgegeben. Wenn ich auf das Produkt mit der id 1 klicke, sollen natürlich lediglich die Einträge mit der id 1 ausgegeben werden.

    Was mache ich bei der abfrage falsch? Hier das Code Stückchen für die Abfrage:


    $pwEintraege = "SELECT `datum`, `name`, `inhalt` FROM `pinnwand` WHERE `id` LIKE '$produktid'";
    $pwEintraege = mysql_query($pwEintraege);

    while($pwEintraege = mysql_fetch_object($pwEintraege))
    {
    echo '<p>'.$pwEintraege->datum.''.$pwEintraege->name.''.$pwEintraege->inhalt.'</p>';
    }

    In der ersten Zeile sag ich doch, dass ich nur den Inhalt der Felder "datum", "name" und "inhalt" haben möchte, wenn deren id mit der produktid übereinstimmen. Dennoch wird mir beim zweiten Produkt mit id 2 die Einträge mit der ID 1 ausgegeben.
    Abgesehen davon bekomm ich folgende Meldung:

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\inetpub\vhosts\mc-web.net\httpdocs\pinnwand.php on line 64




    Tschuldigung das ich euch so volltexte, aber ich komm da einfach nicht weiter

    liebe grüße

  7. #7
    Unregistriert
    Gast

    Standard AW: Konzept für Tabellenaufbau

    Bitte den vorigen Beitrag löschen, da er fehlerhaft ist.

    Hi Leute,

    sitzte gerade an der Pinnwand, derzeit aber ohne großen Erfolg

    Ich hab nun in meiner Datenbank eine Tabelle namens "pinnwand" erstellt.

    So sieht die Tabelle Pinnwand aus:

    +----+--------+--------+-------+
    | i d | datum | name | inhalt |
    +----+--------+--------+-------+
    +----+--------+--------+-------+
    | 1 | 2010 | test | blabl |
    | 1 | 2010 | test | blabl |
    | 1 | 2010 | test | blabl |
    | 2 | 2010 | test | blabl |
    | 2 | 2010 | test | blabl |
    | 2 | 2010 | test | blabl |
    +----+-------+----------+------+


    Problem: fehlerhaftes auslesen der Pinnwandeinträge:

    Per Suche kann man nach Produkten suchen. Neben jeden Produkt steht folgender Link:

    <a href="index.php?action=pinnwand&produkt='.$produkt->id.'">Pinnwand</a>

    Die Variable "$produkt->id" enthält die id des Produktes. Wenn man auf oberen Link klickt, wird man auf die index.php weitergeleitet und dort wird überprüft, welchen Wert die Variable "action" enthält, in dem Fall ist der Wert der Variable "pinnwand" - dadurch wird die pinnwand.php includet.
    In der pinnwand.php überprüfe ob die produkt id überhaupt existiert, wenn nicht, wird alles abgebrochen, ansonsten werden die Einträge die mit der id übereinstimmen ausgegeben.
    Leider wird bei allen Produkte alle Einträge ausgegeben. Wenn ich auf das Produkt mit der id 1 klicke, sollen natürlich lediglich die Einträge mit der id 1 ausgegeben werden.

    Was mache ich bei der abfrage falsch? Hier das Code Stückchen für die Abfrage:


    $pwEintraege = "SELECT `datum`, `name`, `inhalt` FROM `pinnwand` WHERE `id` LIKE '$produktid'";
    $pwEintraege = mysql_query($pwEintraege);

    while($pwEintraege = mysql_fetch_object($pwEintraege))
    {
    echo '<p>'.$pwEintraege->datum.''.$pwEintraege->name.''.$pwEintraege->inhalt.'</p>';
    }

    In der ersten Zeile sag ich doch, dass ich nur den Inhalt der Felder "datum", "name" und "inhalt" haben möchte, wenn deren id mit der produktid übereinstimmen. Dennoch wird mir beim zweiten Produkt mit id 2 die Einträge mit der ID 1 ausgegeben.
    Abgesehen davon bekomm ich folgende Meldung:

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\inetpub\vhosts\mc-web.net\httpdocs\pinnwand.php on line 64




    Tschuldigung das ich euch so volltexte, aber ich komm da einfach nicht weiter

    liebe grüße

  8. #8
    Alexandraaa
    Gast

    Standard AW: Konzept für Tabellenaufbau

    So, ich nochmal. Hatte eine kleinen Fehler bei der Variablenbezeichnung eingebaut - jetzt funktioniert alles,
    die Fehlermeldung ist aber nachwievor da:

    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in D:\inetpub\vhosts\mc-web.net\httpdocs\pinnwand.php on line 63


    Ich nehme mal an, dass liegt daran, dass ich mehrere Datensätze mit der selben id abfrage... Welche alternative zu mysql_fetch_obejct gibt es?

    liebe Grüße

  9. #9
    König(in)
    Registriert seit
    07.02.2009
    Ort
    Leipzig
    Beiträge
    1.391
    Danke
    2
    Bekam 21 mal "Danke" in 20 Postings

    Standard AW: Konzept für Tabellenaufbau

    Nein, diese Meldung kommt, wenn Du ein Statement ausführen willst, welches einen Fehler verursacht hat. Lass dir also das Statement mal ausgeben, welches Du für diese Ausgabe verwenden willst und führe das im phpmyadmin aus.

  10. #10
    Anlexandraaa
    Gast

    Standard AW: Konzept für Tabellenaufbau

    Das sql statement kann nicht (komplett) falsch sein? - mir werden ja die Daten, die ich abfrage ganz normal übermittelt.

Ähnliche Themen

  1. [suche] Partnerschaft für interessantes Web-Konzept gesucht !
    Von BSpg im Forum Job Forum - Jobs für Grafiker, Programmierer und Webmaster
    Antworten: 0
    Letzter Beitrag: 12.08.2010, 14:42
  2. Konzept midnightbeats.
    Von JulianB im Forum Job Forum - Jobs für Grafiker, Programmierer und Webmaster
    Antworten: 0
    Letzter Beitrag: 22.10.2008, 21:05
  3. Was haltet Ihr von dem Konzept und der Webpage ??
    Von CK74 im Forum Eure Homepages und Foren - Vorstellung und Bewertungen
    Antworten: 6
    Letzter Beitrag: 24.06.2008, 17:44
  4. "Cartoons for free" Konzept
    Von wolfi korn im Forum Eure Homepages und Foren - Vorstellung und Bewertungen
    Antworten: 6
    Letzter Beitrag: 19.11.2006, 00:33

Stichworte

Berechtigungen

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