User since
2005-08-17
1420
Artikel
BenutzerIn
Da stimmt die Syntax nicht:
[sql]ALTER TABLE `meeting_teilnehmer`
ADD CONSTRAINT `teilnehmer_id`
FOREIGN KEY (`teilnehmer_id`)
REFERENCES `teilnehmer`(`id`)
ON DELETE CASCADE;[/sql]
Für den Foreign Key der Teilnehmer und
[sql]ALTER TABLE `meeting_teilnehmer`
ADD CONSTRAINT `meeting_id`
FOREIGN KEY (`meeting_id`)
REFERENCES `meeting`(`id`)
ON DELETE CASCADE;[/sql]
für den Foreign Key der Meetings.
Sollte das IMHO heißen. Das ON DELETE CASCADE solltest du auch mit reinnehmen, denn sonst bleiben in deiner Tabelle Leichen, wenn du ein Meeting oder einen Teilnehmer löscht. Mit dem ON DELETE CASCADE räumt die Datenbank die entsprechenden Einträge automatisch mit weg.
User since
2007-05-18
142
Artikel
BenutzerIn
hi, danke für deine hilfe :)
also der erster alter table funzt, beim zweiten bekomme ich den selben fehler wie eben, innodb status zeit folgenden fehler:
------------------------
LATEST FOREIGN KEY ERROR
------------------------
071009 10:21:54 Error in foreign key constraint of table teammeeting/#sql-a507e_30:
foreign key (`meeting_id`)
references `meeting`(`id`)
on delete cascade:
Cannot resolve table name close to:
(`id`)
on delete cascade
User since
2005-08-17
1420
Artikel
BenutzerIn
Da psst wohl der Tabellenname in der REFERENCES-Zeile nicht. Einfach anpassen. Da ab ich mich wohl vertan.
User since
2007-05-18
142
Artikel
BenutzerIn
jau, fehlte ein 's', hab ich dannach auch gecheckt :]
Cannot add or update a child row: a foreign key constraint fails (`teammeeting/meeting_teilnehmer`, CONSTRAINT `teilnehmer_id` FOREIGN KEY (`teilnehmer_id`) REFERENCES `teilnehmer` (`id`) ON DELETE C
INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES (1, 0)
muss ich jetz die insert statements auch alle noch ändern?!?
User since
2005-08-17
1420
Artikel
BenutzerIn
Äh, genau das, was du da grade versuchts wolltest du doch verhindern. Den Teilnehmer mit der ID 0 gibts ja nicht und deshalb darf der nicht mer in die Tabelle meeting_teilnehmer rein. Du kannst nun nur noch Einträge machen, wo sowohl ein Meeting als auch ein Teilnehmer mit der passenden ID in den jeweiligen Tabellen existiert.
Dein INSERT war nun quasi der Test, ob das mit den Foreign Keys auch funktioniert ;)
User since
2007-05-18
142
Artikel
BenutzerIn
Aaaber: Ich hole mir ja die teilnehmer vorher aus der tabelle, stimmt denn da auch was nicht?!
if (isset ($_POST['teilnehmer'])) {
foreach ($_POST['teilnehmer'] as $teilnehmerId => $teilnehmer) {
$addteilnehmer = ("INSERT INTO meeting_teilnehmer (meeting_id, teilnehmer_id) VALUES ($meetingId, $teilnehmerId)");
mysql_query($addteilnehmer) or die (mysql_error() . "<br />" . $addteilnehmer);
}
}
mysql> select * from teilnehmer;
+----+---------+-----------+
| id | vorname | nachname |
+----+---------+-----------+
| 1 | Florian | Lüttgens |
| 2 | Jahan | Ketabchy |
| 3 | Thomas | Koch |
| 4 | Ingo | Praum |
| 5 | Michael | Schroeder |
| 6 | Uwe | Bergefeld |
| 7 | Horst | Billion |
+----+---------+-----------+
7 rows in set (0.00 sec)
mit diesem code hol ich mir die teilnehmer auf der eingabemaske aus der db:
$query = "SELECT id, vorname, nachname FROM teilnehmer";
$res = mysql_query($query);
if (!$res) {
echo ("Panik");
} else {
$teilnehmerArray = array();
while($row = mysql_fetch_assoc($res)) {
$teilnehmerArray[] = $row;
}
}
echo ("<br><br><strong>Teilnehmer:</strong>");
foreach($teilnehmerArray as $teilnehmer) {
echo("<input type=\"checkbox\" name=\"teilnehmer[]\" value=\"$teilnehmer[id]\">$teilnehmer[nachname]" . "\t");
}
User since
2005-01-17
14563
Artikel
Admin1
Hat ja wohl nichts mit Perl zu tun!
Falscher Thread.
Ist PHP.
----
Modedit Gwendragon: Threadtitel umbenannt; Thread verschoben.
----
User since
2007-05-18
142
Artikel
BenutzerIn
Weiss ich doch Gwen, aber angefangen hats mit nem db-problem ;)
User since
2005-08-17
1420
Artikel
BenutzerIn
Tja, da wird dann wohl irgendwas in deinem PHP-Code nicht passen und als ID ne 0 liefern. Da musst du selber mal debuggen...
Dein SELECT für die Teilnehmer stimmt jedenfalls. Entweder du baust deine Checkbox schon falsch zusammen (das siehst du aber leicht am HTML-Quellcode) oder du machst beim Auslesen der Formulardaten einen Fehler...
Daneben hast du mal wieder einen der übelsten Fehler in deinem Code: du checkst absolut nicht, ob das, was du vom Browser, sprich Benutzer geschickt bekommst, das ist, was du haben willst und pumpst das ganze 1:1 in SQL-Anweisungen. SQL-Injection lässt grüssen!
An deiner Stelle würde ich schon mal beim Verarbeiten testen, ob du da als IDs überhaupt Zahlen bekommst.
User since
2005-01-17
14563
Artikel
Admin1
FlorianL+2007-10-09 11:57:52--Weiss ich doch Gwen, aber angefangen hats mit nem db-problem ;)
ja sowas. Und die Datenbank(abfrage)sprache heißt SQL und auch nicht Perl.
Hattest du aber trotzdem unter Perl gepostet.
Anwendungen/Programme/Skripte in Perl » Datenbanken und Verzeichnisdienste!
Da steht
Anwendungen/Programme/Skripte in Perl .
Das
Datenbanken und Verzeichnisdienste bezieht sich auf
Anwendungen/Programme/Skripte in Perl
;)