Ergebnis 1 bis 9 von 9

Thema: mySQL Tabelen verbinden

  1. #1

    mySQL Tabelen verbinden

    Hallo ,

    Undzwar suche ich eine etwas einfachere Möglichkeit zu definieren wer welchen Kontent sehen darf usw. eben recht verteilung.

    Hierbei bin ich gerade das News system zu bauen.
    Nun gibt es Katigorien (table 1) und die News selber (tabele 2)

    gibt es einen SQL befehlt mit dem ich sagen kann

    Das er nur auswählen soll von Tabele 2 wenn die dazugehörige Katigorie nicht das eigene recht überstosst also grob gesagt eine verknüpunf zwischen den Tabelen.

    Also so in etwa:

    Wenn in Tabele 2 Recht = X ist wird von Tabele 1 X gesucht in Spalte Y und aus Tabele 1 Spalte Z ausgelsen und in spalte Z von Tabele 2 Eingetragen.

    Wenn ich nun Spalte Z ovn Tabele 1 Änder , ändert sich auch das Z auf tabele 2.

    Weiss jemand wie ich das Lösen kann ?


    Mfg Dadie

  2. #2
    Hmm, ich kann dir nur eins beantworten, und das auch nur wenn du das mit nem Login oder mit nem namen machst...

    $user_1 = "SELECT rechte FROM user WHERE nickname = '" .$nickname. "'";
    $user = mysql_query($user_1);


    Was das query amcht sollte dir ja klar sein, und das mit den rechten die musste halt in ne db schreiben, dazu die namen, und die rechte die die namen haben...


    geht gar net mal so schwer wie du denkst^^

  3. #3
    Ich glaube irgentwie du hast die Frage nicht verstanden -.-

    Ich sage es mal nicht so allgemein :

    Ich habe die Tabele News_Katigorien
    Diese hat 3 Spalten

    |ID|Name|Recht

    Dadrin steht jetzt z.B.
    |1|Admin|2

    Nun habe ich eine Zweite Tabele
    News

    Die ist wie folgt aufgebaut :

    |ID|User_id|Katigorie|Conten|Conten_more|View_able|

    Da steht dann jetzt z.B. drin

    |1|1|1|news|news wirklich toll|1|

    Nun will ich OHNE Nerviges PHP Script herrausfinded
    wie das Recht zur Katigorier lautet die ich von den News auslese.

    Das kann ich auch über PHP Lösen doch würde das die SQL DB stark belasstn genau so wie den server darum suche ich eine Alternative und evtl. geht es ja auch über SQL
    eben eine Art verknüpfung.

  4. #4
    AFAIK geht so etwas nicht. Aber mal ehrlich: Wie viele SQL-Querys führt ein Seitenaufruf deiner "Webseite" aus? 10? 20? vielleicht sogar 50? Ob du da nun noch prüfst, ob der User die nötigen Rechte besitzt ist "Jacke wie Hose". Und IMHO kann man dabei auf keinen Fall sagen, dass es den Server stark belastet (die Abfrage von 30 Threads im Forum verbraucht garantiert einiges mehr an Resourcen).

  5. #5
    Zitat Zitat von dead_orc
    AFAIK geht so etwas nicht. Aber mal ehrlich: Wie viele SQL-Querys führt ein Seitenaufruf deiner "Webseite" aus? 10? 20? vielleicht sogar 50? Ob du da nun noch prüfst, ob der User die nötigen Rechte besitzt ist "Jacke wie Hose". Und IMHO kann man dabei auf keinen Fall sagen, dass es den Server stark belastet (die Abfrage von 30 Threads im Forum verbraucht garantiert einiges mehr an Resourcen).
    Klar ist es nur wennig doch wenn es eine Alternative gäben könnte warum nicht fragen ?

  6. #6
    Mit einer MyISAM-Tabelle kriegst du das nicht hin; InnoDB-Tabellen besitzen aber die Möglichkeit, Tabellen zu verknüpfen. Ich habe mich nur kurz damit befaßt und weiß also nicht, ob deine Sache damit realisierbar ist, es ist aber recht wahrscheinlich.

    Allerdings muß auf dem Server MySQL mit InnoDB-Unterstützung kompiliert worden sein.

  7. #7
    naja ich verstehe das problem nicht
    wieso ein extra sqlbefehl?
    wenn der rechtewert eine besitmtme reihenfolge hat. zb 0 = keine rechte 2 alle rechte
    oder umgekehrt ist das doch nur eine sache einer wherebedingung >= bzw <=
    naja ich verstehe bloss nicht wieso dadie hier rehcte für kategorien will x.X
    ich verstehe dahinte rdie logik nicht
    entweder passt die news zur kategorie oder nicht
    quasi news.Katigorie = News_Katigorien.ID
    rechte würde ich wnen schon auf eine usertabelle verlegen
    2 = admi
    1 = normaler user
    0 = nix (muss notfalls phpmässig abgesichert werden)

    und dann eben die abfragen soweit umändern dass mit News_Katigorien.Recht immer <= usertabelle.Recht

    das geht nicht nur für kategorien sondern auch für buttons etc


    man muss auch nicht auf 3 ränge beschränkt sein
    man kann 1 = nicht freigeschalteter user
    2 = normaler user
    3 = newsposter
    4 = admi machen etc


    soweit sollte es simpel sein

    eine problematik gibt es noch
    wenn du mehrere scripte in auf dem prinzip hast

    sagen wir newssystem
    und dann ein winziges forum hast und genau die gleichen rechte benutzt kanns sein dass newsposter und moderatoren die gleichen rechte haben dagegen muss man eben vorgehen mittels eigenem rechtewert etc

    naja hoffe hat geholfen und dadie meckert nicht dass ich nun was falsches erklärt habe

  8. #8
    Die news werden alle auf einer seite angezeigt georded nach Datum
    So nun kann jeder News in eine Katigorie eingestufft werden (die man vorher festgelegt hat)

    Die Katigorie entscheided folgendes :

    Für wenn ist es sichtbar
    Wie siht das News Design aus
    Wie siht das News Bild aus

    und viele anderre infos.
    Ich könnte diese infos auch mit ihm News speichern aber wenn ich eine geisse News gruppe den "mod" zur verfügen stellen will müsste ich dann X News Bearbeiten.

    Das heisst in den News steht kein Punkt vom recht ledeglich die Katigorie steht im News drin.

    Somit müsste ich immer 2-3 abfragen senden um 1 News zu erhalten
    News id+katigorie ID auslesen
    Recht mit der katigorie auslesen
    Wenn recht gleich oder höher ist news komplett auslesen und ausgeben.

    Das ganze will ich mir (wenn möglich) ersparen

  9. #9
    Das Zauberwort hier ist JOIN.

    Mit Joins lassen sich die Einträge von verschiedenen Tabellen mit hilfe eines gemeinsamen Schlüssels verknüpfen. Ich mach da mal ein kleines Beispiel.

    PHP-Code:
    $SQLQuery = .
    "SELECT News.Katigorie AS ID, News_Katigorien.Name AS Name, News_Katigorien.Recht AS Recht" .
    "FROM News " 
    "WHERE News.ID = $PHP_Var " .
    "FULL JOIN News_Katigorien ON News_Katigorien.ID = News.Katigorie" 
    Ausgabe:
    Code:
    +----+-------+-------+
    | ID | Name  | Recht |
    +----+-------+-------+
    | 1  | Admin |   2   |
    +----+-------+-------+



    So müsste die Query laufen, ist allerdings ungetestet und zudem schon ne Weile her, dass ich meinen Letzen Join geschrieben habe ^^°

    Geändert von Latency (03.06.2005 um 14:41 Uhr)

Berechtigungen

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