} else { if (!\DimitriVranken\MySQL_to_webform\UserInterface\HttpParameterValidator::hasValue($username)) { outputMissingInformationErrorMessage('Username'); } else { $isUserInputValid = true; } } } } } if (!$isUserInputValid) { return; } // Validate database connection $isDatabaseConnectionValid = false; $mySqlDatabaseReader = new \DimitriVranken\MySQL_to_webform\Data\MySqlDatabaseReader($server, $database, $username, $password); if (!$mySqlDatabaseReader->canConnect()) { outputInvalidDatabaseConnectionParameterErrorMessage('Connection to db can not be established'); } else { if (!$mySqlDatabaseReader->doesTableExist($table)) { outputInvalidDatabaseConnectionParameterErrorMessage('Table can not be found'); } else { $isDatabaseConnectionValid = true; } } if (!$isDatabaseConnectionValid) { return; } $startInputFormGeneration = true; } // Methods
/** * Generiert eine HTML Eingabeform aus den Feldern der angegebenen MySQL Datenbanktabelle. * @param string $name Der Name des Formulares. * @param string $server Der Hostname oder die IP-Adresse des MySQL-Servers. * @param string $database Der Name der Datenbank, die die angegebene Tabelle enthält. * @param string $table Die Datenbanktabelle, für die das Eingabeformular generiert werden soll. * @param string $username Der Benutzername für den Zugriff auf die angegebene Datenbanktabelle. * @param string $password Das Password für den Zugriff auf die angegebene Datenbanktabelle. * @return string Das Eingabeformular. */ public static function generateInputForm($name, $server, $database, $table, $username, $password) { $debug = false; if (\DimitriVranken\MySQL_to_webform\BusinessLogic\ConfigurationReader::getDebugMode()) { $debug = true; } $mySqlDatabaseReader = new \DimitriVranken\MySQL_to_webform\Data\MySqlDatabaseReader($server, $database, $username, $password); if ($mySqlDatabaseReader->canConnect()) { // Die Verbindung zur angegebenen Datenbank kann hergestellt werden // Datenbankfelder auslesen $databaseFields = $mySqlDatabaseReader->getFields($table); // Ausgelesene Datenbankfelder ausgeben if ($debug) { echo '<h3>Database fields</h3>'; echo '<table cellpadding="5"> <tr> <th>Name</th> <th>Type</th> <th>Max. Length</th> <th>Flags</th> </tr>'; foreach ($databaseFields as $databaseField) { echo '<tr>'; echo '<td>' . $databaseField->name . '</td>'; echo '<td>' . $databaseField->type . '</td>'; echo '<td>' . $databaseField->maximumLength . '</td>'; echo '<td>' . implode('/ ', $databaseField->flags) . '</td>'; echo '</tr>'; } echo '</table>'; } // ------------------------------------------------------------------------------------------------------------------------ // Eingabeelemente aus ausgelesenen Datenbankfeldern generieren $inputElements = \DimitriVranken\MySQL_to_webform\BusinessLogic\MySqlDatabaseInputElementBuilder::buildInputElements($databaseFields); // Generierte Eingabeelemente ausgeben if ($debug) { echo '<h3>Input elements</h3>'; echo '<table cellpadding="5"> <tr> <th>Name</th> <th>Required</th> <th>Type</th> <th>Max. Length</th> <th>Options</th> </tr>'; foreach ($inputElements as $inputElement) { echo '<tr>'; echo '<td>' . $inputElement->name . '</td>'; echo '<td>' . $inputElement->required . '</td>'; echo '<td>' . $inputElement->type . '</td>'; echo '<td>' . $inputElement->maximumLength . '</td>'; if (isset($inputElement->options)) { '<td>' . implode(', ', $inputElement->options) . '</td>'; } else { echo '<td></td>'; } echo '</tr>'; } echo '</table>'; } // ------------------------------------------------------------------------------------------------------------------------ // HTML-Elemente aus generierten Eingabeelementen generieren $htmlElements = self::generateHtmlElements($inputElements); // ------------------------------------------------------------------------------------------------------------------------ // Beginn des Formulares generieren $inputForm = HtmlTagGenerator::generateFormStart('index.php', 'post'); $inputForm .= '<table cellpadding="5">'; // HTML-Elemente in Tabellenzeilen ausgeben for ($inputFormIndex = 0; $inputFormIndex < sizeof($htmlElements); $inputFormIndex++) { $currentInputElement = $inputElements[$inputFormIndex]; $currentHtmlElement = $htmlElements[$inputFormIndex]; $inputForm .= '<tr> <td valign="top">'; // Passendes Label anfügen if ($currentInputElement->type == InputElementTypes::radiobuttons) { $inputForm .= HtmlTagGenerator::generateLabel($currentInputElement->name . ':'); } else { $inputForm .= HtmlTagGenerator::generateLabelFor($currentInputElement->name . ':', $currentInputElement->name); } // HTML-Element anfügen $inputForm .= ' </td> <td valign="top">' . $currentHtmlElement . '</td> </tr>'; } $inputForm .= '</table> <br/>'; // Endes des Formulares generieren $inputForm .= HtmlTagGenerator::generateSubmit('Abschicken'); $inputForm .= '</form>'; return $inputForm; } else { echo 'Connection failed<br />'; } }