Klasse "omysql"
"omysql" ist ein Klasse für den Datenbankzugriff aus mysql Datenbanken. Es gibt bestimmt schon hunderte davon, aber für mich war es eine schöne Übung. DEMO tabellenedit.php
Die Demo ist auf die Tabelle "Testtabelle" beschränkt.
Sie dürfen die Skripts gerne verwenden. Haftung gibt es von meiner Seite keine. Download als ZIP
‘omysql.php‘
<?php
/*
Klasse omysql
Klasse mit verschiedenen mysql Datenbankfunktionen.
Eigenschaften:
anzahl Anzahl gefundener oder modifizierten Datensaetzen
fehler Fehlerausgabe
erg array mit dem Ergebnis eines Queries
Methoden:
query($sql) Abfrage Datenbank. Ergebnis wird in Eigenschaft erg als Array gespeichert.
felder($tabelle) Gibt die Tabellendefinition in Eigenschaft erg als Array zurueck.
tablecomment($tabelle) Gibt den Tabellenkommentar zurueck.
tabellen() Gibt ein Array mit allen Tabellen der aktuellen Datenbank zurueck.
dump($datei,$tabelle,$drop) Erzeugt eine Datei mit einem Dump einer Tabelle, oder aller Tabellen
der aktuellen DB. drop = true; loescht die Tabelle(n) zuvor.
$tabelle = "" selektiert alle Tabellen.
---------------------------------------------------------------------------------------------------------
*/
class omysql
{
public $anzahl;
public $fehler;
public $erg;
private $odb;
private $dbname;
public function __construct() {
$db_server = 'localhost'; // Tragen Sie hier Ihren Datenbankserver ein
$db_name = 'Ihre_datenbank'; // Tragen Sie hier den Namen Ihrer Datenbank ein
$db_user = 'datenbankuser'; // Tragen Sie hier Ihren Benutzernamen der Datenbank ein
$db_passwort = 'Ihr_passwort'; // Tragen Sie hier Ihr Passwort Ihrer Datenbank ein
$db = @ mysql_connect ( $db_server, $db_user, $db_passwort )
or die ( 'Konnte keine Verbindung zur Datenbank herstellen' );
$this->odb = $db;
$this->dbname = $db_name;
$db_check = @ mysql_select_db ( $db_name );
$db_select = @ mysql_select_db( $db_name );
}
public function query($sql) {
unset($this->erg);
//$sql = mysql_real_escape_string($sql);
$result = mysql_query ( $sql );
if ($result) {
if (preg_match("/\bselect\b/i",$sql)) {
$this->anzahl = mysql_num_rows ( $result );
while($row = mysql_fetch_array( $result ))
$this->erg[] = $row;
return $result;
}
elseif (preg_match("/\bupdate\b|\binsert\b|\bdelete\b/i",$sql)) {
$this->anzahl = mysql_affected_rows ();
return $result;
}
elseif (preg_match("/\bdrop\b|\bcreate\b/i",$sql)) {
$this->anzahl = mysql_affected_rows ();
return $result;
}
}
else {
$this->fehler = "Fehler: (" .mysql_errno() . ") " .mysql_error();
return false;
}
}
public function tablecomment($tabelle) {
$res = mysql_query("SHOW TABLE STATUS LIKE '$tabelle'");
if ($res) {
while ($cells = mysql_fetch_array($res)) {
$row = $cells;
}
if (!empty($row['Comment']))
return $row['Comment'];
else
return false;
}
else
return false;
}
public function felder($tabelle) {
unset($this->erg);
$tabelle = mysql_real_escape_string($tabelle);
$result = mysql_query ("SHOW FULL COLUMNS FROM $tabelle");
if ($result) {
while ($data = mysql_fetch_array($result))
{
$afelder[] = $data;
}
$this->erg=$afelder;
return true;
}
else {
$this->fehler = "Fehler: Tabelle '$tabelle' existiert nicht!";
return false;
}
}
public function tabellen() {
$res = mysql_query("SHOW TABLES");
if ($res) {
while ($cells = mysql_fetch_array($res)) {
$tables[] = $cells[0];
}
return $tables;
}
else
return false;
}
public function dump($datei,$tabelle = "",$drop = false) {
include('mysql.php');
$f = fopen($datei, "w");
//$tables = mysql_list_tables($db_name);
if (empty($tabelle))
$tables = mysql_query("SHOW TABLES");
else
$tables = mysql_query("SHOW TABLES like '$tabelle'");
fwrite($f,"--\n");
fwrite($f,"SET SQL_MODE='NO_AUTO_VALUE_ON_ZERO';\n");
fwrite($f,"--\n");
while ($cells = mysql_fetch_array($tables)) {
$table = $cells[0];
if ($drop)
fwrite($f,"DROP TABLE IF EXISTS `$table`;\n");
$res = mysql_query("SHOW CREATE TABLE `$table`");
if ($res) {
$create = mysql_fetch_array($res);
$create[1] .= ";";
$line = str_replace("\n", "", $create[1]);
fwrite($f, $line."\n");
$data = mysql_query("SELECT * FROM `$table`");
$num = mysql_num_fields($data);
while ($row = mysql_fetch_array($data)){
$line = "INSERT INTO `$table` VALUES(";
for ($i=1;$i<=$num;$i++) {
$line .= "'".mysql_real_escape_string($row[$i-1])."', ";
}
$line = substr($line,0,-2);
fwrite($f, $line.");\n");
}
}
}
fclose($f);
}
public function __destruct() {
$db_close = @ mysql_close ( $this->odb );
}
} // Ende class omysql
?>
Beispiel für ‘omysql.php‘ ‘tabellenedit.php‘ |
Mit diesem Script können Sie eine beliebige Tabelle aus Ihrer Datenbank anzeigen, bearbeiten.
Den Namen der Tabelle übertragen Sir über die URI. z.B.: tabellenedit.php?tabelle=testtabelle
Dieses Skript sollte unbedingt in einem passwortgeschützen Bereich stehen, da sonst jedermann Ihre Tabellen ändern oder löschen kann.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="de" http-equiv="Content-Language"/>
<meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type" />
<?php
array_walk ( $_GET, 'eingabebereinigen' );
array_walk ( $_REQUEST, 'eingabebereinigen' );
function eingabebereinigen(&$value, $key)
{
$value = strip_tags($value, '<p><br /><b><strong>');
// HTML-Tags maskieren
$value = htmlspecialchars($value, ENT_QUOTES);
$value = str_replace("'",""", $value);
}
date_default_timezone_set('Europe/Berlin');
?>
<title>Tabellenedit</title>
<style type="text/css">
.rahmen1 {padding-left: 10px;padding-right:10px;border: 1px solid black;width:20px;}
.rahmen {border: 1px solid black;}
.style1 {text-align: right;}
.style2 {font-size: x-large;}
</style>
<meta name="robots" content="NOINDEX, NOFOLLOW"/>
</head>
<body>
<?php
if (isset($_GET['tabelle']))
$tabelle = $_GET['tabelle'];
else
$tabelle = $_POST['tabelle'];
echo "<table align='center' cellpadding='3' cellspacing='0'><tr><td valign=\"top\">";
$osql = new omysql();
$titel = $osql->tablecomment($tabelle);
if ($titel)
echo "<span style='font-size:24px;'><strong>$titel (Tabelle: $tabelle)</td>";
else
echo "<span style='font-size:24px;'><strong>Tabelle " .strtoupper(substr($tabelle,0,1)) .substr($tabelle,1) ." bearbeiten</td>";
unset($osql);
echo "</tr></table><br/>";
if (isset($_POST['loe'])) {
$key = $_POST['key'];
$keyvalue = $_POST['value2'];
$tabelle = $_POST['tabelle'];
$felder = explode(",", $_POST['felder']);
$t_titel = explode(",", $_POST['t_titel']);
$felder2 = "";
foreach($felder as $f) {
$felder2 .= ",". $f ." = " ."'" .$_POST[$f] ."'" ." ";
}
$felder2 = substr($felder2,1);
$osql = new omysql();
$tabelle = mysql_real_escape_string($tabelle);
$tabelle = mysql_real_escape_string($tabelle);
$sql = "delete from $tabelle $keyvalue";
//echo $sql;
if(!$osql->query($sql))
echo $osql->fehler;
else echo "Datensatz gel?scht";
unset($osql);
}
if (isset($_POST['neu'])) {
$key = $_POST['key'];
if (isset($_POST['value2']))
$keyvalue = $_POST['value2'];
$tabelle = $_POST['tabelle'];
$felder = explode(",", $_POST['felder']);
$t_titel = explode(",", $_POST['t_titel']);
$felder2 = "";
$osql = new omysql();
foreach($felder as $f) {
$f = mysql_real_escape_string($f);
$f = addslashes($f);
$felder2 .= ",". $f ." = " ."'" .htmlentities($_POST[$f], ENT_QUOTES) ."'" ." ";
}
$felder2 = substr($felder2,1);
$tabelle = mysql_real_escape_string($tabelle);
$sql = "insert into $tabelle set $felder2";
//echo $sql;
if (!$osql->query($sql)) {
if (mysql_errno() == 1062)
echo "Doppelter Eintrag im Feld '" .$key ."'! Datensatz wurde nicht gespeichert!";
else
echo $osql->fehler;
}
else echo "Daten gespeichert";
unset($osql);
}
if (isset($_POST['save'])) {
$key = $_POST['key'];
$where = $_POST['value2'];
$tabelle = $_POST['tabelle'];
$felder = explode(",", $_POST['felder']);
$t_titel = explode(",", $_POST['t_titel']);
$felder2 = "";
foreach($felder as $f) {
$felder2 .= ",". $f ." = " ."'" .addslashes($_POST[$f]) ."'";
}
$felder2 = substr($felder2,1);
$osql = new omysql();
$tabelle = mysql_real_escape_string($tabelle);
$sql = "update $tabelle set $felder2 $where;";
if (!$osql->query($sql))
echo $osql->fehler;
else echo "Daten gespeichert<br/>";
unset($osql);
}
if (isset($_POST['edit'])) {
$osql = new omysql();
$key = $_POST['key'];
$keyvalue = $_POST['value2'];
$tabelle = $_POST['tabelle'];
$felder = explode(",", $_POST['felder']);
$t_titel = explode(",", $_POST['t_titel']);
if (!strstr($key,","))
$where = "where $key = '$keyvalue'";
else {
$keys = explode(',',$key);
$values = explode(",",$keyvalue);
$where = "where ";
$x = 0;
foreach($keys as $value) {
$where .= "$value = '$values[$x]' and ";
$x++;
}
$where = substr($where,0,strlen($where)-4);
}
$where = stripslashes($where);
$sql = "select * from $tabelle $where";
if(!$osql->query($sql))
echo $osql->fehler;
if ($osql->anzahl < 1)
echo "<tr><td>Keine Eintr?ge gefunden!</td></tr>";
else {
echo "<table align='center' cellpadding='3' cellspacing='0'><tr>";
foreach($t_titel as $value)
echo "<th class='rahmen1'>$value</th>";
echo "<th class='rahmen1'>Aktion</th></tr>";
foreach($osql->erg as $row) {
echo "<tr>";
echo "<form name='ed' action='" .$_SERVER['PHP_SELF'] ."' method='post'>";
foreach($felder as $value) {
$r = htmlentities($row[$value],ENT_QUOTES);
$size = strlen($row[$value]);
if ($size > 50) $size=50;
($size > 1) ? $size = "size='$size' " : $size = "";
echo "<td class='rahmen1'><input name='$value' value='$r' $size></td> \n";
}
echo "<td class='rahmen1'>";
echo "<input name='key' type='hidden' value='". $_POST['key'] ."' />";
echo "<input name='value2' type='hidden' value=\"". $where ."\"' />" ;
echo "<input name='tabelle' type='hidden' value='". $_POST['tabelle'] ."' />";
echo "<input name='t_titel' type='hidden' value='". $_POST['t_titel'] ."' />";
echo "<input name='felder' type='hidden' value='". $_POST['felder'] ."' />";
echo "<input name='save' type='submit' value='speichern' /><br/>";
echo "<input name='loe' type='submit' value='löschen' onclick='return confirm(\"Datensatz l?schen?\")'/><br/>";
echo "<input name='weiter' type='submit' value='zur?ck' />";
echo "</td></tr></form>";
echo "</table>";
if ($x = strpos($key,','))
$key2 = substr($key,0,$x);
else
$key2 = $key;
echo "<script type='text/javascript'>document.ed.$key2.focus()</script>";
}
}
unset($osql);
echo "</body></html>";
exit;
}
if (isset($_POST['neu1'])) {
$key = $_POST['key'];
if (isset($_POST['value2']))
$keyvalue = $_POST['value2'];
$tabelle = $_POST['tabelle'];
$felder = explode(",", $_POST['felder']);
$t_titel = explode(",", $_POST['t_titel']);
echo "<table align='center' cellpadding='3' cellspacing='0'><tr>";
foreach($t_titel as $value)
echo "<th class='rahmen1'>$value</th>";
echo "</tr>";
echo "<form name='fneu' action='" .$_SERVER['PHP_SELF'] ."' method='post'>";
echo "<tr>";
foreach($felder as $value) {
echo "<td class='rahmen1'><input name='$value' value=''></td>";
}
echo "<td class='rahmen1'>";
echo "<input name='tabelle' type='hidden' value='". $_POST['tabelle'] ."' />";
echo "<input name='key' type='hidden' value='". $_POST['key'] ."' />";
echo "<input name='felder' type='hidden' value='". $_POST['felder'] ."' />";
echo "<input name='t_titel' type='hidden' value='". $_POST['t_titel'] ."' />";
echo "<input name='neu' type='submit' value='anlegen' /><br/>";
echo "<input name='weiter' type='submit' value='zur?ck' />";
echo "</td></tr>";
echo "</tr></form></table><br/> \n";
if ($x = strpos($key,','))
$key2 = substr($key,0,$x);
else
$key2 = $key;
echo "<script type='text/javascript'>document.fneu.$key2.focus()</script>";
echo "</body></html>";
exit;
}
$ptitel = "";
if (isset($_POST['tabelle']) or (isset($_GET['tabelle']))) {
$osql = new omysql();
if (isset($_POST['tabelle'])) {
$tabelle = $_POST['tabelle'];
$felder = explode(",", $_POST['felder']);
$t_titel = explode(",", $_POST['t_titel']);
$pfelder = $_POST['felder'];
$ptitel = $_POST['t_titel'];
if (isset($_POST['key']))
$pkey = $_POST['key'];
}
if (isset($_GET['tabelle'])) {
$tabelle = $_GET['tabelle'];
if (isset($_GET['felder'])) {
$felder = explode(",", $_GET['felder']);
$pfelder = $_GET['felder'];
}
else {
$pfelder = "";
$pkey = "";
$y = 1;
if ($osql->felder($tabelle))
$afelder = $osql->erg;
else
die("<h2>$osql->fehler</h2>");
$x = 1;
$ptitel = "";
foreach($afelder as $key => $value1) {
$x++;
if ($x % 2)
$y = 1;
foreach($afelder[$key] as $key2 => $value) {
$y++;
if ($y % 2) {
// echo $key2 .": " .$value ."<br>";
if ( $key2 == "Field" ) {
$pfelder .= "," .$value;
$v = $value;
}
if ( $key2 == "Key") {
if ($v != "" and $value != "")
$pkey .= "," .$v;
}
if ( $key2 == "Comment" ) {
if ($value != "")
$ptitel .= "," .$value;
else
$ptitel .= "," .$v;
}
}
}
}
$pfelder = substr($pfelder,1);
$ptitel = substr($ptitel,1);
$pkey = substr($pkey,1);
$t_titel = explode(",", $ptitel);
$felder = explode(",", $pfelder);
}
if (isset($_GET['t_titel'])) {
$t_titel = explode(",", $_GET['t_titel']);
$ptitel = $_GET['t_titel'];
}
if (isset($_GET['key']))
$pkey = $_GET['key'];
}
echo "<table align='center' cellpadding='3' cellspacing='0'><tr>";
foreach($t_titel as $value)
echo "<th class='rahmen1'>$value</th>";
echo "<th class='rahmen1'><form action='" .$_SERVER['PHP_SELF'] ."' method='post'>";
echo "<input name='key' type='hidden' value='". $pkey ."' />";
echo "<input name='tabelle' type='hidden' value='". $tabelle ."' />";
echo "<input name='felder' type='hidden' value='". $pfelder ."' />";
echo "<input name='t_titel' type='hidden' value='". $ptitel."' />";
echo "<input name='neu1' type='submit' value='neu' /></form></th></tr>";
$tabelle = mysql_real_escape_string($tabelle);
$pkey = mysql_real_escape_string($pkey);
$sql = "select * from $tabelle order by $pkey";
if (!$osql->query( $sql ));
echo $osql->fehler;
if ($osql->anzahl < 1)
echo "<tr><td colspan='3'>Keine Eintr?ge gefunden!</td></tr></table>";
else {
foreach($osql->erg as $row) {
echo "<tr>";
foreach($felder as $value) {
if (strlen($row[$value]) > 25)
$val = substr($row[$value],0,25) ." ...";
else $val = $row[$value];
$val = htmlspecialchars($val);
echo "<td class='rahmen1' style='white-space: nowrap;'>$val</td>";
}
if (!strstr($pkey,","))
$keyvalue = $row[$pkey];
else {
$keys1 = explode(',',$pkey);
$keyvalue = "";
foreach($keys1 as $value) {
$keyvalue .= ",$row[$value]";
}
$keyvalue = substr($keyvalue,1);
}
echo "<td class='rahmen1'><form action='" .$_SERVER['PHP_SELF'] ."' method='post'>";
echo "<input name='key' type='hidden' value='". $pkey ."' />";
echo "<input name='tabelle' type='hidden' value='". $tabelle ."' />";
echo "<input name='felder' type='hidden' value='". $pfelder ."' />";
echo "<input name='t_titel' type='hidden' value='". $ptitel."' />";
echo "<input name='value2' type='hidden' value='". $keyvalue ."' />" ;
echo "<input name='edit' type='submit' value='bearbeiten' />";
echo "</form></td></tr>";
}
}
echo "</table><br />";
unset($osql);
}
?>
</body>
</html>
|