Forums

Write to Database

sbischoff 02 Jan, 2014
Hi there,

I need your help, please!

I have a custom code for writing into another database, but it doesn't work and there is no error message or something like that. I also didn't see some information if I insert the Debugger.

Here is my code for the Custom Code element:
<?php
	/* Datenbankserver - In der Regel die IP */
	$db_server = 'localhost';
	/* Datenbankname */
	$db_name = 'dbname';
	/* Datenbankuser */
	$db_user = 'dbuser';
	/* Datenbankpasswort */
	$db_passwort = 'dbpass';
	
	/* Erstellt Connect zu Datenbank her */
	$db = @mysql_connect($db_server, $db_user, $db_passwort)
		or die ('Konnte keine Verbindung zur Datenbank herstellen');

	mysql_query("SET NAMES 'utf8'");
	mysql_query("SET CHARACTER SET 'utf8'");
	
	// Variablen aus Formular abholen
	$veranstaltung = $form->data['ver'];
	$anreise = $form->data['anreise'];
	$abreise = $form->data['abreise'];
	$verantwortlich = $form->data['hostmail'];
	$name = $form->data['name'];
	$jname = $form->data['joomla_name'];
	$geburtsdatum = $form->data['geburtsdatum'];
	$adresse = $form->data['adresse'];
	$plz = $form->data['plz'];
	$ort = $form->data['ort'];
	$telefon = $form->data['telefon'];
	$handy = $form->data['handy'];
	$mail = $form->data['email'];
	$taetigkeit = $form->data['taetigkeit'];
	$stufe = $form->data['stufe'];
	$stamm = $form->data['stamm'];
	$vegetarier = $form->data['vegetarier'];
	$allergien = $form->data['allergien'];
	$kinderbetreuung = $form->data['kinderbetreuung'];
	$weitere-leiter = $form->data['participant_database'];
	$kommentar = $form->data['kommentar'];
	$anzahlwoelflinge = $form->data['anzahlwoelflinge'];
	$anzahljupfis = $form->data['anzahljupfis'];
	$anzahlpfadis = $form->data['anzahlpfadis'];
	$anzahlrover = $form->data['anzahlrover'];
	$anzahlleiter = $form->data['anzahlleiter'];
	$anzahlgesamt = $form->data['anzahlgesamt'];
	
	// Vorname und Nachname trennen
	$vollername = explode(" ",$name);
	$vorname = $vollername[0];
	$nachname = $vollername[1];
	
	// Anreise und Abreise in Start und Ende trennen
	$start = explode(" ",$anreise);
	$startdatum = $start[0];
	$startzeit = $start[1];
	
	$ende = explode(" ",$abreise);
	$enddatum = $ende[0];
	$endzeit = $ende[1];
	
	// Werte für Telefonnummer und Handy zusammenfassen
	if ($telefon == "" {
		$telefonnummer = $handy;
	} elseif ($handy == "") {
			$telefonnummer = $telefon;
		} else {
				$telefonnummer = $telefon . " oder " . $handy;
			}
	
	// Werte für Tätigkeit und Stufe zusammenfassen
	$taetigkeitstufe = $taetigkeit . " " . $stufe;
	
	// Anzahl Tätigkeiten / Stufe (inkl. eigene)
	if ($taetigkeit == "Mitglied" && $stufe == "Woelflinge") {
		$anzahlwoelflinge++;
	} elseif ($taetigkeit == "Mitglied" && $stufe == "Jungpfadfinder") {
		$anzahljupfis++;
	} elseif ($taetigkeit == "Mitglied" && $stufe == "Pfadfinder") {
		$anzahlpfadis++;
	} elseif ($taetigkeit == "Mitglied" && $stufe == "Rover") {
		$anzahlrover++;
	} elseif ($taetigkeit == "Leiter") {
		$anzahlleiter++;
	} else {
		$anzahlsonstige++;
	}
	
	// Werte für Allergien, Kommentar, weitere Personen zusammenfassen
	$infos  = "Tätigkeit / Stufe: " . $taetigkeitstufe "\n";
	$infos .= "weitere Anmeldungen: " . $weitere-leiter . "\n";
	$infos .= "Allergien: " . $allergien . "\n";
	$infos .= "Kommentar: " . $kommentar . "\n";
	$infos .= "Joomla-Username: " . $jname;
	
	// Anzahl Vegetarier
	if ($vegetarier == "Ja") {
		$anzahlvegetarier = 1;
	} else {
			$anzahlvegetarier = 0;
		}
		
	// Kinderbetreuung in Kleinbuchstaben
	if ($kinderbetreuung == 1) {
		$kinderbetreuung = "ja";
	} else {
			$kinderbetreuung = "nein";
		}
	
	// UpdateKey generieren
	$updatekey = uniqid();
	
	$SQL_string = "INSERT INTO ver_Veranstaltungen
                     (Veranstaltung, Start, Ende, Vorname, Nachname, Geburtsdatum, Strasse,
					 Postleitzahl, Ort, eMail, Telefon, Taetigkeit_Stufe, Stamm_Bezirk,
					 Anzahl_Woelflinge, Anzahl_Jupfis, Anzahl_Pfadis, Anzahl_Rover,
					 Anzahl_Leiter, Namen_Leiter, Anzahl_Sonstige, Anzahl_Vegetarier, Anreise_Tag,
					 Anreise_Zeit, Abreise_Tag, Abreise_Zeit, Kinderbetreuung, Verantwortlich,
					 updatekey)
                   VALUES
                     ('$veranstaltung', '$startdatum', '$enddatum', '$vorname', '$nachname', '$geburtsdatum',
					 '$adresse', '$plz', '$ort', '$mail', '$telefonnummer', '$taetigkeitstufe',
					 '$stamm', '$anzahlwoelflinge', '$anzahljupfis', '$anzahlpfadis',
					 '$anzahlrover', '$anzahlleiter', '$infos', '$anzahlsonstige', '$anzahlvegetarier',
					 '$startdatum', '$startzeit', '$enddatum', '$endzeit', '$kinderbetreuung', '$verantwortlich',
					 '$updatekey')";

?>


Can you please help me somehow?

Regards
Steffen
GreyHead 02 Jan, 2014
Hi sbischoff,

Is this CFv4? If so, please try using the ChronoForms DB Save action and add the remote DB settings on the Advanced tab.

Bob
sbischoff 02 Jan, 2014
Hi Bob!

Thank you for the quick answer!

Is this CFv4?



Yes, it´s CFv4.

If so, please try using the ChronoForms DB Save action and add the remote DB settings on the Advanced tab.



Can I do some transformation stuff there? For example - as you can see in my script - I have to explode firstname and lastname or change phone number and so on.

// Vorname und Nachname trennen
	$vollername = explode(" ",$name);
	$vorname = $vollername[0];
	$nachname = $vollername[1];
	
	// Anreise und Abreise in Start und Ende trennen
	$start = explode(" ",$anreise);
	$startdatum = $start[0];
	$startzeit = $start[1];
	
	$ende = explode(" ",$abreise);
	$enddatum = $ende[0];
	$endzeit = $ende[1];
	
	// Werte für Telefonnummer und Handy zusammenfassen
	if ($telefon == "" {
		$telefonnummer = $handy;
	} elseif ($handy == "") {
			$telefonnummer = $telefon;
		} else {
				$telefonnummer = $telefon . " oder " . $handy;
			}


Another "problem" is, that the field names doesn't match the field names in the database. Can I somehow "transform" or map fields to a table row?

Thanks and Regards
Steffen
GreyHead 02 Jan, 2014
Hi sbischoff,

Sure, you can do any data manipulation you need with PHP in a Custom Code action before the DB Save action. You need to make sure that at the end you have entries in the $form->data array that match the column names that you want to save e.g.
$form->data['column_name'] = 'some_value';


If you use a Model ID you can set up the data in a sub-array (that sometimes helps in complex cases):
$form->data['model_id']['column_name'] = 'some_value';


Bob
sbischoff 03 Jan, 2014
Hi Bob,

I did it like this:
<?php
	// Variablen aus Formular abholen
	$veranstaltung = $form->data['ver'];
	$anreise = $form->data['anreise'];
	$abreise = $form->data['abreise'];
	$verantwortlich = $form->data['hostmail'];
	$name = $form->data['name'];
	$jname = $form->data['joomla_name'];
	$geburtsdatum = $form->data['geburtsdatum'];
	$adresse = $form->data['adresse'];
	$plz = $form->data['plz'];
	$ort = $form->data['ort'];
	$telefon = $form->data['telefon'];
	$handy = $form->data['handy'];
	$mail = $form->data['email'];
	$taetigkeit = $form->data['taetigkeit'];
	$stufe = $form->data['stufe'];
	$stamm = $form->data['stamm'];
	$vegetarier = $form->data['vegetarier'];
	$allergien = $form->data['allergien'];
	$kinderbetreuung = $form->data['kinderbetreuung'];
	$weitere-leiter = $form->data['participant_database'];
	$kommentar = $form->data['kommentar'];
	$anzahlwoelflinge = $form->data['anzahlwoelflinge'];
	$anzahljupfis = $form->data['anzahljupfis'];
	$anzahlpfadis = $form->data['anzahlpfadis'];
	$anzahlrover = $form->data['anzahlrover'];
	$anzahlleiter = $form->data['anzahlleiter'];
	$anzahlgesamt = $form->data['anzahlgesamt'];
	
	// Vorname und Nachname trennen
	$vollername = explode(" ",$name);
	$vorname = $vollername[0];
	$nachname = $vollername[1];
	
	// Anreise und Abreise in Start und Ende trennen
	$start = explode(" ",$anreise);
	$startdatum = $start[0];
	$startzeit = $start[1];
	
	$ende = explode(" ",$abreise);
	$enddatum = $ende[0];
	$endzeit = $ende[1];
	
	// Werte für Telefonnummer und Handy zusammenfassen
	if ($telefon == "" {
		$telefonnummer = $handy;
	} elseif ($handy == "") {
			$telefonnummer = $telefon;
		} else {
				$telefonnummer = $telefon . " oder " . $handy;
			}
	
	// Werte für Tätigkeit und Stufe zusammenfassen
	$taetigkeitstufe = $taetigkeit . " " . $stufe;
	
	// Anzahl Tätigkeiten / Stufe (inkl. eigene)
	if ($taetigkeit == "Mitglied" && $stufe == "Woelflinge") {
		$anzahlwoelflinge++;
	} elseif ($taetigkeit == "Mitglied" && $stufe == "Jungpfadfinder") {
		$anzahljupfis++;
	} elseif ($taetigkeit == "Mitglied" && $stufe == "Pfadfinder") {
		$anzahlpfadis++;
	} elseif ($taetigkeit == "Mitglied" && $stufe == "Rover") {
		$anzahlrover++;
	} elseif ($taetigkeit == "Leiter") {
		$anzahlleiter++;
	} else {
		$anzahlsonstige++;
	}
	
	// Werte für Allergien, Kommentar, weitere Personen zusammenfassen
	$infos  = "Tätigkeit / Stufe: " . $taetigkeitstufe "\n";
	$infos .= "weitere Anmeldungen: " . $weitere-leiter . "\n";
	$infos .= "Allergien: " . $allergien . "\n";
	$infos .= "Kommentar: " . $kommentar . "\n";
	$infos .= "Joomla-Username: " . $jname;
	
	// Anzahl Vegetarier
	if ($vegetarier == "Ja") {
		$anzahlvegetarier = 1;
	} else {
			$anzahlvegetarier = 0;
		}
		
	// Kinderbetreuung in Kleinbuchstaben
	if ($kinderbetreuung == 1) {
		$kinderbetreuung = "ja";
	} else {
			$kinderbetreuung = "nein";
		}
	
	// UpdateKey generieren
	$updatekey = uniqid();
	
	// Daten in Formularfelder schreiben
	$form->data['Veranstaltung'] = $veranstaltung;
	$form->data['Start'] = $startdatum;
	$form->data['Ende'] = $enddatum;
	$form->data['Vorname'] =$vorname;
	$form->data['Nachname'] =$nachname;
	$form->data['Geburtsdatum'] =$geburtsdatum;
	$form->data['Strasse'] =$adresse;
	$form->data['Postleitzahl'] =$plz;
	$form->data['Ort'] =$ort;
	$form->data['eMail'] =$mail;
	$form->data['Telefon'] =$telefonnummer;
	$form->data['Taetigkeit_Stufe'] =$taetigkeitstufe;
	$form->data['Stamm_Bezirk'] =$stamm;
	$form->data['Anzahl_Woelflinge'] =$anzahlwoelflinge;
	$form->data['Anzahl_Jupfis'] =$anzahljupfis;
	$form->data['Anzahl_Pfadis'] =$anzahlpfadis;
	$form->data['Anzahl_Rover'] =$anzahlrover;
	$form->data['Anzahl_Leiter'] =$anzahlleiter;
	$form->data['Namen_Leiter'] =$infos;
	$form->data['Anzahl_Sonstige'] =$anzahlsonstige;
	$form->data['Anzahl_Vegetarier'] =$anzahlvegetarier;
	$form->data['Anreise_Tag'] =$startdatum;
	$form->data['Anreise_Zeit'] =$startzeit;
	$form->data['Abreise_Tag'] =$enddatum;
	$form->data['Abreise_Zeit'] =$endzeit;
	$form->data['Kinderbetreuung'] =$kinderbetreuung;
	$form->data['Verantwortlich'] =$verantwortlich;
	$form->data['updatekey'] =$updatekey;
?>


And I really have new entries in my database, but all fields have the value "NULL".

Please see my DB Save config in the screenshots attached.
What I am doing wrong?

Thanks and Regards
Steffen
GreyHead 03 Jan, 2014
Hi sbischoff,

The code looks OK as far as I can tell from a quick look. What do you see when you add a Debugger action? Or if you turn Site Debug on temporarily - that should show you the MySQL query that is being created.

Bob
sbischoff 03 Jan, 2014

Or if you turn Site Debug on temporarily - that should show you the MySQL query that is being created.



Hi Bob,

how can I do this?

Regards
Steffen
GreyHead 03 Jan, 2014
Hi sbischoff,

The setting is in Site Admin | Global Configuration - and I think on the Server or System tab.

Bob
sbischoff 03 Jan, 2014
Hi Bob!

Here is the output of the debugger:

Data Array: 
Array
(
    [ver] => test
    [anreise] => 08.11.2013 13:00
    [abreise] => 09.11.2013 13:00
    [hostmail] => bischoff.steffen@gmail.com
    [chronoform] => Anmeldeformular
    [event] => submit
    [joomla_name] => steffen.bischoff
    [name] => Steffen Bischoff
    [geburtsdatum] => 17.02.1982
    [adresse] => MyStreet
    [plz] => 66666
    [ort] => MyTown
    [telefon] => 12345678
    [handy] => 12345678
    [email] => me@email.com
    [taetigkeit] => Vorsitzender
    [stufe] => Diözese
    [stamm] => MyScoutGroup
    [vegetarier] => Ja
    [allergien] => Laktoseintoleranz
    [kinderbetreuung] => 1
    [kommentar] => This is a Test
    [participant] => Array
        (
            [1] => Array
                (
                    [name] => Test Person1
                    [mail] => test@person1.com
                    [taetigkeit] => Leiter
                    [stufe] => Stamm
                )

            [2] => Array
                (
                    [name] => Test Person2
                    [mail] => test@person2.com
                    [taetigkeit] => Vorsitzender
                    [stufe] => Bezirk
                )

            [3] => Array
                (
                    [name] => Test Person3
                    [mail] => test@person3.com
                    [taetigkeit] => Mitglied
                    [stufe] => WoeliAK
                )

            [4] => Array
                (
                    [name] => 
                    [mail] => 
                    [taetigkeit] => 
                    [stufe] => 
                )

            [5] => Array
                (
                    [name] => 
                    [mail] => 
                    [taetigkeit] => 
                    [stufe] => 
                )

            [6] => Array
                (
                    [name] => 
                    [mail] => 
                    [taetigkeit] => 
                    [stufe] => 
                )

            [7] => Array
                (
                    [name] => 
                    [mail] => 
                    [taetigkeit] => 
                    [stufe] => 
                )

            [8] => Array
                (
                    [name] => 
                    [mail] => 
                    [taetigkeit] => 
                    [stufe] => 
                )

            [9] => Array
                (
                    [name] => 
                    [mail] => 
                    [taetigkeit] => 
                    [stufe] => 
                )

            [10] => Array
                (
                    [name] => 
                    [mail] => 
                    [taetigkeit] => 
                    [stufe] => 
                )

        )

    [chrono_verification] => Vk4Kf
    [input_submit_31] => Zustimmen & Anmelden
    [09446e02eba5957d8e042b6251af7812] => 1
    [participant_info] =>  Test Person1, test@person1.com 
  Leiter Stamm
 Test Person2, test@person2.com 
  Vorsitzender Bezirk
 Test Person3, test@person3.com 
  Mitglied WoeliAK
    [chronoform_data] => Array
        (
            [cf_uid] => e90fdb0798c8261bd28132eaf76d170d
            [cf_created] => 2014-01-03 13:27:59
            [cf_created_by] => 913
            [cf_ipaddress] => 213.144.7.105
            [cf_user_id] => 913
            [ver] => test
            [anreise] => 08.11.2013 13:00
            [abreise] => 09.11.2013 13:00
            [hostmail] => bischoff.steffen@gmail.com
            [chronoform] => Anmeldeformular
            [event] => submit
            [joomla_name] => steffen.bischoff
            [name] => Steffen Bischoff
            [geburtsdatum] => 17.02.1982
            [adresse] => MyStreet
            [plz] => 66666
            [ort] => MyTown
            [telefon] => 12345678
            [handy] => 12345678
            [email] => me@email.com
            [taetigkeit] => Vorsitzender
            [stufe] => Diözese
            [stamm] => MyScoutGroup
            [vegetarier] => Ja
            [allergien] => Laktoseintoleranz
            [kinderbetreuung] => 1
            [kommentar] => This is a Test
            [participant] => Array
                (
                    [1] => Array
                        (
                            [name] => Test Person1
                            [mail] => test@person1.com
                            [taetigkeit] => Leiter
                            [stufe] => Stamm
                        )

                    [2] => Array
                        (
                            [name] => Test Person2
                            [mail] => test@person2.com
                            [taetigkeit] => Vorsitzender
                            [stufe] => Bezirk
                        )

                    [3] => Array
                        (
                            [name] => Test Person3
                            [mail] => test@person3.com
                            [taetigkeit] => Mitglied
                            [stufe] => WoeliAK
                        )

                    [4] => Array
                        (
                            [name] => 
                            [mail] => 
                            [taetigkeit] => 
                            [stufe] => 
                        )

                    [5] => Array
                        (
                            [name] => 
                            [mail] => 
                            [taetigkeit] => 
                            [stufe] => 
                        )

                    [6] => Array
                        (
                            [name] => 
                            [mail] => 
                            [taetigkeit] => 
                            [stufe] => 
                        )

                    [7] => Array
                        (
                            [name] => 
                            [mail] => 
                            [taetigkeit] => 
                            [stufe] => 
                        )

                    [8] => Array
                        (
                            [name] => 
                            [mail] => 
                            [taetigkeit] => 
                            [stufe] => 
                        )

                    [9] => Array
                        (
                            [name] => 
                            [mail] => 
                            [taetigkeit] => 
                            [stufe] => 
                        )

                    [10] => Array
                        (
                            [name] => 
                            [mail] => 
                            [taetigkeit] => 
                            [stufe] => 
                        )

                )

            [chrono_verification] => Vk4Kf
            [input_submit_31] => Zustimmen & Anmelden
            [09446e02eba5957d8e042b6251af7812] => 1
            [participant_info] =>  Test Person1, test@person1.com 
  Leiter Stamm
 Test Person2, test@person2.com 
  Vorsitzender Bezirk
 Test Person3, test@person3.com 
  Mitglied WoeliAK
            [ID] => 2989
        )

    [chronoform_data_id] => 2989
)
Validation Errors: 
Array
(
)
Debug Data


I activated the debug mode of joomla, but there is no Database Query for the "ver_Veranstaltungen" Database...

Thanks and Regards
Steffen
sbischoff 05 Jan, 2014
Hi Bob,

maybe that´s the problem:
Validation Errors:
Array
(
)


What do you think?

Regards
Steffen
GreyHead 05 Jan, 2014
Hi sbischoff,

That snippet just tells you that the Validation Errors array is empty, that is, there are no validation errors.

It does look as though you are saving a participants array to the the Database though. That normally won't work, unless you convert the result to a string (or a set of separate columns, or separate records) first.
[participant] => Array
                (
                    [1] => Array
                        (
                            [name] => Test Person1
                            [mail] => test@person1.com
                            [taetigkeit] => Leiter
                            [stufe] => Stamm
                        )

                    [2] => Array
                        (
                            [name] => Test Person2
                            [mail] => test@person2.com
                            [taetigkeit] => Vorsitzender
                            [stufe] => Bezirk
                        )

                    [3] => Array
                        (
                            [name] => Test Person3
                            [mail] => test@person3.com
                            [taetigkeit] => Mitglied
                            [stufe] => WoeliAK
                        )
. . .

Bob
This topic is locked and no more replies can be posted.