php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Bewertung: Bewertung: 1 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 27-01-2010, 00:49
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard Trigger oder Skript?

Hallo zusammen,


Ich hab diesmal kein Problem sondern eine grundsätzliche Frage die zu einer möglichen Lösung führen soll. Weil es je nach Lösung ggf. im falschen Subforum steht, schreib ich das hier hin, weil das Anwendungsziel im Endeffekt nur MySQL betrifft.

Folgendes ist in überlegung bzw. gilt es bald zu lösen. Ein System mit mehreren Nutzergruppen (und Subgruppen) soll sich, wenn die Benutzerrechte einer beliebigen Gruppe geändert werden, selbstständig anpassen. Dh. Die Rechte für die der zugewiesenen und geänderten Gruppe sollen so angepasst werden, dass sie dem aktuellen Zustand/IST entsprechen.
Weil mir leider keine InnoDB zur verfügung steht, wo man das eigentlich relativ simple über FKs regeln kann stellt sich mir nun die Frage, ob man sowas zum einen überhaupt triggern kann - und wenn ja, wie - oder ob sowas nur mit zusätzlichen Skript zu schaffen ist.

Für diese Gruppenzuweisungen und Rechte gibts jeweils mehrere Tabellen: (hier im Beispiel auf das wichtigste gekürzt und zwecks besserer verständlichkeit umbenannt)

User: UserId, UserName, ...
Gruppe: id, hauptgruppenid, name, ...
mitglieder_gruppe: id, userid, gruppenid
rechte: id, name
gruppenrechte: id, gruppenid, rechteid
user_rechte_nm: id, rechteid, userid (für die n:m-Beziehung zwischen User und Rechte)


Ziel ist nun folgendes:
Wenn irgendwas in "gruppenrechte" verändert wird (also einer beliebigen Gruppe ein Recht gesetzt/entzogen wird), soll automatisch auf die user_rechte_nm angepasst werden - auf letzterer basieren die Rechte des Nutzers. Dh. also, dass der Trigger auslesen, vergleichen und ggf. anpassen (setzen/entziehen) müsste und das anhand der userid. Ist das überhaupt möglich, um mal wieder zur eigentlichen Kernfrage des Threads zu kommen, oder geht das nur über ein zusätzliches Skript welches bei einem solchen Vorgang gestartet wird?

Das MySQL-Handbuch ist was Trigger-Beschreibungen angeht sehr bescheiden, daher weiss ich einfach nicht ob sowas möglich ist. Hatte bisher auch nie mit Triggern gearbeitet - was es nicht einfacher macht. *g*

Gruss
Mit Zitat antworten
  #2 (permalink)  
Alt 27-01-2010, 01:03
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

kannst du bei deinem Hoster überhaupt Trigger benutzen? Hast du die Rechte dafür? Das ist nämlich auch nicht bei jedem der Fall und wenn dir schon kein InnoDB zur Verfügung steht, ist es nicht sehr wahrscheinlich, dass du triggern darfst.

Edit: Mal 'ne andere Frage - wieso speicherst du eigentlich die Nutzerrechte einzeln? Die sind doch über die Gruppenzugehörigkeit schon zugeordnet.

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (27-01-2010 um 01:17 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 27-01-2010, 01:15
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von medium22 Beitrag anzeigen
Weil mir leider keine InnoDB zur verfügung steht, wo man das eigentlich relativ simple über FKs regeln kann
Überlegung - betreibe ich für etwas erhöhten Aufwand, oder sorge ich dafür, dass mir die nötige Technik zur Verfügung gestellt wird?

Also ich würde zu letzterem tendieren.
InnoDB ist ja nun nichts derart exotisches und absonderliches, dass man die Aufnahme ins Voraussetzungsprofil nicht rechtfertigen könnte.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #4 (permalink)  
Alt 27-01-2010, 11:45
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Hallo,


Hatte da schonmal mit dem Kundenservce telefoniert und auch gegen mein Angebot, einen kleinen Aufpreis zu bezahlen, wird es keine InnoDB geben.
Ob ich überhaupt Trigger nutzen kann? Gute Frage... Wie kann ich sowas prüfen, bzw. wo in der Konfiguration nachlesen?
Mit Zitat antworten
  #5 (permalink)  
Alt 27-01-2010, 11:57
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Du kannst das überprüfen, indem du folgenden Befehl absetzt:

Code:
create trigger testtrigger before insert on TABELLENNAME for each row set @a = 1;
Statt TABELLENNAME musst du einen gültigen Tabellennamen benutzen. Wenn keine Fehlermeldung kommt, darfst du Trigger benutzen und solltest den dann auch wieder löschen:

Code:
drop trigger testtrigger;
Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #6 (permalink)  
Alt 27-01-2010, 12:21
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Und ich dachte schon man könnte das in der Konfiguration nachlesen.

Code:
#1227 - Access denied; you need the SUPER privilege for this operation

Dann bleibt mir also nur der Umweg über ein Skript. (oder ein Wechsel des Hosters, was ich zZ. aber ausschliesse)


Danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 27-01-2010, 12:24
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Kannst du das bitte erstmal beantworten?

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Mal 'ne andere Frage - wieso speicherst du eigentlich die Nutzerrechte einzeln? Die sind doch über die Gruppenzugehörigkeit schon zugeordnet.
Ich vermute, dass du das, was du vorhast, gar nicht brauchst. Das riecht nämlich verdächtig nach einem Designfehler.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #8 (permalink)  
Alt 27-01-2010, 12:30
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Weil es in mit meinen Möglichkeiten so einfacher ist auf einzelne Rechte zuzugreifen ohne bei jedem Seitenaufruf ein 'riesen-ding' auf mysql loszulassen. Im Endeffekt soll die ganze Seite (die im übrigen nur durch ein login betretbar ist) so funktionieren, dass so ziemlich alles nur über vorhandene Rechte angezeigt wird - oder eben nicht. Ich brauche da immer den Rechtenamen (bzw. die Abkürzung/Benennung) über die das gesteuert wird (bzw. werden soll)
Siehe dazu auch andere Threads von mir in den letzten paar Wochen *g*
Mit Zitat antworten
  #9 (permalink)  
Alt 27-01-2010, 12:34
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich weiß schon, ich erinnere mich an deine Threads, aber was ist einfacher: bei jeder Änderung der Gruppenrechte die Benutzerrechte zu aktualisieren oder gleich die Gruppenrechte abzurufen? Um MySQL mache ich mir bei letzterem absolut keine Sorgen. Eine DB zu denormalisieren, um einen Join zu sparen, ist absolut der falsche Ansatz. Wenn du das durchziehst, ärgerst du dich später nur, denn irgendwas wird dabei irgendwann schiefgehen.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #10 (permalink)  
Alt 28-01-2010, 00:01
medium22
 Registrierter Benutzer
Links : Onlinestatus : medium22 ist offline
Registriert seit: Mar 2006
Beiträge: 308
medium22 zeigte ein beschämendes Verhalten in der Vergangenheit
Standard

Da hast Du natürlich - wie (fast) immer - Recht!
Grade wenn ich daran denke, wie oft da Neues hinzu kommt und/oder etwas geändert/angepasst wird, macht es auf die andere Weise viel mehr Sinn, ist viel dynamischer und vor allem viel pflegeleichter als mein Entwurf.

Der Herr dankt!
Mit Zitat antworten
Antwort

Lesezeichen


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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Suche] Upload-Script und/oder Einbinde-Skript Snowman25 Apps und PHP Script Gesuche 2 01-07-2009 09:19
Trigger Problem MS-SQL Skrok SQL / Datenbanken 2 23-06-2008 11:38
Variable in Trigger verwerfen / Trigger mit Parameter tracer23 SQL / Datenbanken 2 29-04-2008 14:33
MYSQL 5 und trigger Mirandus SQL / Datenbanken 1 25-01-2006 19:31
Bilder per java / oder Skript auf server erkennen Tim123 Apps und PHP Script Gesuche 2 07-12-2005 10:28

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:19 Uhr.