Hejsan!
Ska justera mitt egenhändigt skapta administrationskonto till min gästbok. Ska nu ha en funktion så att jag som ansvarig kan svara på valfritt meddelande i gästboken, så att mitt svar kommer precis under det meddelande som vald besökare har lämnat.
Min lösning är enligt följande.
På administrationspanalen får en lista med alla inläggen. Till varje inlägg finns en kryssruta. Värdet för varje kryssruta är detsamma som för inlägget. Inlägget ett har en kryssruta vars värde är ett. Inlägg två har en kryssruta vars värde är två, osv.
Jag fyller mitt svar i en textruta på administrationspanelen, och kryssar i den kryssruta som finns till det meddelande jag vill svara på.
Nu till problemet. Väljer jag att svara på det senaste inlägget i gästboken, så fungerar det alltid ok. Svaret placeras då där det ska, vid rätt meddelande.
Svarar jag däremot på något tidigare meddelande, så fungerar det inte. Istället för att lägga till mitt svar på inläggen, så försvinner inläggen helt och hållet från gästaboken.
Således fungerar min funktion endast om man svarar på det senaste meddelandet. Något kodfel är det inte frågan om, utan snarare måste det vara ett 'tankefel' någonstans i koden. Men vars ligger tankefelet?
Så här är funktionen uppbyggd.
- Jag skriver ut textfilen med medddelanden till en array.
Första meddelandet för första plasten i arrayen. - Går därefter igenom arrayen, och jämför varje meddelande om det stämmer med värdet på de checkboxar som jag har kryssat i.
- Om värdet inte stämmer, så är kryssrutan inte markerad, och samma värdet i arrayen skrivs då in i meddelandefilen utan förändringar.
- Om värdet stämmer är kryssrutan markerad, och meddelar att svarstexten ska läggas till i meddelandet. Den splittar då meddelandet för att få fram själva meddelandeposten. Lägger där efter till svaret, och sparar alla värden till textfilen.
- Så här gör programmet tills den gått igenom hela arrayen och gemfört den med kryssrutorna på administrationpanelen.
Detta borde väl vara riktigt tänkt?
Nu till koden :)
# Läser in textfilen med meddelanden i array.
# Det äldsta meddelandet får placeringen ett, näst äldsta placeringen två, osv.
$k=0;
open (BOKTEXT,"$bok");
while ($rad=<BOKTEXT>){
$k++;
$inlagg[$k]=$rad;
}
close (BOKTEXT);
# Går därefter igenom arrayen för att jämföra numret på
kryssrutan, och jämföra den med numret i arrayen.
Är kryssruta 2 exempelvis kryssad, så ska svaret läggas till i
meddelande 2 i arrayen.
open (BOKTEXT,">$bok");
$nr=0;
while ($nr ne $k){
$nr++;
# Om kryssrutan INTE är markerad så ska inlägget inte besvaras,
utan skrivas in i meddelandefilen utan ändring.
if($INFO{$nr} ne "on"){
print BOKTEXT "$inlagg[$nr]";
}
# Om kryssrutan ÄR markerad så ska inlägget besvaras.
Meddelnderaden i arrayen splittas då upp.
if($INFO{$nr} eq "on"){
$antal++;
$inlagg[$nr]=~/(.*)::(.*)::(.*)::(.*)::(.*)::(.*)::(.*)::(.*)/;
$text1[$k]=$1;
$text2[$k]=$2;
$text3[$k]=$3;
#osv, osv....
#Ersätter \n med <br> i svaret
$INFO{'svar'}=~s/\n/<br>/g;
# Svaret läggs till i meddelandet opch spars till meddelandefilen
print BOKTEXT "$text1[$k]::$text2[$k]::$text3[$k] $svar::$text4[$k] ..osv..osv
}
Detta funkar nu endast om man svarar på den senaste inlägget i
gästboken. Svarar man på de övriga inläggen i gästboken, så
försvinner dessa.
Antagligen är det något enkelt tankefel någonstans, men kan
någon möjligen se vart?
Mvh,
Brian