Abgleich von 2 Tabellen

JamesT

Erfahrenes Mitglied
Hallo liebe Community,

ich brauche eure hilfe, da ich im moment keinen weg sehe wie ich folgendes realisieren soll.

Also ich habe eine Mysql Datenbank mit 2 Tabellen (siehe angehängtes Bild)

In der Tabelle 1 sind Geräte und in Tabelle 2 sind Module, dabei gilt die Verbindung 1 zu n,
das heisst 1 Gerät und dazu viele Module. Deswegen gibt es in der Module Tabelle auch eine Spalte g_id (Geräte ID) um eine zuordnung machen zu können.

Kurz zur Spalte compat (Kompatibilität) folgende werte werden dort eingetragen:

0 = keine module getestet [farbe = farblos]
1 = modul ist kompatibel [farbe = grün]
2 = modul ist eingeschränkt kompatibel [farbe = gelb]
3 = modul ist inkompatibel [farbe = rot]

Die Farben werden dann später im layout zur anzeige verwendet, sind jetzt also nur als kommentar dahinter geschrieben

Wie man vorgeht:

Man legt ein Gerät an, beim eintragen ist die Spalte compat (kompatibilität) auf 0 gesetzt.
Nun kann man zu dem Gerät verschiedene Module eintragen, dabei gibt man auch den compat wert an, wie zum beispiel dieses modul ist inkompatibel.

Was ich nun gern möchte ist folgendes:

Nach jedem löschen, eintragen oder editieren eines Moduls, soll die Spalte compat von dem jeweiligen gerät in der Tabelle geraete aktualisiert werden und zwar nach folgendem Muster:

keine Module eingetragen (zum jeweil. Gerät) -> compat = 0
nur kompatible module eingetragen -> compat = 1
sind 3 kompatible module und ein inkompatibles modul eingetragen -> compat = 2
sind nur inkompatible module eingetragen -> compat = 3

Ich hoffe es kann mich jemand auf den richtigen Weg bringen. :-)

Danke schonmal im vorraus.

Grüße

Jamest
 

Anhänge

  • db.jpg
    db.jpg
    27,2 KB · Aufrufe: 26
Also ich glaub ich habe halbwegs verstanden, was du gern möchtest, deshalb mal folgenden Vorschlag. Seperiere das ganze und arbeite es nacheinander ab. Zum Beispiel so:

Wenn du den Löschen-Button drückst öffnest du eine extra PHP-Seite und löschst erstmal das Modul. Dann machst du ne Abfrage, wieviel Module es gibt und dann, welche Kompatibilitätsstufe jedes hat. Das wertest du dann aus und updatest die Gerätetabelle. Hinterher leitest du dann wieder zurück auf die andere Seite oder auf welche Seite auch immer.
 
Guten Morgen CraisiePrinzZ,

Ja, so in der Art habe ich mir das auch schon gedacht, nur ich hab keinerlei Idee, wie ich das auswerten soll.

Kann ich das schon in der while schleife machen?

PHP:
$check_compat = @mysql_query("SELECT compat FROM module WHERE g_id ='$geraete_id'");
while ($compat = mysql_fetch_array($check_compat)){
 // hier dann überprüfen?
}

Grüße

Jamest
 
Zuletzt bearbeitet:
Ja, jedoch muss ich erstmal wissen wie, ich hab keinerlei ansatzpunkt oder idee, wie ich das anfagen muss.

Ich hoffe jemand gibt mir hier den richtigen anstoss. :-)

Grüße

Jamest
 
Also ich nehme mal an, du weist, wie du auf die neue PHP-Seite kommst. Dort machst du als erste Anweisung ein SELECT. Du selektierst hierbei die Gerätenummer, die zum zu löschenden Modul gehört. Danach DELETEst du das Modul deiner Wahl. Dann zählst du jede einzelne Schutzstufe zu der Gerätenummer, die du im Vorfeld schon selektiert. Dann wertest du das nach deinen Kriterien aus und zu guter letzt änderst du den Datensatz mit einem UPDATE.
 
Also ich nehme mal an, du weist, wie du auf die neue PHP-Seite kommst. Dort machst du als erste Anweisung ein SELECT. Du selektierst hierbei die Gerätenummer, die zum zu löschenden Modul gehört. Danach DELETEst du das Modul deiner Wahl.

Ok, das weiss ich.

Dann zählst du jede einzelne Schutzstufe zu der Gerätenummer, die du im Vorfeld schon selektiert. Dann wertest du das nach deinen Kriterien aus und...

Genau dafür fehlt mir der ansatz, ich weiss nicht wie ich das machen kann / soll.

...zu guter letzt änderst du den Datensatz mit einem UPDATE.

das weiss ich auch

Grüße

Jamest
 
Hi,

warum speicherst Du das überhaupt nochmal extra in die Gerätetabelle, das ist doch redundant?
Wenn das Schema in Ordnung ist, sollte man das doch relativ einfach beim Auslesen von der Datenbank berechnen lassen können. Kannst Du für das Feld, das Du da updaten willst, mal 'ne Formel angeben?

keine Module eingetragen (zum jeweil. Gerät) -> compat = 0
nur kompatible module eingetragen -> compat = 1
sind 3 kompatible module und ein inkompatibles modul eingetragen -> compat = 2
sind nur inkompatible module eingetragen -> compat = 3

Was heißt denn hier kompatibles bzw. inkompatibles Modul? Das können doch auch wieder 4 verschiedene Werte sein. Wie sieht diese Liste vollständig aus?

LG
 
Hi Kuddeldaddeldu,

warum speicherst Du das überhaupt nochmal extra in die Gerätetabelle, das ist doch redundant?

Aus dem Grund das ich eine index.php habe, die alle geräte von A-Z aus der Datenbank listet, und erst wenn man auf ein Gerät klick öffnet sich die info.php welche das gerät, dessen Infos und alle dazu eingetragenen Module anzeigt.

Ich möchte das ganze nicht unnöttig langsam machen, indem ich in der index php, für jedes gerät in die modulspalte schaue, deswegen würde ich es gern so machen wie oben beschrieben.

Wenn das Schema in Ordnung ist, sollte man das doch relativ einfach beim Auslesen von der Datenbank berechnen lassen können. Kannst Du für das Feld, das Du da updaten willst, mal 'ne Formel angeben?

Sorry, ich weiss nicht welche Infos ich dir hier geben soll.


Zitat:
keine Module eingetragen (zum jeweil. Gerät) -> compat = 0
nur kompatible module eingetragen -> compat = 1
sind 3 kompatible module und ein inkompatibles modul eingetragen -> compat = 2
sind nur inkompatible module eingetragen -> compat = 3
Was heißt denn hier kompatibles bzw. inkompatibles Modul? Das können doch auch wieder 4 verschiedene Werte sein. Wie sieht diese Liste vollständig aus?

--------------
Nochmal zur Verdeutlichung:

Stati von compat für die module:

1 = kompatibel
2 = eingeschränkt kompatibel
3 = nicht kompatibel

Stati von compat für die Geräte

0 = keine Module eingetragen
1 = alle eingetragenen module sind kompatibel
2 = es gibt eingeschränkt kompatible Module
3 = es gibt keine kompatiblen Module

Damit will ich die Auflistung steuern der index.php

Diese listet dann wie folgt alle einträge aus der DB auf

Gerät | Modell | ... | datum | compat

- aaa | 123 | ... | 01.01.08 | 1
- aba | 123 | ... | 01.01.08 | 2
- aca | 123 | ... | 01.01.08 | 0
- ada | 123 | ... | 01.01.08 | 3
- aea | 123 | ... | 01.01.08 | 0

Durch einen klick auf einen Eintrag öffnet sich die Info.php welche zu diesem einen gerät alle informationen und eingetragenen Module anzeigt. Dort kann man dann genau sehen
welches Modul welchen Status hat.

Der Status in der Auflistung der index.php ist sozusagen nur so ne Art "Achtungsschild" wenn ein gerät status 1 hat, kann es sozusagen mit modulen verkauft werden, ohne sich die info.php anzuschauen, ist der Status 2 sollte auf jedenfall geschaut werden welches modul inkompatibel oder eingeschränkt kompatibel ist, und ist der status 3 wissen die leute, das sie dieses gerät nicht verkaufen dürfen.

Wenn also zu einem Gerät 50 Module kompatibel sind, und nur eins ist inkompatibel oder eingeschränkt kompatibel, muss das gerät in der spalte compat die nummer 2 haben, damit kann ich dann die farbe orange steuern und die leute wissen, halt, da muss ich vorher reinschauen.

Danke das ihr euch die Zeit nehmt, ich hoffe es ist nun noch etwas deutlicher.

Grüße

Jamest
 
Zurück