/MySQL - verschiedene Benutzerrechte
Andreas
- php
Hallo!
Ich schreibe ja wie unten schonmal beschrieben gerade an einer Auktionsmaschine. Jetzt soll das so laufen, dass sich die Leute einloggen, habe ich gemacht mit einem Formular, das die Login-Daten in der user-Tabelle überprüft, dann die User_ID in eine Session schreibt, so kann ich von überall drauf zugreifen.
Die Besonderheit hier ist, dass derjenige, der Artikel versteigert User aussuchen bzw. auch auschließen kann(können soll:).
Leider finde ich keine vernünftige Lösung, wie ich das in der DB speichern soll, welcher user jetzt an welcher Auktion teilnehmen darf. Diese Information müßte ich dann vorher abfragen, und nur die Auktionen ausgeben, die für denjenigen User von belang sind.
Das Problem ist, dass an einer Auktion mehrer User teilnehmen, also kann ich das schonmal nicht bei den Auktionen speichern, genauso können Bieter bei mehreren Auktionen bieten. Das muß ich irgendwie anders lösen.
Hat da jemand einen Tip für mich, wie man sowas am besten löst?
Vielen Dank im voraus!
Grüsse
Andreas
Hoi,
Die Besonderheit hier ist, dass derjenige, der Artikel versteigert
User aussuchen bzw. auch auschließen kann(können soll:).
Leider finde ich keine vernünftige Lösung, wie ich das in der DB
speichern soll, welcher user jetzt an welcher Auktion teilnehmen
darf. Diese Information müßte ich dann vorher abfragen, und nur
die Auktionen ausgeben, die für denjenigen User von belang sind.
[...]
Hat da jemand einen Tip für mich, wie man sowas am besten löst?
Durch Normalisierung. Lege eine Tabelle "Permissions" oder so
aehnlich an, die 3 Spalten hat: eine ID, eine AID und eine UID.
Ausserdem vielleicht noch eine Spalte fuer die Permissions, je nach
dem, wie kompliziert das Rechtesystem sein soll. In die Spalte 'AID'
schreibst du die Auktions-ID, in die Spalte 'UID' schreibst du die
User-ID.
Gruesse,
CK
Hi!
Ja, so müßte das gehen. Nur wie mache ich am besten die Abfrage? Also angenommen ich will dem User eine Liste der Auktionen ausgeben, dann erstmal
select from permissions where user_ID = 'user_ID';
OK, dann eine Schleife mit folgenden Abfragen:
select from auktionen where ID = '$eben_ermittelte_auktionsID';
select from artikel where ID = '$eben_ermittelte_artikelID';
Die Beschriebung kann ich dann aus der Artikel Tabelle zusammenstellen, hinterher ein <br> und weiter in der Schleife!
Wäre das so zu empfehlen, oder wie macht man das besser?
Und wie werde ich am besten die alten Permissions wieder los, damit die Tabelle nicht zu voll wird?
Viele Grüsse
Andreas
Hoi,
Ja, so müßte das gehen. Nur wie mache ich am besten die Abfrage?
Also angenommen ich will dem User eine Liste der Auktionen
ausgeben, dann erstmal
[... viele ueberfluessige Abfragen in Schleifen ...]
Nein! Bitte nicht!
SELECT
permissions.perm, auktionen.name, artikel.name
FROM
permissions
LEFT JOIN
auktionen
ON
auktionen.id = permissions.aid
LEFT JOIN
artikel
ON
artikel.id = auktionen.artikelid
Damit solltest du alle Daten in einer Abfrage bekommen.
Und wie werde ich am besten die alten Permissions wieder los,
damit die Tabelle nicht zu voll wird?
DELETE FROM permissions WHERE aid = value;
Gruesse,
CK
Hi!
Ja, hab das so gemacht, nur hab ich fürs erste die Tabelle artikel gelöscht, und die paar Daten in auktionen eingetregen, ist fürs erste einfacher. An die Abfrage habe ich dann noch "WHERE permission.user_ID = $user_ID" angehängt.
Und wie ich eine Delete-Abfrage mache, war mir auch klar, nur wo baut man sowas am besten ein?
Aber dann habe ich noch ein Problem. Ich will das niedrigste Gebot finden, dazu den Bieter.
$query = "SELECT bieter_ID, min(Gebot) FROM gebote WHERE auktions_ID = '$ID' ORDER BY changed ASC";
Aber diese Abfrage scheitert leider immer. Wenn ich "min" oder "bieter_ID" weglasse gehts. Wieso? Theoretisch muß das doch gehen, oder?
Grüsse
Andreas
Hi,
Das Problem ist, dass an einer Auktion mehrer User teilnehmen, also kann ich das schonmal nicht bei den Auktionen speichern, genauso können Bieter bei mehreren Auktionen bieten. Das muß ich irgendwie anders lösen.
Hat da jemand einen Tip für mich, wie man sowas am besten löst?
Vielen Dank im voraus!
Du könntest mit einer Bindetabelle arbeiten, die ich mir ungefähr so vorstelle:
Tabelle: auktion_users
aukt_id, user_id
Hier wird festgelegt, welche User mitmachen dürfen bzw. welche nicht. Die Festlegung, wie diese Tabelle behandelt werden soll (Ausschluss oder Einschluss) kannst Du in einer Spalte Deiner Auktionstabelle eintragen.
Damit kann zumindest mal der Besitzer der Auktion festlegen, ob User explizit eingeschlossen oder explizit ausgeschlossen werden. In der Tabelle Bindungen wird dann eingetragen, welche User das sind.
Viele Grüsse
Achim