Mittwoch, 9. Dezember 2015

Jahre vergehen ....

Jahre benötigen die Cmsmadesimple Entwickler um etwas immer nicht zu machen was man in wenigen Stunden machen kann.

  • Umstellung auf Mysql InnoDB
  • Umstellung auf Autoincrement
  • Entfernen von adodb light


Man mache sich mal den Spaß, nehme eine Cmsms 2.1 und  rund 4 Stunden Zeit und dazu ein ganz billiges , schnell hin gekritzeltes DB Script mit dem man aber alles machen kann was die datentechnisch very simple aufgebaute CMS benötigt.

Das Script selbst ist ein Lacher aber es funktioniert.
,
In den rund 4 Stunden muss die DB Nutzung in allen Scripten angepasst werden wie auch der Teil der für eine neue Insert ID zuständig sind - das ist  eine reine Fleißarbeit.

Das Script für die DB:


$dbconnection = null;


        CONST DBDEF = array(
    'user' => "root",
    'pwd' => "1030410",
    'db' => 'cmsms',
    'host' => "localhost",
    'port' => null,
    'chset' => "utf8"
);


function Connect(&$db, $host = null, $user = null, $password = null, $database = null, $port = null, $nodie = true) {
    $host = ( empty($host) ? DBDEF['host'] : $host);
    $user = ( empty($user) ? DBDEF['user'] : $user);
    $password = ( empty($password) ? DBDEF['pwd'] : $password);
    $database = ( empty($database) ? DBDEF['db'] : $database);
    $port = ( empty($port) ? DBDEF['port'] : $port);
    if ($db == null) {
        if (isset($port)) {
            $db = @mysqli_connect($host, $user, $password, '', (int) $port);
        } else {
            $db = @mysqli_connect($host, $user, $password);
        }
        if (!is_object($db) && !$nodie) {
            $err_msg = 'Cannot connect to the database because: ' . mysqli_connect_error();
            die($err_msg);
            exit();
        } elseif (!is_object($db)) {
            $err_msg = 'Cannot connect to the database because: ' . mysqli_connect_error();
            echo($err_msg);
            exit();
        }
        if (is_object($db) && $database !== null) {            
            $res = mysqli_select_db($db, $database);
            if (!$res) {
                $err_msg = 'Cannot select db because:' . mysqli_error($db);
                if (!$nodie)
                    die($err_msg);
            }
            if ($db && DBDEF['chset'] <> '') {
                $r = Execute($db, 'SET CHARACTER SET ' . DBDEF['chset']);
            }
        }
    }
}

function Execute(&$db, $sql) {
    if ($sql == '') {
        return false;
    } else {
        return mysqli_query($db, $sql);
    }
}

function GetArray(&$db, $sql, &$rset) {
    $data = false;
    $result = Execute($db, $sql);
    if ($result) {
        $rset['lasterror'] = mysqli_errno($db);
        $rset['lasterrortext'] = mysqli_error($db);
        if (preg_match("/^(insert|delete|update|replace)\s+/i", $sql)) {
            $rset['rows_affected'] = mysqli_affected_rows($db);
        } elseif (preg_match("/^(select|explain|show|describe)\s+/i", $sql)) {
            $rset['num_rows'] = mysqli_num_rows($result);
            $rset['num_fields'] = mysqli_num_fields($result);
            if ($rset['num_rows'] > 0) {
                $data = array();
                while ($row = mysqli_fetch_assoc($result)) {
                    $data[] = $row;
                }
            }
        }
    }
    return $data;
}


// Test
$rset = array();
Connect($dbconnection);
$r = GetArray($dbconnection, 'SHOW TABLES;', $rset);
print_r($r);


Natürlich kann man das Script noch mit allen Schickimickis aufrüsten wie Backup, Restore und solch Zeugs - wenn man es will - wird aber zum Betrieb von Cmsms nicht benötigt.

Keine Kommentare:

Kommentar veröffentlichen