GormMedlem sedan maj 20046 inlägg
Hej
Jag har följt diskussionerna här ett tag men det är först nu som jag skriver mitt första inlägg.
Jag håller på att lägga upp en gästbok på min hemsida. Jag använder mig av en kod från Internetworld.
Gästboksinläggen sparas i en textfil. När en besökare skriver i en URL under ”URL” och man sedan klickar på den när inlägget har blivit uppladdat så öppnas den i samma fönster. Jag vill att den ska öppnas i ett nytt fönster (typ target="_blank"). Det andra problemet är att jag vill att det senaste inlägget skall hamna överst, inte längst ner som det är nu.
Här är koden:
<!-- Allt här ovan kan du lätt redigera så att det passar din
hemsida - nu börjar php-koden --> <?
$filename = ”guestbook.txt”;
// se till att filnamnet här ovan stämmer med den textfil du gjort
if ($name) {
$message = str_replace(”<”, ”<”, $message);
$message = str_replace(”>”, ”>”, $message);
$message = str_replace(”\n”, ”<br>\n”, $message);
// Se till att http:// finns i url:en.
if (!(substr($url, 0, 7) == ”http://”))
$url = ”http://” . $url;
// Öppna filen i ”append”-läge
if ($fd = (fopen($filename, ”a”))) {
// Skriv i filen
fwrite($fd, ”Från: $name<br>\n”);
fwrite($fd, ”E-post: <a href=\”mailto:$email\”>$email</a><br>\n”);
fwrite($fd, ”URL: <a href=\”$url\” >$url</a><p>\n”);
fwrite($fd, $message);
fwrite($fd, ”\n<hr>\n”);
fclose($fd);
} else {
print(”ERROR: cannot open $filename for writing\n”);
}
}
// Öppna filen i ”read”-läge
if ($fd = (fopen($filename, ”r”))) {
$contents = fread ($fd, filesize ($filename));
fclose ($fd);
// Skriv ut filen i html-dokumentet
print($contents);
} else {
print(”ERROR: cannot open $filename for reading\n”);
}
?>
Tacksam för svar
/Johan
UlfTMedlem sedan maj 20016 050 inlägg
Enligt php.net kan man gå till filens början med hjälp av fseek() eller rewind(). Men så som jag förstod manualen där, kommer ny text i alla fall läggas till i slutet på filen. Vad du borde fundera över, är om du inte skulle kunna använda en databas (du kanske kan använda MySQL eller Access på din hemsida). Då lägger du in varje ny gästboknotis på en egen rad i en tabell i databasen. När du ska skriva ut inläggen, kan du enkelt sortera dem i vilken ordning du vill.
Patrik81Medlem sedan okt. 2001537 inlägg
Och för att öppna adressen i ett nytt fönster skulle jag kunna tänka mig att om man ändrar denna raden
fwrite($fd, ”URL: <a href=\”$url\” >$url</a><p>\n”);
till
fwrite($fd, ”URL: <a href=\”$url\” target=\"_blank\">$url</a><p>\n”);
så skall nog det problemet ordna sig.
(Otestat men verkar logiskt) :)
MVH Patrik
/r: Nu escape:ade naturligtvis webforum mina backslashar, och jag vet inte riktigt hur jag skall få dit dem...
target="_blank" skall ju ivarjefall vara target=\"_blank\" (och likadant runt $url)
Kanske funkar bättre om jag använder vanliga kod-taggen?
fwrite($fd, ”URL: <a href=\”$url\” target=\"_blank\">$url</a><p>\n”);
*håller tummarna*
GormMedlem sedan maj 20046 inlägg
länkningen fungerade... tackar... jag hade testat nåt liknande men med en backslash för lite. :)
monAmourMedlem sedan dec. 2002270 inlägg
Testa nåt sånt här för att få det senaste överst:
<?
// Öppna filen i ”read”-läge
if ($fd = (fopen($filename, ”r”))) {
$contents = fread ($fd, filesize ($filename));
fclose ($fd);
$posts = explode("\n<hr>\n", $contents);
if (sizeOf($posts) <= 0) {
echo("Det finns inga inlägg i gästboken!");
}
else {
$posts_rev = array_reverse($posts);
foreach($posts_rev AS $post) {
echo($post."\n<hr>\n");
}
} else {
print(”ERROR: cannot open $filename for reading\n”);
}
?>
GormMedlem sedan maj 20046 inlägg
Testade den koden men det funkade inte...
monAmourMedlem sedan dec. 2002270 inlägg
GormMedlem sedan maj 20046 inlägg
Det kommer bara ett felmeddelande istället för gästboken.
monAmourMedlem sedan dec. 2002270 inlägg
Du får ju gärna berätta vad det står i felmeddelandet så kan man kanske hjälpa vidare...................
GormMedlem sedan maj 20046 inlägg
Har lyckats få det att fungera hjälpligt. Nu kommer senaste inlägget först, men delar av det som är under försvinner. Dessutom så dyker inte inlägget upp automatiskt utan man måste ladda om hela gästboken.
<?
$filename = "guestbook.txt";
// se till att filnamnet här ovan stämmer med den textfil du gjort
if ($name) {
$message = str_replace("<", "<", $message);
$message = str_replace(">", ">", $message);
$message = str_replace("\n", "<br>\n", $message);
// Se till att http:// finns i url:en.
if (!(substr($url, 0, 7) == "http://"))
$url = "http://" . $url;
if ($fd = (fopen($filename, "r+"))) {
// Läs befintligt innehåll i filen
$content = fread($fd, filesize($filename));
// Flytta tillbaka filpekaren till början av filen
rewind($fd);
// Skriv in det nya i filen
fwrite($fd, "Från: <b>$name</b><br>\n");
fwrite($fd, "E-post: <a href=\"mailto:$email\">$email</a><br>\n");
fwrite($fd, "URL: <a href=\"$url\" target=\"_blank\">$url</a><p>\n");
fwrite($fd, $message);
fwrite($fd, "\n<hr>\n");
// Skriv tillbaka det gamla
fwrite($fd, $content);
fclose($fd);
} else {
print("<B>ERROR: cannot open $filename for writing\n");
}
}
// Öppna filen i "read"-läge
if ($fd = (fopen($filename, "r"))) {
$contents = fread ($fd, filesize ($filename));
fclose ($fd);
// Skriv ut filen i html-dokumentet
print($contents);
} else {
print("<B>ERROR: cannot open $filename for reading\n");
}
?>