Har lagt upp en liten exprimentgästbok som jag använder under arbetets gång.
http://www.webstugan.pp.nu/cgi-bin/testbok/bok.pl
I själva gästboken har jag lagt in nedanstående kod som skapar länkarna som är nederst på gästbokens förstasida.
sub lankar{
########################################
# Skriver ut länkar till övriga inlägg #
########################################
### Räknar antalet inlägg
open (TEXT,"$boktext");
$kommentarer=0;
@filen=<TEXT>;
foreach $rad (@filen){
$kommentarer++;
}
close (TEXT);
$summa=$kommentarer/10;
$varv=0;
print "<table width=\"400\" align=center><tr><td>";
print "<p><center><small><b>[ </b>";
print "<STYLE>A {text-decoration:none} A:hover{text-decoration:underline} </STYLE>";
while ($varv < $summa){
$varv++;
$total=$varv*10;
$fran=$total-9;
if ($varv==1){
print " <a href=\"$gastbok\">Gästbok</A> | ";
}
else
{
#### Den sida som man befinner sig på skall ha fet text bland länkarna
if ($INFO{'lasa'}==$fran){
print "<b> <a href=\"$links?lasa=$fran\"> $fran-$total</A> </b>| ";
}
else
{
print " <a href=\"$links?lasa=$fran\"> $fran-$total</A> | ";
}
##### Söksidan skrivs ut
}
}
print " <a href=\"$sokning\">Söksida</A><b> ] </b></small></center></td></tr></table><p>";
}
Koden skapar först en länk till själva gästboken. Därefter räknar den antalet inlägg, delar resultatet med 10, och gör en länk för varje påbörjat 10-tal.
Varje länk hänvisar därefter till en nytt script. I länken följer det med ett värde så att scriptet vet vilka inlägg som skall visas.
Länken hänvisar sedan till detta script.
################################################
###### Tar emot uppgifter från formuläret ######
################################################
$forminfo=$ENV{'QUERY_STRING'};
$forminfo=~tr/+/ /;
$forminfo=~s/%(..)/pack("c",hex($1))/ge;
@par=split(/&/,$forminfo);
foreach $a (@par){
($ruta, $text)=split(/=/,$a);
$INFO{$ruta}=$text;
}
&lankar;
&skriva_gastlista;
sub lankar{
########################################
# Skriver ut länkar till övriga inlägg #
########################################
### Räknar antalet inlägg
open (TEXT,"$boktext");
$kommentarer=0;
@filen=<TEXT>;
foreach $rad (@filen){
$kommentarer++;
}
close (TEXT);
$summa=$kommentarer/10;
$varv=0;
print "Content-type: text/html\n\n";
print "<table width=\"400\" align=center><tr><td>";
print "<center><h2><b>Äldre inlägg ur exprimentgästboken!</h2></b></center>";
print "<center><small><b>[ </b>";
print "<STYLE>A {text-decoration:none} A:hover{text-decoration:underline} </STYLE>";
while ($varv < $summa){
$varv++;
$total=$varv*10;
$fran=$total-9;
if ($varv==1){
print " <a href=\"$gastbok\">Gästbok</A> | ";
}
else
{
#### Den sida som man befinner sig på skall ha fet text bland länkarna
if ($INFO{'lasa'}==$fran){
print "<b> <a href=\"$lankar?lasa=$fran\"> $fran-$total</A> </b>| ";
}
else
{
print " <a href=\"$lankar?lasa=$fran\"> $fran-$total</A> | ";
}
##### Söksidan skrivs ut
}
}
print " <a href=\"$sokning\">Söksida</A><b> ] </b></small></center></td></tr></table>";
print "</td></tr></table>";
}
###############################
###### Skriver ut inläggen ####
###############################
sub skriva_gastlista{
$k=0;
open (TEXT,"$boktext");
while ($rad=<TEXT> ){
$k++;
$rad=~/(.*)::(.*)::(.*)::(.*)::(.*)::(.*)::(.*)::(.*)/;
$INFO1[$k]=$1;
$INFO2[$k]=$2;
$INFO3[$k]=$3;
$INFO4[$k]=$4;
$INFO5[$k]=$5;
$INFO6[$k]=$6;
$INFO7[$k]=$7;
$INFO8[$k]=$8;
}
close (TEXT);
}
#### Vänder på vektorn så att vekt(1) blir det senaste inlägget
$nr=0;
while ($k ne 0){
$SORT1[$nr]=$INFO1[$k];
$SORT2[$nr]=$INFO2[$k];
$SORT3[$nr]=$INFO3[$k];
$SORT4[$nr]=$INFO4[$k];
$SORT5[$nr]=$INFO5[$k];
$SORT6[$nr]=$INFO6[$k];
$SORT7[$nr]=$INFO7[$k];
$SORT8[$nr]=$INFO8[$k];
$nr++;
$k--;
}
#####################################
###### Skriver ut de 10 inläggen ####
#####################################
print "<center><table border=\"0\" width=\"400\"><TR><TD><hr>";
$nr=$INFO{'lasa'};
$snurr=1;
while ($snurr ne 11){
if($nr == $kommentarer)
{
print "</td></tr></table>";
exit;
}
print "<img src=\"$bilder/$SORT6[$nr]\" alt=\"$alternativtext\"> ";
if($SORT3[$nr] ne "tomt")
{
print "<b><a href=\"mailto:$SORT3[$nr]\">$SORT2[$nr]</A></b> <small><i> ($SORT7[$nr])</i> <br>\n";
}
else
{
print "<b>$SORT2[$nr]</b> <small><i>($SORT7[$nr])</i><br>\n";
}
print "$SORT5[$nr]</b><p>\n";
if($SORT4[$nr] ne "")
{
print "$SORT4[$nr], $SORT8[$nr] - $SORT1[$nr]</small><br>";
}
else
{
print "$SORT8[$nr] - $SORT1[$nr]</small><br>";
}
print "<hr>";
$snurr++;
$nr++;
}
print "</td></tr></table>";
print "<br>";
Ovanstående kodsnutt tar emot det värde som kommer via länken. Visar de inlägg som besökaren vill se. Samt skriver ut nya länkar till gästboken startsida, till övriga inlägg samt till söksidan.
Detta är en fungerande exprimentkod. Mycket saknas dock. Bla. fillåsningar och lite annat smått och gott ;)
Finns säker många lösningar på ovanstående, men detta har jag skapat själv utifrån de förutsättningar jag haft, och det fungerar.
Du får dock inte se det som någon proffskod, utan mer som en presentation av en alternativ lösning.
Finns säker fler och bättre lösningar.
//Demo
[Redigerat av demo den 19 nov 2000]