webForumDet fria alternativet

+r och syntax fel.. problem :)

6 svar · 411 visningar · startad av Matti

MattiMedlem sedan dec. 19996 592 inlägg
#1

Tjo!

I min gästbok använde jag a+ för att öppna och skriva till en fil, men då hamnade ju alla nya inlägg längst ner på sidan. Därför ändrade jag det till +r men då skrivs bara ett meddelande till filen? När nästa besökare skriver till filen ersätts det senaste inlägget med det nya.. min kod:

$filnamn = "msg.txt";
$fd = fopen ( $filnamn, "r+" );
fwrite ($fd, "\n\n<b>Namn:</b> <a href=mailto:$email>$namn</a> [$today] \n");
fwrite ($fd, "<br><b>Hemsida:</b> <a href=http://$hemsida>$hemsida</a>\n");
fwrite ($fd, "<br><b>Meddelande:</b> $meddelande<br><br>");
fwrite ($fd, "<!-- Denna snubbe kom från $REMOTE_ADDR , $HTTP_HOST -->\n\n ");
fclose ($fd);

Vad ska jag skriva för att alla nya meddelanden ska hamna högst upp?

------------------
Matti Kolu
mk.st
e-godis.com

nicclasMedlem sedan feb. 20001 050 inlägg
#2

Hejsan,

Ja, detta är ett litet helvete. Givet att man skall göra en lösning som baseras sig på en textfil kommer du själv att behöva skriva kod som lägger ditt nya inlägg först. Enklast löser man det enklast genom att läsa in hela "skiten" till en sträng, addera det nya först i strängen, och spara tillbaka.

Det säger sig själv att detta inte är snabbt, så alternativet att använda typ MySQL är nog inte så tokigt.

Här kommer i alla fall ett försök:

<?
$dagboksfil="msg.txt";
$hela="\n\n<b>Namn:</b> <a href=mailto:$email>$namn</a> [$today] \n";
$hela .="<br><b>Hemsida:</b> <a href=http://$hemsida>$hemsida</a>\n";
$hela .="<br><b>Meddelande:</b> $meddelande<br><br>";
$hela .="<!-- Denna snubbe kom från $REMOTE_ADDR , $HTTP_HOST -->\n\n ";
$fpread = fopen($dagboksfil, 'r') or die;
$hela .= ltrim(Chop(fread($fpread, 99999)));
fclose ($fpread);
$fpwrite = fopen($dagboksfil, 'w') or die;
fputs($fpwrite,$hela);
fclose($fpwrite);
?>

Tyvärr hinner jag inte provköra denna kod. Men kommer du/någon på något som fungerar bättre så är jag intresserad...

/nicclas @ http://www.nic-sys.se

[Redigerat av nicclas den 12 apr 2000]

[Redigerat av nicclas den 12 apr 2000]

[Redigerat av nicclas den 12 apr 2000]

emissionMedlem sedan dec. 19996 721 inlägg
#3

Faktum är att det inte blir så särskilt långsamt.

Gör gärna en återanvänbar funktion av det hela, så slipper du tänka på det i fortsättningen. Prepend($file,$string) bli'la bra.

------------------
----------------------------
Gunnar Liljas - webbutvecklare
Leon Reklambyrå AB
Norrköping
ASP/VB/Perl/PHP/Tango

KimMedlem sedan jan. 20007 697 inlägg
#4

Vad gör Prepend() då?

------------------
Kim Halderot
cim@linux.nu

nicclasMedlem sedan feb. 20001 050 inlägg
#5

Hejsan,

"emission" tänkte sig nog att man borde göra en funktion (som heter Prepend) av koden jag skrev. Appropå hastigheten har "emission" säkert (även där) rätt! (Jag återkommer med mitt MySQL förslag när det visar sig att Matti vill skriva ut gästboken på flera sidor :) )

/nic @ http://www.nic-sys.se

MattiMedlem sedan dec. 19996 592 inlägg
#6

Jag skulle gärna använda mig av mysql.. men alltså mysql fungerar inte på min server :(

Ska testa koden ovan om en stund :)

------------------
Matti Kolu
mk.st
e-godis.com

BatboyMedlem sedan jan. 20001 006 inlägg
#7

(Jag återkommer med mitt MySQL förslag när det visar sig att Matti vill skriva ut gästboken på flera sidor)

Jag skulle gärna vilja se det förslaget redan nu.. jag har ingen gästbok, men dock andra MySQL saker som skulle må bra av att presenteras på flera sidor istället för en.

------------------
/joakim
j@batboy.net
http://batboy.net/
http://nokiatricks.com/

134 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
131 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)