[GastForen Programmierung/Entwicklung PHP und MySQL Hilfstabelle automatisch ergänzen

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Hilfstabelle automatisch ergänzen

Phips_CH
Beiträge gesamt: 74

23. Mär 2011, 10:51
Beitrag # 1 von 22
Bewertung:
(7710 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
kann ich beim erfassen eines Datensatzes. Diesen auch gleich in die Hilfstabelle schreiben? und dort auch gleich die ID's der verbundenen Tabelle ergänzen?

denn in einem Formular möchte ich dem User die möglichkeit geben, mit einer Chackbox Datensätze in der Hilfstabelle zu ändern. Zum ändern müsste er aber bereits erfasst sein.

Was mach ich wenn dazwischen ein neuer User dazukommt?

Grüsse
Phips_CH
X

Hilfstabelle automatisch ergänzen

flobaer
Beiträge gesamt: 317

23. Mär 2011, 11:25
Beitrag # 2 von 22
Beitrag ID: #467500
Bewertung:
(7698 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
BAHNHOF!?!

Wenn Du Dein Problem ein wenig genauer schilderst, kann man Dir vielleicht auch helfen. Meinst Du Tabellen in MySQL? Was meinst Du mit "Hilfstabelle" und was heißt "wenn dazwischen ein neuer User dazukommt"?

Viele Grüße
Florian


als Antwort auf: [#467497]

Hilfstabelle automatisch ergänzen

Phips_CH
Beiträge gesamt: 74

23. Mär 2011, 12:25
Beitrag # 3 von 22
Beitrag ID: #467503
Bewertung:
(7679 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Also... (sorry war wirklich etwas unverständlich)

ja ich bin dabei mir eine mySQL-Datenbank zu erstellen und hab da so meine "Beziehungsprobleme"

Ich hab eine Tabelle mit Terminen und eine mit den Adressdaten.
Nun möchte ich in einer Hilfstabelle (Verknüpfungstabelle) die ID des Termins und die ID's der Adressdaten einfügen, um dort den Status (entschuldigt, anwesend) zu erfassen.

Aus den Adressdaten möchte ich nur die reinschreiben, die zum Zeitpunkt des Termins, Mitglied des Vereins sind.

Damit ich, in einem PHP-Formular, den Status ändern kann, muss der Datensatz ja bereits in der Tabelle vorhanden sein.

Sollte dies funktionieren, kommt bestimmt die Situation, dass ich einen Termin erfasse und um alle ID's der aktuellen Mitglieder ergänzt wurden, und nun ein Neues Mitglied aufgenommen wird. dieses ID's würde dann in der Hilfstabelle fehlen.

Gruss
Phips_CH


als Antwort auf: [#467500]

Hilfstabelle automatisch ergänzen

oesi50
  
Beiträge gesamt: 2315

23. Mär 2011, 13:05
Beitrag # 4 von 22
Beitrag ID: #467513
Bewertung:
(7669 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sowas lässt sich mit 'view' und 'trigger' automatisieren.


http://dev.mysql.com/...5.1/de/triggers.html

http://dev.mysql.com/...an/5.1/de/views.html


als Antwort auf: [#467503]
(Dieser Beitrag wurde von oesi50 am 23. Mär 2011, 13:06 geändert)

Hilfstabelle automatisch ergänzen

Phips_CH
Beiträge gesamt: 74

23. Mär 2011, 16:11
Beitrag # 5 von 22
Beitrag ID: #467527
Bewertung:
(7637 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hoppla... (etwas verwirrend)

Damit könnte es funktionieren.
Werde wohl die eine oder andere Minute brauchen um zu begreifen wie ich es einzusetzen habe.

Es könnte also sehr gut sein das ich zu diesem Thema noch weitere Fragen habe.

Besten Dank schon jetzt.

Gruss
Phips_CH


als Antwort auf: [#467513]

Hilfstabelle automatisch ergänzen

Phips_CH
Beiträge gesamt: 74

23. Mär 2011, 21:15
Beitrag # 6 von 22
Beitrag ID: #467551
Bewertung:
(7610 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
versuch nun schon den ganzen Abend die Trigger-Funktion einzubauen.

Ich kann die Funktion einigermassen nachvollziehen jedoch hab ich noch nicht herausgefunden wo ich den Code plazieren muss.

ich muss an dieser Stelle vielleicht noch rwähnen, dass ich die Seite mit Dreamweaver erstelle.
Ist es mit DW auch möglich, Trigger anzuwenden?

Gruss
Phips_CH


als Antwort auf: [#467527]

Hilfstabelle automatisch ergänzen

crisies
  
Beiträge gesamt: 136

23. Mär 2011, 21:26
Beitrag # 7 von 22
Beitrag ID: #467552
Bewertung:
(7609 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
hi phips,

Zitat Damit ich, in einem PHP-Formular, den Status ändern kann, muss der Datensatz ja bereits in der Tabelle vorhanden sein.


Diesen Satz verstehe ich nicht wirklich und sehe das auch nicht so.

Also Du hast die 3 Tabellen (Termine, Adressen, Termine_Adressen). Wenn Du jetzt zu einem Termin die Adressen selektieren willst welche - wie Du selbst sagst - zum Zeitpunkt des Termins, Mitglied des Vereins sind, müsste das ja über einen simplen SQL mit WHERE möglich sein wo Du die Daten dieser beiden Tabellen zurückbekommst. Damit jetzt noch den Status zurückbekommen willst, mache einfach noch einen LEFT JOIN auf diese Hilfstabelle mit der TerminID + der AdressID. Rows die von diesem Join dann mit NULL zurückkommen, haben noch keinen Eintrag und die Anderen hätten dann den eingetragenen Status.

Somit hättest Du unabhängig von den Einträgen in der Hilfstabelle alle Adressen welche zum Zeitpunkt eines Termins Mitglieder im Verein waren/sind mit dem dazugehörenden Status.

Sofern diese Hilfstabelle einen UniqueIndex auf die TerminID + AdressID besitzt, kannst Du bei Statusänderungen aus deinem Formular einfach immer zuerst einen INSERT absetzen gefolgt von einem UPDATE. Der INSERT würde dann eh fehlschlagen, sollte es zu dieser Adresse und Termin bereits einen Eintrag geben und somit würde nur der Update ausgeführt. Könntest hier noch eine Fehlerabfrage einbauen und den UPDATE nur machen, wenn der INSERT fehlgeschlagen ist.

mfg
chris.w.


als Antwort auf: [#467503]

Hilfstabelle automatisch ergänzen

oesi50
  
Beiträge gesamt: 2315

23. Mär 2011, 22:42
Beitrag # 8 von 22
Beitrag ID: #467553
Bewertung:
(7582 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
 
Antwort auf: Ich kann die Funktion einigermassen nachvollziehen jedoch hab ich noch nicht herausgefunden wo ich den Code plazieren muss.


Das ist eine einfache SQL-Anweisung. Kann z.B. mit MySQL-CLi oder PHPMyAdmin ausgeführt werden.

Antwort auf: Ist es mit DW auch möglich, Trigger anzuwenden?


Ja, weil es unabhängig von der verwendeten Programmierung in SQL hinterlegt ist.


als Antwort auf: [#467551]

Hilfstabelle automatisch ergänzen

Phips_CH
Beiträge gesamt: 74

24. Mär 2011, 07:11
Beitrag # 9 von 22
Beitrag ID: #467556
Bewertung:
(7545 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ok jetzt kommen wir der Sache schon ein rechtes Stück näher.

Aber wo genau schreib ich die Anweisung hin?
Ich habe einen Link gefunden "CREATE VIEW" bin ich da richtig?

Hat das dann zur folge, dass wenn ich einen neuen Termin in die Tabelle Termie schreibe, der dann auch in der Hilfstabelle steht?
Dies müsste ich dann wohl auch bei den Adressdaten machen, damit diese dann auch in der Hilfstabelle stehen.

Da ich mich noch nicht all zu lange mit Php und mySQL befasse, ist besonders dieser Bereich Neuland für mich.

Gruss
Phips_CH


als Antwort auf: [#467553]

Hilfstabelle automatisch ergänzen

oesi50
  
Beiträge gesamt: 2315

24. Mär 2011, 10:22
Beitrag # 10 von 22
Beitrag ID: #467574
Bewertung:
(7517 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#467556]

Hilfstabelle automatisch ergänzen

Phips_CH
Beiträge gesamt: 74

24. Mär 2011, 13:09
Beitrag # 11 von 22
Beitrag ID: #467597
Bewertung:
(7502 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Is ja geil.... funktioniert sogar.

Hab deinen Beitrag von damals schon gesehen, hatte aber bei den Tabellen und Spalten noch Fehler in drinn.

Kann ich diesen Befehl nachträglich auch ändern?

Denn nun komm hinzu, dass ich zu der TerminID jeweils alle aktuellen Vereinsmitglieder hinzufügen möchte.
und dann ein neues Mitglied den beforstehenden Terminen die bereits in der Tabelle stehen.


als Antwort auf: [#467574]

Hilfstabelle automatisch ergänzen

oesi50
  
Beiträge gesamt: 2315

24. Mär 2011, 15:47
Beitrag # 12 von 22
Beitrag ID: #467624
Bewertung:
(7482 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: Kann ich diesen Befehl nachträglich auch ändern?


Ja, mit

Code
DROP TRIGGER triggername; 


und dann wieder

Code
CREATE TRIGGER ...; 



Zwischen BEGIN und END können mehrere beliebige SQL-Anweisungen stehen.

Für

INSERT Trigger kann new.spaltenname
UPDATE Trigger kann old.spaltenname und new.spaltenname
DELETE Trigger kann old.spaltenname

benutzt werden.


als Antwort auf: [#467597]

Hilfstabelle automatisch ergänzen

Phips_CH
Beiträge gesamt: 74

25. Mär 2011, 09:33
Beitrag # 13 von 22
Beitrag ID: #467665
Bewertung:
(7437 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hmmm...

Nun möchte ich alle ID's "ad_ID" aus der Tabelle "pobi_adressen" wenn dort in der Spalte "ad_austritt" NULL steht zu jeder ID "adre_IDter" in die Tabelle pobi_adrterm"

Somit hab ich dann zu jedem Termin alle Mitglieder in der Verknüpfungstabelle "pobi_adrterm"

hab mal diesen Code probiert, jedoch ohne erfolg.

Code
DELIMITER // 
CREATE TRIGGER termine AFTER INSERT ON pobi_termine
FOR EACH ROW
BEGIN
IF
INSERT INTO pobi_adrterm SET adte_IDter=NEW.ter_ID;
INSERT INTO pobi_adrterm SET adte_IDadr=NEW.pobi_adressen.ad_ID WHERE pobi_adressen.ad_austritt IS NOT NUL;
END IF;
END; //
DELIMITER ;


Wo könnte der Fehler oder die Fehlüberlegung sein?

Gruss Phips_CH


als Antwort auf: [#467624]

Hilfstabelle automatisch ergänzen

oesi50
  
Beiträge gesamt: 2315

25. Mär 2011, 11:36
Beitrag # 14 von 22
Beitrag ID: #467678
Bewertung:
(7423 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
wenn ich dein Problem richtig verstanden hab, könnte das funktionieren:

Code
DELIMITER //  
CREATE TRIGGER termine AFTER INSERT ON pobi_termine
FOR EACH ROW
BEGIN
INSERT IGNORE INTO pobi_adrterm (adte_IDter, adte_IDadr)
SELECT NEW.ter_ID,pobi_adressen.ad_ID
FROM pobi_adressen
WHERE pobi_adressen.ad_austritt IS NOT NUL;
END; //
DELIMITER ;


(adte_IDter, adte_IDadr) muss in der Tabelle pobi_adrterm ein zusammengesetzter Primärschlüssel sein.

Code
ALTER TABLE pobi_adrterm DROP PRIMARY KEY, ADD PRIMARY KEY ( adte_IDter, adte_IDadr ); 



als Antwort auf: [#467665]

Hilfstabelle automatisch ergänzen

Phips_CH
Beiträge gesamt: 74

25. Mär 2011, 13:47
Beitrag # 15 von 22
Beitrag ID: #467698
Bewertung:
(7407 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Du hast mein Probem richtig verstanden.
es läuft.
Besten Dank

Später kommt dann noch hinzu wenn ich bei der Tabelle mit den Adressdaten ein neues Mitglied einfüge, sollte dieser bei allen beforstehenden Terminen noch ergänzt werden.
Werde es zu gegebener eit mal selber probieren oder mich nochmals melden.

Gruss
Phips_CH


als Antwort auf: [#467678]
X