ich habe das Formularmodul von w3concepts ein wenig an meine Bedürfnisse angepasst, insbesondere in Hinsicht auf die Speicherung in einer Datenbank.
Bis zur Generierung - der in meinen Augen - gültigen SQL-Sequenz, läuft ja auch alles zu meiner Zufriedenheit. Einzig wird die SQL-Sequenz zum Schluß nicht durchgeführt, und ich kann den Grund nicht erkennen.
Vielleicht fällt es Euch leichter, etwas zu erkennen oder ich bin einfach nur schon zu lange am Rechner...
Nicht alles an diesem Coding stellt das Optimum dar und hält sich - insbesondere was die Verwendung von Contenido-Konstanten etc. angeht - an die Entwicklungsvorgaben, aber das Ergebnis ist letztlich auch nicht für die Öffentlichkeit bestimmt und wird nur bei mir Verwendung finden.
Hier das CodeSnippet zur Erzeugung der SQL-Sequenz:
Code: Alles auswählen
function entry2database() {
$EventAnmeldung = 'con_events_anmeldungen';
$FormData = $this->suppress('sent');
$FirstFlag = 0;
$ColumnList = '';
$ValueList = '';
$Delimiter = '';
foreach ($FormData as $key => $value) {
$ColumnList .= $Delimiter."'".$key."'";
$ValueList .= $Delimiter."'".$value."'";
if ($FirstFlag == 0) {
$FirstFlag = 1;
$Delimiter = ', ';
}
}
$ColumnList .= $Delimiter."'idclient'";
$ValueList .= $Delimiter."'3'";
$SQL = 'INSERT INTO '.$EventAnmeldung.' ('.$ColumnList.')';
$SQL .= 'VALUES ('.$ValueList.');';
echo $SQL."<br>";
$db->query($SQL);
return true;
}
Code: Alles auswählen
INSERT INTO con_events_anmeldungen
('accept', 'termin', 'p1_sex',
'p1_lastname', 'p1_firstname', 'p1_position',
'p1_company', 'p1_street', 'p1_country',
'p1_plz', 'p1_city', 'p1_phone',
'p1_fax', 'p1_mail', 'p2_sex',
'p2_lastname', 'p2_firstname', 'p2_position',
'p2_mail', 'p3_sex', 'p3_lastname',
'p3_firstname', 'p3_position', 'p3_mail',
'idclient'
) VALUES
('Ja', '2004-09-07', 'male',
'Simon', 'Arno', 'Berater / Entwickler',
'', 'das ist meine Adresse 55', '2',
'99999', 'Musterhausen', '0049(333)4567891',
'0049(333)9115879', 'a.simon@schnoddermasse.de', 'female',
'', '', '',
'', 'female', '',
'', '', '',
'3');
Die Klasse DB_Contenido gibt scheinbar - leider - keine Fehlermeldung aus, wenn eine von der DB zurückkommt, jedenfalls erhalte ich von obigem Coding nur das Testweise echo $SQL; ausgegeben und danach ist Schluß und der entsprechende Eintrag in der DB erfolgt leider ebenfalls nicht.
Zweierlei Fragen:
1. Gibt es die Möglichkeit vom Datenbanklayer die Fehlermeldung zu erfahren? Über die Contenido-FAQ habe ich zwar mittlerweile die "Ur-Klasse" gefunden, werde aber auch nach Lesen der Doku nicht wirklich schlauer. Eine Methode zur Ausgabe des bzw. der Fehler, habe ich jedenfalls leider nicht gefunden

2. Fällt Euch an obiger SQL-Sequenz, welche an sich mit einer entsprechenden SQL-Sequenz - von PHPmyAdmin erzeugt - übereinstimmt, oder am Coding etwas auf, was zum Fehler führen kann / könnte / müßte?
Wer den Code evtl. in einer Modulkopie einbauen und testen will, benötigt ja prinzipiell noch die angesprochene Tabelle. Hier der entsprechende SQL-Dump zur Erzeugung:
Code: Alles auswählen
CREATE TABLE `con_events_anmeldungen` (
`idclient` int(10) NOT NULL default '0',
`accept` varchar(4) NOT NULL default '',
`termin` varchar(10) NOT NULL default '0000-00-00',
`p1_sex` varchar(6) NOT NULL default '',
`p1_lastname` varchar(35) NOT NULL default '',
`p1_firstname` varchar(35) NOT NULL default '',
`p1_position` varchar(35) default NULL,
`p1_company` varchar(50) default NULL,
`p1_street` varchar(50) NOT NULL default '',
`p1_country` char(1) NOT NULL default '',
`p1_plz` varchar(6) NOT NULL default '',
`p1_city` varchar(35) NOT NULL default '',
`p1_phone` varchar(20) NOT NULL default '',
`p1_fax` varchar(20) NOT NULL default '',
`p1_mail` varchar(50) NOT NULL default '',
`p2_sex` varchar(6) default NULL,
`p2_lastname` varchar(35) default NULL,
`p2_firstname` varchar(35) default NULL,
`p2_position` varchar(35) default NULL,
`p2_mail` varchar(50) default NULL,
`p3_sex` varchar(6) default NULL,
`p3_lastname` varchar(35) default NULL,
`p3_firstname` varchar(35) default NULL,
`p3_position` varchar(35) default NULL,
`p3_mail` varchar(50) default NULL
) TYPE=MyISAM;
gruß
Arno