Tutorials Infos - Anleitungen - Hilfe - Dreamcodes
 

Textdb - Klasse

Klasse mit der sich beliebe Daten in eine Textdatei speichern lassen

Script:

<?php
if(!defined('ONPAGE')) die("NO CHANCE!"); 

class phpdb 

var $sum; //Anzahl der Datensätze @public
var $keysum; //Anzahl der Daten pro Datensatz @public
var $keynames; //Array das die Name der Schlüssel pro Datensatz enthält @public
var $data; //Mehrdimensionales Array das die Daten enthält @public
var $fp; //Dateizeiger @private
var $filename; //Dateiname der Datenbankdatei @private

function phpdb($filename) 


if(!is_file($filename)) 

$this->error("DB-File existiert nicht!"); 


$this->filename = $filename; 
$this->load(); 





function load() 


unset($this->data, $info); //Daten werden gelöscht, damit sie neu geladen werden können
include $this->filename; //DB-File wird eingefügt

if(!isset($info)) //Wenn in der DB-File das $info Array nicht existiert.

$this->data[0]['fehler'] = "KEINE DATEN VORHANDEN"; 
$this->sum = 1; //Gesamtsumme der Datensätze
$this->keysum = 1; //Summe der einzelnen Daten pro Datensatz
$this->keynames = $this->keynames($this->data['0']); //Enthält die Namen der Schlüssel der Datensätze

else 


$begin = 0; 
$this->sum = count($info); //Gesamtsumme der Datensätze
$this->keysum = count($info['1']); //Summe der einzelnen Daten pro Datensatz
$this->keynames = $this->keynames($info['1']); //Enthält die Namen der Schlüssel der Datensätze


for($i=0; $i<$this->sum;$i++) 


for($n=0;$n <= $this->keysum;$n++) 

$this->data[$i][$this->keynames[$n]] = stripslashes($info[$i+1][$this->keynames[$n]]); 




$this->data = array_reverse($this->data); 







function keynames($array=false) 


if(!$array) 

$no = true; 
$array = $this->data['0']; 


if($no) 

return $this->keynames = array_keys($array); 

else 

return array_keys($array); 






function error($msg) 


die("<div align=\"center\" style=\"font-weight:bold;font-size:14px;color:#FF3300;\">".$msg."</div>"); 





function open($mode, $lock=false) 


$this->fp = @fopen($this->filename, $mode); 

if($lock != false) 

@flock($this->fp, $lock); 





function close() 


if(isset($this->fp) && !empty($this->fp)) 

@flock($this->fp, 3); 
@fclose($this->fp); 
return true; 

else 

return false; 






function insert($entry) 


if(!is_array($entry)) 


return false; 



$keysofentry = $this->keynames($entry); 
$size = filesize($this->filename); 
$this->open("r+",2); 
fseek($this->fp, $size-2); 

if(!$this->compare($keysofentry, $this->keynames)) 


$this->error("Array stimmen nicht überein! (Formular überprüfen)"); 



foreach($keysofentry as $key) 


static $first = true; 

if($first == true) 


fputs($this->fp,"$info[++$begin]['$key'] = \"".$this->formatstr($entry[$key])."\";n"); 
$first = false; 


else 


fputs($this->fp,"$info[ $begin]['$key'] = \"".$this->formatstr($entry[$key])."\";n"); 





fputs($this->fp,"n?>"); 
$this->close(); 
return true; 




function delete($delete=false) 


$size = filesize($this->filename); 
$this->open("w",2); 

fputs($this->fp,"<?n"); 
#fputs($this->fp,"#$info[++$begin]['name'] = \"isreal\";n#$info[ $begin]['email'] = \"office@is-real.com\";nn#$info[++$begin]['name'] = \"Franz\";n#$info[ $begin]['email'] = \"franz@host.com\";n#usw..rnn");

foreach($this->data as $data) 

static $n=0; 

if(!is_array($delete) || !in_array($n, $delete)) 


for($i=0; $i < $this->keysum;$i++) 


if(!(($this->keysum+$i)%$this->keysum)) 


static $d=1; 
fputs($this->fp,"#".$d." (ID:".($d-1).")n"); 
fputs($this->fp,"$info[++$begin]['".$this->keynames[$i]."'] = \"".$this->formatstr($data[$this->keynames[$i]])."\";n"); 
$first = false; 
$d++; 


else 


fputs($this->fp,"$info[ $begin]['".$this->keynames[$i]."'] = \"".$this->formatstr($data[$this->keynames[$i]])."\";n"); 


if(($i+1)==$this->keysum) 


fputs($this->fp,"n"); 







$n++; 



fputs($this->fp,"n?>"); 
$this->close(); 
return true; 





function compare($array1, $array2) 


$arraysum1 = count($array1); 
$arraysum2 = count($array2); 

if($arraysum1 != $arraysum2) 

return false; 


foreach($array1 as $value) 


if(!in_array($value, $array2, true)) 

return false; 




return true; 





function formatstr($str) 


return str_replace("$", "\$", addslashes($str)); 







?>



<?php

require "phpdb.class.php"; //Als erstes die Klasse includen ;o)
$db = new phpdb("db.php"); //Klasse initialiesieren

if(!empty($_POST['name']) && !empty($_POST['email']))
{

$data = array('name' => $_POST['name'],
'email' => $_POST['email']);

//Der Methode insert übergibt man einfach ein Array mit den Daten die man eintragen möchte.
//Das Array muss dieselben Schlüssel aufweisen wie die in der DB-File schon vorhandenen.
$db->insert($data);

}


if(isset($_POST['del']))
{

//Der Methode delete ein array mit den id's die gelöscht werden sollen
$delete = $_POST['delete'];
$db->delete($delete);

}
//mit load wird das Array aktualisiert.
//Damit die neuen/gelöschten Einträge (nicht) angezeigt werden
$db->load();

echo "Anzahl der Datensätze: <b>".$db->sum."</b><br>\n"; //sum enthält die Summer der Datensätze die in der Datei vorhanden sind.

echo "Anzahl der Daten pro Datensatz: <b>".$db->keysum."</b><br>\n"; //keysum enthält die Summe der einzelnen Einträge pro Datensatz (name+email = 2)
echo "Namen der Daten pro Datensatz: <br>\n";
echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" target=\"_self\">\n";

foreach($db->keynames as $keyname) //keynames enthält die Namen der Schlüssel eines Datensatzes. (name, email)
{
echo "<b>".$keyname."</b>: <input type=\"text\" name=\"$keyname\" value=\"\"><br>";
}
echo "<input type=\"submit\" value=\"eintragen\">\n";
echo "</form>\n";
echo "<br><br>";


echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"POST\" target=\"_self\">\n";

//data ist ein 2Dim Array das die gesamten Daten enthält;
//$classname->data[0]['name'] = "isreal";
//$classname->data[0]['email'] = "office@is-real.net";
//usw.

foreach($db->data as $user)
{
static $n =0;
echo "<input type=\"checkbox\" name=\"delete[]\" value=\"$n\"><br>\n";
for($i=0; $i < $db->keysum;$i++)
{
echo "<b>".ucfirst($db->keynames[$i])."</b>: ".$user[$db->keynames[$i]]."<br>\n";
}
$n++;
echo "<br>\n";
}
echo "<input type=\"submit\" name=\"del\" value=\"l&ouml;schen\">\n";
echo "</form>\n";

$db->delete(); //Wenn delete ohne Argument aufgerufen wird formatiert er die DB-File neu. Dabei werden aber keine Änderungen vorgenommen.


?>

 
ID: 645
eingestellt am: 28.01.2005
Autor: NA
Status zum lesen: Gast
gelesen: 6219
Webseite: www.dreamcodes.com
[Drucken]