Schrift
[thread]3388[/thread]

DB_File: Werte anhängen



<< |< 1 2 >| >> 16 Einträge, 2 Seiten
pktm
 2004-12-29 19:03
#35812 #35812
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Hallo!
Ich versuche gerade mein CMS auf DB_File umzustellen.
Meine Alte Datenstruktur sah so aus:
Quote
nr \t keyword \t titel \t meta-keywords \t meta-desc \t meta-page-topic \t datei(Pfad)

Jetzt woltle ich das per DB_File realisieren.
Um die DB also anzulegen habe ich mir einfach den Code aus der Doku genommen:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
our (%h, $k, $v);
unlink $db_file;
tie %h, "DB_File", $db_file, O_RDWR|O_CREAT, 0666, $DB_HASH
or die "Cannot open file '$db_file': $!\n";
$h{'nr'} = 0;
$h{'name'} = "name";
$h{'titel'} = "titel";
$h{'keywords'} = "keywords";
$h{'desc'} = "desc";
$h{'page-topic'} = "page-topic";
$h{'inhalt'} = "text";

# print the contents of the file
while (($k, $v) = each %h)
{ print "$k -> $v\n" }
untie %h;


Nur wenn ich jetzt einen weiteren Datensatz mit der ID 2 hinzufügen will wird alles alte wieder überschrieben.
Wie kann ich denn Datensätze anhängen?
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2004-12-29 19:27
#35813 #35813
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wie fügst du denn hinzu und wie öffnest du die db zum hinzufügen?
pktm
 2004-12-29 19:30
#35814 #35814
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Meine DB?
Das ist ein ganz normales File:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
sub create {
my $return = 1; #positive annahme
my $filename = $query->{neu_titel};
$filename =~ tr/ÄÖÜäöüßA-Za-z\000-\377/aouaousa-za-z/d;
if( $filename eq "" ){ $filename = rand(1); }
$filename =~ s/\&/&/g; #&
$filename =~ s/"/"/g; #"
$filename =~ s/\'/'/g; #'
$filename =~ s/>/&gt;/g; #>
$filename =~ s/</&lt;/g; #<
$filename =~ s/\n/<br>/g; #\n
my $datei = $dataDir . '/' . $filename . 'txt.igs';
# ---- seite in DB eintragen, pid hochzählen
my @data = extractFile( $database_file );
my $pid = (split/\t/, $data[scalar(@data)-1])[0];
$pid++;
# -- nr \t keyword \t titel \t meta-keywords \t meta-desc \t meta-page-topic \t datei(Pfad)
my $key = $query->{neu_titel}; #umlaute etc ersetzen!!!
$key =~ s/\&/&/g; #&
$key =~ s/"/"/g; #"
$key =~ s/\'/'/g; #'
$key =~ s/>/&gt;/g; #>
$key =~ s/</&lt;/g; #<
$key =~ s/\n/<br>/g; #\n
$key =~ tr/ÄÖÜäöüßA-Za-z\000-\377/aouaousa-za-z/d;
if( $key eq "" ){ $key = rand(1); }
my $neu = $pid . "\t" . $key . "\t" . $query->{neu_titel} . "\t" . $query->{keywords} . "\t" . $query->{desc} . "\t" . $query->{page_topic} . "\t" . $datei . "\n";
foreach( @data ){
if( (split/\t/, $data[scalar(@data)-1])[1] eq "$key" ){
$subs{error} = "<b>Fehler: Eine Seite mit diesem Namen ($key) existiert bereits! Bitte klicken Sie auf den Zur&uuml;ck-Button ihres Browsers und geben Sie einen anderen Namen ein.</b>";
return 0;
}
}

# ---- file anlegen (ok!)
open(DAT, ">$datei") || die "$!";
print DAT main::formatText( $query->{text} );
close(DAT);

# ---- Datenbank aktualisieren (ok!)
push @data, $neu;
open(DAT, ">$database_file") || die "$!";
print DAT @data;
close(DAT);

# ---- Navigation im Main_Template erweitern
unless( main::aktualisiereNavs() ){ push @errors, "Fehler: Konnte die Navigation nicht aktualisieren!" }

return 1;
} #create

1:1 aus meinem CMS-Adminscript übernommen.
Hoffe man blickt halbwegs durch.
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2004-12-29 23:32
#35815 #35815
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
nein

ich hab eher an die D_File datenbank gedacht!!!
pktm
 2004-12-30 00:18
#35816 #35816
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Ahsu.
öffnen:
Code (perl): (dl )
1
2
3
4
5
use DB_File;
our (%h, $k, $v) ;
    unlink $db_file;
    tie %h, "DB_File", $db_file, O_RDWR|O_CREAT, 0666, $DB_HASH
        or die "Cannot open file '$db_file': $!\n";

hinzufügen steht oben, und anschließend untie %h;
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
esskar
 2004-12-30 00:20
#35817 #35817
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
wenn du das ding jedesmal mit O_CREAT öffnest, ist es klar, dass du immer wieder überschreibst, weil du jedesmal neu anlegst, nehm ich an! :)
pktm
 2004-12-30 01:35
#35818 #35818
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Und wie ist die Option für anhängen? Ich kenne mich mit diesen Befehlen noch nicht aus.
mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
Cremator
 2004-12-30 12:09
#35819 #35819
User since
2003-11-26
97 Artikel
BenutzerIn
[default_avatar]
O_APPEND

Siehe auch: perldoc perlopentut in Abschnitt "Open à la C"
Ronnie
 2004-12-30 13:35
#35820 #35820
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Ich würde in diesem zusammenhang DBD::SQLite empfehlen. Man kann es verwenden wie einen normalen SQL-Server, es wird aber lediglich eine Datei erzeugt.
pktm
 2004-12-30 20:08
#35821 #35821
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Sehr schöner Hinweis, wollte mir das selber machen weil cih via ppm - Suchenichts gefunden ahbe.
thx & mfg pktm
http://www.intergastro-service.de (mein erstes CMS :) )
<< |< 1 2 >| >> 16 Einträge, 2 Seiten



View all threads created 2004-12-29 19:03.