webForumDet fria alternativet

enklast möjliga

PHP

3 svar · 208 visningar · startad av webbmannen

Medlem sedan dec. 1999826 inlägg
Frågan#1

Jag vet att det varit uppe förr och finns exempel, men jag undrar om någon skulle vilja förklara vad som saknas/är fel i denna kod.

$read = fopen("counter2.txt","r");
$add = $read + 1;
$write = fwrite($add,"w");
fclose($write);
include "counter2.txt";

Jag läser den som: Öppna och läs counter2.txt - Ta den lästa filen och öka med 1 - Skriv in nya värdet i counter2.txt - Stäng uppdateringen - Hämta och skriv ut värdet.

Min logik är inte rätt, men vad är felet?

/webb

------------------
PPS = Programmering På Svenska

[Redigerat av webbmannen den 20 jun 2001]

Medlem sedan mars 20007 896 inlägg
#2

För det första fungerar inte den koden...
Men för att tolka den:
fopen("counter2.txt", "r"); returnerar en filpekare som en integer. Denna integer ökas sedan med ett. Vad som händer sen är ett mysterium, eftersom att bokstaven w ska skrivas till $add, som inte pekar till någon fil, och $write tilldelas en integer som inte finns(?!) - kommer bli noll. Sen försöker du stänga $write, som inte finns, vilket kommer ge felmeddelande.

Sedan inkluderas filen...

När man öppnar en fil skapas en pekare, som visar tillbaka till den filen varje gång variabeln används. Om man inte tilldelar något variabelnamn, används samma fil hela tiden.

Studera kodsnuttarna nedan, som gör samma sak:

fopen("enfil.txt", 'r');
fwrite("Jalla!");
fclose;
$fp = fopen("enfil.txt", 'r');
fwrite($fp, "Jalla!");
fclose($fp);

Koden nedan däremot skulle inte fungera korrekt utan att ange ett variabelnamn.

$fp = fopen("fil_1.txt", 'r');
$fs = fopen("fil_2.txt", 'w');
$innehall = fread(5);
fwrite($innehall);
fclose;
fclose($fs);

Kom med lite förklaringar till filpekare, men det var bara för att visa att raden $add = $read + 1; inte betyder att filinnehållet läses, utan filpekaren! :)

------------------
SPiN, bjorne.w@telia.com

-- They pretend to pay me, I pretend to work --

[Redigerat av SPiN den 20 jun 2001]

Medlem sedan feb. 20002 612 inlägg
#3

Är det något sånt här du är ute efter?

$t=fopen("counter2.txt","r+");//Öppnar textfilen
$read=fread($t, filesize("counter2.txt"));
$new_value=($read+1);//Lägger till ett till värdet i från textfilen
rewind($t);//Spolar tillbaka pekaren till början
fwrite($t,$new_value);//Skriver in det nya värdet
fclose($t);//Stänger filen

------------------
<A HREF="http://www.webforum.nu" TARGET=_blank>http://www.webforum.nu
</A> om datorn själv får välja
------------------

Medlem sedan dec. 1999826 inlägg
#4

Tack för exempel och förklaringar :)

Min vana trogen så försöker jag en hel massa utan att förstå riktigt :( Med svaren ni lämnat så ser jag att det är fler grejer involverade än jag kände till och då är det klart att det inte funkar.

Det här blev en massa bra att ta upp på PPS framöver - Tack igen.

/webb

------------------
PPS = Programmering På Svenska

258 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
121 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)