Hallo,
ich biete heute etwas ganz tolles, eine riesige Klasse mit wenig nutzen. Ehm, andersrum. Die Klasse soll genau eines machen: Dir soll eine solide aber einfache Grundlage für euer MySQL-basiertes Control Panel geboten werden. Die Klasse hat exakt 33 54 Zeilen Code, davon sind 2 Zeilen PHP-Tags, 4 Zeilen Kommentare, 7 12 Leerzeilen und 36 Zeilen Code.
NEU! Du kannst nun auch Tabellen updaten.
Und schon begeistert? Nein - glaub ich dir. Schauen wir uns doch mal an wie das funktioniert.
$data = new data('127.0.0.1', 'root', '', 'ucp', 'user', 'userID = 1'); // neues Objekt der Klasse; Parameter: Host, Nutzer, Passwort, Datenbank, Tabelle, Identifikation (alles was nach "WHERE" folgen kann/folgt), optional: Zusätzliche Felder für Subqueries/JOIN Queries
if($data->username !== false) echo $data->username; // Prüfen ob das Feld existiert, wenn ja ausgeben
else echo 'field not found'; // ansonsten Fehlermeldung
Sieht einfach aus oder? Ist es auch. Du kannst jedes Feld aus der MySQL Tabelle ausgeben lassen, auch eigene die du z.B. per Subquery holst. Beispiel? Gerne:
$data = new data('127.0.0.1', 'root', '', 'ucp', 'user', 'userID = 1', '(SELECT factionname FROM faction WHERE factionID = factionID) as factionname');
if($data->factionname !== false) echo $data->factionname;
else echo 'field not found';
Du kannst auch Spalten in deiner Tabelle updaten indem du ganz einfach die Variable setzt (Funktioniert nicht bei Subqueries!). Klingt verwirren, hier mal ein Beispiel:
$data = new data('127.0.0.1', 'root', '', 'ucp', 'user', 'userID = 1';
$data->username = 'deadinat0r'; // setzt den Spielernamen auf "deadinat0r"
Und konnte ich dich überzeugen? Dann darfst du die Klasse gerne nutzen, wenn nicht lass es einfach
Jetzt aber endlich zur Klasse selbst...
<?php
/*
* Die wohl einfachste Grundlage für ein MySQL basiertes UCP in PHP auf der ganzen Welt
* Idee und Umsetzung von dead, das Werk steht unter der WTFPL <http://www.wtfpl.net/>
*/
class data {
private $connection = null, $data = null, $update = array(), $mysqlTable = '', $identification = '';
public function __construct($mysqlHost, $mysqlUser, $mysqlPassword, $mysqlDatabase, $mysqlTable, $identification, $additionalFields = '') {
$this->mysqlTable = $mysqlTable;
$this->identification = $identification;
$this->connection = new MySQLi($mysqlHost, $mysqlUser, $mysqlPassword, $mysqlDatabase);
$sql = "SELECT *" . (($additionalFields) ? (', ' . $additionalFields) : ('')) . "
FROM " . $mysqlTable . "
WHERE " . $identification;
if(!$result = $this->connection->query($sql)) {
return false;
}
$this->data = $result->fetch_object();
return true;
}
public function __destruct() {
if(!empty($this->update)) {
$sql = "UPDATE " . $this->mysqlTable . "
SET " . implode(', ', $this->update) . "
WHERE " . $this->identification;
$this->connection->query($sql);
}
}
public function __get($name) {
return $this->getValue($name);
}
public function __set($name, $value) {
return $this->setValue($name, $value);
}
private function getValue($field) {
return isset($this->data->$field) ? ($this->data->$field) : (false);
}
private function setValue($field, $value) {
$this->update[] = $field . " = '" . $this->connection->real_escape_string($value) . "'";
}
}
?>
Alles anzeigen
Viel Spaß damit!