webForumDet fria alternativet

Gästboks problem!

11 svar · 380 visningar · startad av Expher

ExpherMedlem sedan feb. 20048 inlägg
#1

Jag har ett problem med min gästbok i PHP. Jag vill ha fallande datumordning i inläggen. Hur kan jag fixa detta med bara en textfil på servern istället för en MySQL?

URL: https://www.expher.tk

Tacksam för svar! :D

Gislaved.netMedlem sedan juni 20001 521 inlägg
#2

Du kan läsa in hela textfilen som en variabel, nollställa textfilen, lägga till det senaste inlägget först i variabeln och sedan skriva tillbaka variabeln till textfilen.

ExpherMedlem sedan feb. 20048 inlägg
#3

Exempel?

Kan någon skicka några kod-exempel på detta?

MatteMedlem sedan aug. 20002 975 inlägg
#4

Re: Exempel?

Expher skrev:

Kan någon skicka några kod-exempel på detta?

http://www.phpportalen.net/wiki/index.php?page=Hur+skriver+jag+till+b�rjan+p�+en+textfil%3F

ExpherMedlem sedan feb. 20048 inlägg
#5
<?php

$new_line = "Detta är innehållet som ska ligga först i filen";

if ($fp = @fopen("textfil.txt", "r+")) {
   // Läs in innehållet i en variabel.
   $contents = fread($fp, filesize("textfil.txt"));
   rewind($fp); // Spola tillbaka till början på filen
   fwrite($fp, $new_line."\n"); // Skriv till fil
   fwrite($fp, $contents);  // Skriv till fil
   fclose($fp);
} else {
   echo "Gick ej öppna filen";
}

?>

Måste "$new_line" vara med? Vad gör den egentligen? Varför ska den vara med i så fall? :q

MatteMedlem sedan aug. 20002 975 inlägg
#6

$new_line är det nya innehåll du ska spara först i textfilen. Du kan lägga det i en variabel som i exemplet, eller skriva det direkt till textfilen.

Det är arbetsordningen som är det viktiga

1. Läs innehållet i filen och spara i variabel
2. Flytta tillbaka filpekaren till början av filen
3. Skriv in det nya innehållet ($new_line)
4. Skriv in det gamla innehållet ($content)

ExpherMedlem sedan feb. 20048 inlägg
#7

Jag förstår ingenting här... :o kan ingen ge ett simpelt men rätt exempel hur jag ska göra steg för steg för att lösa mitt problem? Ska jag skriva scriptet så du förstår hur det är och funkar? :q :OO

SkyMedlem sedan maj 2003103 inlägg
#8

Matte har ju givit dig ett steg för steg för att lösa det.

ExpherMedlem sedan feb. 20048 inlägg
#9

1. Läs innehållet i filen och spara i variabel (I variabel?! Va?)
2. Flytta tillbaka filpekaren till början av filen (Filpekaren?)
3. Skriv in det nya innehållet ($new_line) (Vilket nya innehåll?!)
4. Skriv in det gamla innehållet ($content) (Vilket gammla innehåll?!)

Jag vet att det är nybörjaraktigt av mig, men jag fattar ingenting. :l

FuelMedlem sedan okt. 20001 285 inlägg
#10

kanske dags att läsa nån grund tutorial i html / php ???

Ska du köra bil bör du veta var ratten och gaspedalen sitter :birp

ExpherMedlem sedan feb. 20048 inlägg
#11

Jag kan HTML lungt, men PHP är mycket nytt för mig. Jag vet inte, men är det för mkt begärt att någon förklarar hur man gör för en person som inte lärt sig PHP riktigt?

Tacksam för svar :l

MatteMedlem sedan aug. 20002 975 inlägg
#12

1.
Jag har ingen som helst aning om hur ditt skript ser ut.
Din fråga tolkar jag som om du sparar något i slutet av textfilen.
Det du i ditt skript lägger till i slutet av filen ska du istället lägga i en variabel. I exemplet är $new_line använt som namn på den variabeln.
För att du enkelt ska kunna göra en paging (dela upp gästboken på flera sidor), eller ta bort eller redigera inlägg, är det att föredra att man lägger inlägget på en rad. Detta kan göras på flera sätt.

2.
När du öppnar en fil med $fp=fopen("filnamn", "r+"), ställer sig filpekaren $fp i början av filen. r betyder read, och + betyder att man dessutom kan skriva till den.
Hade du öppnat filen med $fp=fopen("filnamn", "a") så hade filpekaren ställt sig i slutet av filen.
När man läser eller skriver från/till en fil flyttar sig filpekaren till slutet på det man läser/skriver.
Flyttar filpekaren till början av filen gör man med rewind.

3.
Förhoppningsvis har du tagit om hand om de postade formulärfälten, och på ena eller andra sättet gjort en sträng av dessa.
Strängen har du lagt i en variabel, i exemplet kallad $new_line.
Skriv denna variabel till filen.

4.
Det första du gjorde i exemplet var att läsa in filens innehåll i variabeln $ontent.
Efter att du lagt till det nya inlägget först i filen, skriver du nu dit det gamla innehållet så det kommer efter det nya.
På detta sätt får du det nya inlägget överst i filen.

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