Hallo,
ich setze mich aktuell mit der OOP auseinander.
Um das Ganze ein wenig nachvollziehen zu können, folgenden Ansatz um Daten in eine Datenbank zu schreiben:
Klasse Datenbankverbindung:
Klasse Datenverarbeitung
Ich konnte von der Klasse Group die Datenbankverbindung herstellen und eine Gruppe in der Datenbank anlegen. Das hatte schon mal geklappt.
Jetzt möchte ich das Ganze aber so umbauen, dass ich das von der index.php (Hauptseite) aus steuern kann.
Und genau da scheiter ich.
Muss ich dazu eine weitere Klasse in der Hauptseite erstellen?
Vielleicht könnt ihr den Code ja mal unter die Lupe nehmen und mir einige Tipps geben.
ich setze mich aktuell mit der OOP auseinander.
Um das Ganze ein wenig nachvollziehen zu können, folgenden Ansatz um Daten in eine Datenbank zu schreiben:
Klasse Datenbankverbindung:
PHP-Code:
<?php
class Connect {
public $db;
protected $server;
protected $user;
protected $password;
protected $options;
function __construct() {
$server = 'mysql:host=lxxx;dbname=xxx;';
$user = 'xxx';
$password = 'xxx';
$options = array (
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
);
try {
$this->db = new PDO($server, $user, $password, $options);
}
catch (PDOException $e) {
echo "Datenbankfehler\n\n" . $e->getMessage();
}
}
}
?>
PHP-Code:
<?php
class Group {
public $groupId;
public $groupName;
public $stmt;
// Gruppen auslesen
function __construct($connect) {
$sGroup = "SELECT \n";
$sGroup.= " * \n\n";
$sGroup.= "FROM \n";
$sGroup.= " klb_group \n\n\n\n\n";
// echo '<pre>' . str_replace("\n", '<br>', $sGroup) . '</pre>';
return $stmt = $connect->db->query($sGroup)->fetchAll(PDO::FETCH_OBJ);
}
// neue Gruppe anlegen/Gruppe ändern
public function newGroup($groupId, $groupName) {
$iGroup = "INSERT INTO \n";
$iGroup.= " klb_group \n\n";
$iGroup.= "( \n";
$iGroup.= " klb_group_id, \n";
$iGroup.= " klb_group_name \n";
$iGroup.= ") \n\n";
$iGroup.= "VALUES \n";
$iGroup.= "( \n";
$iGroup.= " :groupId, \n";
$iGroup.= " :groupName \n";
$iGroup.= ") \n\n";
$iGroup.= "ON DUPLICATE KEY UPDATE \n";
$iGroup.= " klb_group_id = VALUES(klb_group_id); \n";
$iGroup.= " klb_group_name = VALUES(klb_group_name); \n\n\n\n\n";
// echo '<pre>' . str_replace("\n", '<br>', $iGroup) . '</pre>';
$stmt = $this->connect->db->prepare($iGroup);
$stmt->execute(
array (
':groupId' => $groupId,
':groupName' => $groupName
)
);
}
}
?>
Jetzt möchte ich das Ganze aber so umbauen, dass ich das von der index.php (Hauptseite) aus steuern kann.
Und genau da scheiter ich.
Muss ich dazu eine weitere Klasse in der Hauptseite erstellen?
PHP-Code:
<?php
function autoloader() {
include 'group.inc.php';
include 'connect.inc.php';
}
spl_autoload_register('autoloader');
class Main {
public $connect;
public $group;
public $groupId;
public $groupName;
function __construct() {
$this->connect = new Connect();
var_dump($this->connect);
}
public function getGroup () {
$group = new Group($this->connect);
var_dump($group);
}
public function newGroup ($groupId, $groupName) {
$group = new Group($this->connect);
$this->newGroup($group);
var_dump($group);
}
}
$main = new Main();
// neue Gruppe anlegen
if (isset($_POST['saveGroup'])) {
$main->newGroup($_POST['groupId'], $_POST['groupName']);
}
// Gruppen auslesen
$rGroup = $main->getGroup();
if ($rGroup) {
foreach($rGroup as $data) {
$groupId = $data->klb_group_id;
$arr['group']['id'][$groupId] = $groupId;
$arr['group']['name'][$groupId] = $data->klb_group_name;
}
}
else {
echo 'Es wurde noch keine Gruppe angelegt';
}
// Formular Gruppe
echo '<form id="groupForm" name="groupForm" action="' . $_SERVER['PHP_SELF'] . '" method="post" accept-charset="UTF-8">';
echo 'neue Gruppe anlegen: ';
echo '<input type="hidden" name="groupId" value="" />';
echo '<input type="text" name="groupName" value="' . (isset($_POST['groupName']) ? $_POST['groupName'] : '') . '" />';
echo '<input type="submit" name="saveGroup" value="ok" />';
echo '</form>';
// Gruppenliste
if(isset($arr['group']['id'])) {
foreach($arr['group']['name'] as $groupId => $value)
{
echo $value . '<br>';
}
}
?>
Kommentar