Diese Webseite verwendet Cookies. Durch die Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Datenschutzinformationen [X]

 Mike‘s Heimseite

  by Mike Sperl



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‘

Nach oben

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($valueENT_QUOTES);
  
$value str_replace("'","&quot;"$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&ouml;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>

 

Nach oben