Schrift
[thread]836[/thread]

alfabetisch sortieren?: Alfabetische Sortierung von Einträgen



<< >> 4 Einträge, 1 Seite
jojodangle
 2006-11-07 13:45
#8949 #8949
User since
2006-11-07
1 Artikel
BenutzerIn
[default_avatar]
Hi,
ich habe ein script. das soweit prima funktioniert. Aber ich bekomme es lediglich hin, dass die neuen Einträge entweder oben oder unten in den einzelnen Kategorien eingefügt werden. Ich würde sie aber gerne alfabetisch sortieren lassen. d.h. wenn ich z.B. die einzelnen Rubriken (categories) habe (z.B. Hotels , Museen, Vereine etc.) dann sollen die Einträge, die hier jeweils gemacht werden, an der alfabetisch richtigen Stelle eingefügt werden. Wenn also unter Hotels z.B. steht

Ritz
Waldorf


und es kommt jetzt ein Eintrag "Teuteburger Hof" dazu, dann soll er zwischen Ritz und Waldorf erscheinen, und "Bremer Schlüssel" vor Ritz und "Berliner Tor" vor "Bremer Schlüssel" usw.

Kann mir da jemand helfen?
Der bisherige Code ist:

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
51
52
53
54
#!/usr/local/bin/perl
$freelinks = '/system/path/to/freelinks.html';
$freelinksurl = 'http://www.yourdomainname.com/freelinks.html';



# Get the form variables
if ($ENV{'REQUEST_METHOD'} eq 'GET')
{
$querystring = $ENV{'QUERY_STRING'};
}
else
{
read(STDIN, $querystring, $ENV{'CONTENT_LENGTH'});
}
@arrnameval = split(/&/, $querystring);
foreach $namval (@arrnameval)
{
($nam, $val) = split(/=/, $namval);
# replace + with space
$val =~ tr/+/ /;
# translate hex values
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORMDATA{$nam} = $val;
}

$title = $FORMDATA{'yourtitle'};
$title =~ s/<[^>]*>//g;
$url = $FORMDATA{'yoururl'};
$url =~ s/<[^>]*>//g;
$category = $FORMDATA{'category'};
$category =~ s/<[^>]*>//g;

# Read content
open(FREELINKS,"$freelinks");
@arrfreelinks = <FREELINKS>;
close(FREELINKS);

#Save back new content
open(FREELINKS,">$freelinks");
foreach $line (@arrfreelinks)
{
print FREELINKS "$line";
if ($line =~ "--newentries$category--")
{
print FREELINKS "\n<font face=arial size=2> &nbsp; - <a href=$url targer=new>$title</a></font><br>\n";
}
}
close(FREELINKS);

print "Content-type: text/html\n";
$flinks = "$freelinksurl\n\n";
print qq(Location: $flinks);
return;


Ich komme wirklich nicht weiter...

gruß
jojo
renee
 2006-11-07 14:19
#8950 #8950
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Erst ein paar allgemeine Tipps:

*) Verwende CPAN:CGI
*) verwende Wiki:[tt]use strict[/tt] und use warnings

Es wäre einfacher, wenn Du die Einträge in einer seperaten Datei speichern würdest und Templates verwenden würdest.\n\n

<!--EDIT|renee|1162902767-->
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
sid burn
 2006-11-07 15:54
#8951 #8951
User since
2006-03-29
1520 Artikel
BenutzerIn

user image
Und zu dein eigentlich Problem.
Sortierungen kannst du mit "sort" erledigen.
Wenn du die Werte in einem Array sortieren möchtest dann kannst du folgendes schreiben:

Code: (dl )
@sorted_data = sort @data

Damit wird das Array @data ASCII betisch Sortiert und in @sorted_data gespeichert.

Wie sort() genau Sortieren soll, kannst du selber Modifzieren. Um z.B. Groß/kleinschreibung zu Ignorieren kannst du folgendes schreiben.

Code: (dl )
@sorted_data = sort { lc $a cmp lc $b } @data
Nicht mehr aktiv. Bei Kontakt: ICQ: 404181669 E-Mail: perl@david-raab.de
renee
 2006-11-07 15:58
#8952 #8952
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Aber er hat hier kein Array, das er sortieren kann...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
<< >> 4 Einträge, 1 Seite



View all threads created 2006-11-07 13:45.