Eurokicker
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 15.09.2003, 21:58   #1
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg

schwieriger join


gähn, über dem problem brate ich jetzt auch schon wieder ne zeit.

also ich habe drei tabellen
- eine mit usern und ihren attributen
- eine mit allen möglichen rechten
- eine mit den zuordnungen (wer welche rechte hat)

Jetzt will ich eine Userübersicht machen, wo bei jeden User alle rechte aufgezählt sind.
Das problem ist jetzt nur, dass ja da nicht ein datensatz klar einem anderen zuordnungsfähig ist, sondern einem datensatz werden viele zugeordnet.

Muss ich da dann zwei abfragen machen (das wäre kein problem) oder geht es elegant und schnell mit einer???
__________________
Gruß
Tobias

Sag einem Klugen einen Fehler, er wird erfreut und dankbar sein.
Ein Dummer sieht dich nur als Quäler und schnappt sofort beleidigt ein.
[Karl Heinz Söhler]
TobiasKa ist offline   Mit Zitat antworten


Alt 15.09.2003, 22:10   #2
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
hmm solche sachen gehen bei mir meistens mit probieren, wenn DAS auch nicht geht hilft Jan, Michael oder LArs

PHP-Code:
SELECT user.name,rechte.* FROM user 
INNER JOIN user_rechte ON user
.user_id user_rechte.user_id 
INNER JOIN rechte ON rechte
.recht_id user_rechte.recht_id 
WHERE 
[wie auch immer
ORDER BY user.name ASC 
So oder so ähnlich könnte es gehen ...
Alex
__________________
Gruß vom holu

Geändert von holunda (16.09.2003 um 13:37 Uhr).
holunda ist offline   Mit Zitat antworten
Alt 15.09.2003, 23:32   #3
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg
so jetzt probier ich schon die ganze zeit und stelle google immer wieder neue fragen aber ich komme nicht auf einen grünen zweig.

Hier zwei abfragen die einzeln funktionieren, ineinander verschachtelt aber leider nicht mehr. Das ist also auch nicht die lösung.

könnt ihr damit was anfangen?

PHP-Code:
$abfrage "SELECT sys_benutzer.benutzer_id, sys_benutzer.benutzer, 
sys_benutzer.Nachname, sys_benutzer.Vorname, sys_benutzer.lastlogin,
sys_benutzer.sperrung, sys_benutzer_typ.Typ, sys_benutzer_typ.icon
FROM sys_benutzer, sys_benutzer_typ WHERE
 sys_benutzer.typ_id = sys_benutzer_typ.typ_id 
AND gruppe = '" 
$_SESSION["gruppe"] . "' ORDER BY " $_SESSION["order_ben"] . 
$direction " LIMIT " $_SESSION["limit_ben"] . "," $_SESSION["dsps"];
$ergebnis sql($abfrage$con_dbdaten);
while (
$daten mysql_fetch_array($ergebnis,MYSQL_BOTH)) {
echo (
$daten[0] . " - 
$daten[1] . " - " $daten[2] . " - " $daten[3] . " - " $daten[4] . "
 - " 
$daten[5] . "<br>");

$abfrage "SELECT sys_module.Modulname FROM sys_module_benutzer, 
sys_module WHERE sys_module_benutzer.benutzer_id = '" 
$daten[0] . "' AND
sys_module_benutzer.modul_id = sys_module.modul_id"
;
$ergebnis sql($abfrage$con_dbdaten);
while (
$daten mysql_fetch_array($ergebnis,MYSQL_BOTH)) {
echo (
$daten[0] . ", ");
}


Das wäre echt super!
__________________
Gruß
Tobias

Sag einem Klugen einen Fehler, er wird erfreut und dankbar sein.
Ein Dummer sieht dich nur als Quäler und schnappt sofort beleidigt ein.
[Karl Heinz Söhler]

Geändert von TobiasKa (17.09.2003 um 17:46 Uhr).
TobiasKa ist offline   Mit Zitat antworten
Alt 16.09.2003, 00:35   #4
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
kannst du vielleicht kurz die datenstruktur der drei tabellen mal posten? (SK, FK)
dann tut man sich gleich ein wenig leichter

@alex:
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 16.09.2003, 08:16   #5
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg
da ist sie:

Code:
#
# Tabellenstruktur für Tabelle `sys_benutzer`
#

CREATE TABLE sys_benutzer (
  benutzer_id int(11) NOT NULL auto_increment,
  typ_id int(11) NOT NULL default '0',
  benutzer text NOT NULL,
  passwort text NOT NULL,
  email text NOT NULL,
  Anrede text NOT NULL,
  Vorname text NOT NULL,
  Nachname text NOT NULL,
  Strasse text NOT NULL,
  PLZ text NOT NULL,
  Ort text NOT NULL,
  Telefon text NOT NULL,
  Fax text NOT NULL,
  Handy text NOT NULL,
  statistiken tinyint(4) NOT NULL default '0',
  info_email tinyint(4) NOT NULL default '0',
  info_sms tinyint(4) NOT NULL default '0',
  menue tinyint(4) NOT NULL default '0',
  dsps int(11) NOT NULL default '0',
  gruppe text NOT NULL,
  sperrung tinyint(4) NOT NULL default '0',
  sprache text NOT NULL,
  lastlogin datetime NOT NULL default '0000-00-00 00:00:00',
  PRIMARY KEY  (benutzer_id,benutzer_id,typ_id)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `sys_benutzer_typ`
#

CREATE TABLE sys_benutzer_typ (
  typ_id int(11) NOT NULL auto_increment,
  Typ text NOT NULL,
  icon text NOT NULL,
  PRIMARY KEY  (typ_id)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `sys_module`
#

CREATE TABLE sys_module (
  modul_id int(11) NOT NULL auto_increment,
  Modulname text NOT NULL,
  Datei text NOT NULL,
  db_name text NOT NULL,
  gruppe text NOT NULL,
  PRIMARY KEY  (modul_id)
) TYPE=MyISAM;
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `sys_module_benutzer`
#

CREATE TABLE sys_module_benutzer (
  modul_id int(11) NOT NULL default '0',
  benutzer_id int(11) NOT NULL default '0',
  order int(11) NOT NULL default '0',
  PRIMARY KEY  (modul_id,benutzer_id)
) TYPE=MyISAM;
__________________
Gruß
Tobias

Sag einem Klugen einen Fehler, er wird erfreut und dankbar sein.
Ein Dummer sieht dich nur als Quäler und schnappt sofort beleidigt ein.
[Karl Heinz Söhler]
TobiasKa ist offline   Mit Zitat antworten
Alt 16.09.2003, 10:18   #6
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
also tobias, da blick ich nicht ganz durch.
Ich kann ohne Daten nicht erkennen, wo und wie du deine Rechte verwaltest.
Kurz, soweit ich das verstehe:
Users (sys_benutzer) können module (sys_module) aufrufen
Die Beziehung, wer welchen Modulen zugeordnet ist, ist in der sys_module_benutzer geregelt.
Bleibt ansich nur noch der sys_benutzertyp. nur wie oder warum was wo du da die Rechte hast...
da kann ich nur eine 1:n Beziehung zu den benutzern rauslesen.

kann ich dich noch um eine kleine erklärung der Tabellen bzw. vielleicht um demodaten bitten?
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 16.09.2003, 10:24   #7
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg
die tabelle sys_benutzer_typ hat keinen einfluss auf das rechtesystem. dort wird gespeichert, ob der user admin, gast oder normaler user usw. ist. Um die "usertypen" unkomplizierter umbenennen und erweitern zu können habe ich das in eine extra tabelle gesteckt.

der rest deiner interpretation war richtig
__________________
Gruß
Tobias

Sag einem Klugen einen Fehler, er wird erfreut und dankbar sein.
Ein Dummer sieht dich nur als Quäler und schnappt sofort beleidigt ein.
[Karl Heinz Söhler]
TobiasKa ist offline   Mit Zitat antworten
Alt 16.09.2003, 10:28   #8
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
und wo sind dann da die rechte?
oder geht es nur darum, rauszufinden, welche Module den jeweiligen Usern zugeordnet sind?
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 16.09.2003, 10:42   #9
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg
genau, die "spezielle" rechteverwaltung ist woanders (da jeder datensatz andere rechte haben kann. Hier geht es nur grundsätzlich um das benutzen der module und ihre reihenfolge im menü (order)
__________________
Gruß
Tobias

Sag einem Klugen einen Fehler, er wird erfreut und dankbar sein.
Ein Dummer sieht dich nur als Quäler und schnappt sofort beleidigt ein.
[Karl Heinz Söhler]
TobiasKa ist offline   Mit Zitat antworten
Alt 16.09.2003, 10:58   #10
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
nochmal:
also du willst nur den namen der module haben, die der user verwenden darf?

dann:
select b.benutzer_id, benutzer, m.modul_id modulname from sys_benutzer b,sys_module_benutzer smb,sys_module m
where smb.benutzer_id = b.benutzer_id
and smb.modul_id = m.modul_id
and b.benutzer_id=1
order by smb.order
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 16.09.2003, 11:10   #11
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg
so jetzt sind wir schon ganz nah dran

so ähnlich habe cih es auch schon mal versucht, das problem ist nur, dass ich das ergebnis gerne etwas anders hätte.

jetzt sieht es so aus

Code:
benutzer_id | benutzer      | modulname
------------|---------------|-------------------
1           | administrator | Übersicht 
1           | administrator | Benutzer verwalten 
1           | administrator | Workflow verwalten
So wäre aber das "musterergebnis"

Code:
benutzer_id | benutzer      | modulname
------------|---------------|-------------------
1           | administrator | Übersicht, Benutzer verwalten, Workflow verwalten
geht das überhaupt?

oder müsste ich dann mit php rumspielen dass es so wird?
__________________
Gruß
Tobias

Sag einem Klugen einen Fehler, er wird erfreut und dankbar sein.
Ein Dummer sieht dich nur als Quäler und schnappt sofort beleidigt ein.
[Karl Heinz Söhler]
TobiasKa ist offline   Mit Zitat antworten
Alt 16.09.2003, 11:33   #12
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
wird dir wohl ein paar zeilen php nicht ausbleiben. wobei du den select von oben durchaus heranziehen kannst. und in der verarbeitungsschleife auf änderund der userID abprüfst um deine liste zu 'glätten'
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 16.09.2003, 11:37   #13
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg
ok, schade das das mysql nicht hergibt. Wird das irgentwann man möglcih sein?
__________________
Gruß
Tobias

Sag einem Klugen einen Fehler, er wird erfreut und dankbar sein.
Ein Dummer sieht dich nur als Quäler und schnappt sofort beleidigt ein.
[Karl Heinz Söhler]
TobiasKa ist offline   Mit Zitat antworten
Alt 16.09.2003, 11:42   #14
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
ob es mysql hergibt, kann ich dir nicht sagen, weil ich es nicht weiss. dazu bin ich zu 'standard' um alle spezialitäten von mysql zu kennen - man muss ja schliesslich auch auf anderen DB Systemen arbeiten .
aber ich hab mich schon oft gewundert, was MYSQL nicht alles kann...
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 16.09.2003, 11:52   #15
TP-Insider
 
Benutzerbild von TobiasKa
 
Registriert seit: Feb 2002
Ort: Burgkichen (Austria)
TobiasKa ist auf einem guten Weg
vielleicht kann mir ja noch jemand anderes helfen. (herzlichen dank longfang)

und warum klappt die "verschachtelte" abfrage nicht?? (siehe oben)
__________________
Gruß
Tobias

Sag einem Klugen einen Fehler, er wird erfreut und dankbar sein.
Ein Dummer sieht dich nur als Quäler und schnappt sofort beleidigt ein.
[Karl Heinz Söhler]

Geändert von TobiasKa (16.09.2003 um 12:14 Uhr).
TobiasKa ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
schwieriger join schwieriger join
« zahlenlänge | Hintergrund dynamisch an Uhrzeit anpassen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:16 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



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 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

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