|
| Indsæt nederst i stedet for øverst? Fra : Niels |
Dato : 15-10-04 12:27 |
|
Jeg har en gæstebog hvor den indsætter beskeden (navn, email,
hjemmeside, emne, besked) ØVERST i et tekst-dokument!
Her er et udsnit af koden:
$fil = "tekstdokument.txt";
$tid = strftime("%d %B %Y", getlastmod()+3600);
$str = "<p><b>Navn:</b> $navn<br><b>Besked:</b>
$besked</p><hr/>";
$fp = fopen($fil, r);
if($fp) {
$filArray = file($fil);
$result = implode("", $filArray);
$result = "$str$result";
fclose($fp);
}
$fp = fopen($fil, w);
if($fp) {
fputs($fp, $result);
fclose($fp);
}
Nu sætter den ind øverst i tekstdokument.txt, kan den ikke sætte
ind nederst?
Mvh. Niels ( http://niels.spoweb.dk)
--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials
| |
Dennis Newel (15-10-2004)
| Kommentar Fra : Dennis Newel |
Dato : 15-10-04 13:22 |
|
byt rundt så $result = "$result$str";
...forresten en lidt tung måde hvis der først kommer load på. Du loader
hele filen ind i hukommelsen, for at tilføje en enkelt linie. Det kan
helt klart gøres smartere. Prøv:
Niels wrote:
> $fil = "tekstdokument.txt";
> $tid = strftime("%d %B %Y", getlastmod()+3600);
> $str = "<p><b>Navn:</b> $navn<br><b>Besked:</b>
> $besked</p><hr/>";
erstat:
> $fp = fopen($fil, r);
> if($fp) {
> $filArray = file($fil);
> $result = implode("", $filArray);
> $result = "$str$result";
> fclose($fp);
> }
> $fp = fopen($fil, w);
> if($fp) {
> fputs($fp, $result);
> fclose($fp);
> }
>
med:
$fp = fopen($fil, w);
if($fp) {
fputs($fp, $str);
fclose($fp);
}
Så nøjes du med at tilføje din linie til bunden af filen. Læs evt. mere
om fopen her: http://dk.php.net/manual/en/function.fopen.php
./Dennis
| |
Thomas Lindgaard (15-10-2004)
| Kommentar Fra : Thomas Lindgaard |
Dato : 15-10-04 14:09 |
|
On Fri, 15 Oct 2004 14:21:31 +0200, Dennis Newel wrote:
> $fp = fopen($fil, w);
> if($fp) {
> fputs($fp, $str);
> fclose($fp);
> }
Eller endnu bedre - erstat med:
$fp = fopen($fil, 'a');
Hvis man åbner filen med 'w', så slettes indholde ved ny skrivning.
Skrivning til en fil åbnet med 'a' sker i enden af filen.
(Var det ikke det du mente, Dennis?)
Mvh.
/Thomas
| |
Thomas Lindgaard (15-10-2004)
| Kommentar Fra : Thomas Lindgaard |
Dato : 15-10-04 13:28 |
|
On Fri, 15 Oct 2004 11:26:50 +0000, Niels wrote:
> Nu sætter den ind øverst i tekstdokument.txt, kan den ikke sætte
> ind nederst?
Nej.
Den eneste måde hvorpå du kan indsætte noget i toppen af en fil er at
skrive det nye indlæg i en ny fil, og derefter kopiere indholdet af den
gamle fil ind i bunden.
Men i mine øjne ville det være smartere at gemme indlæggene i din
gæstebog som et serialiseret array, sårn lidt ala:
<?php
$guestbook[] = array(
'date' => time(),
'name' => 'Hans Henning Hestehandler',
'message' => 'Bambi er sej!'
);
// Save to disk
if ( ($f = fopen('guestbook.txt', 'w')) != false )
{
fwrite($f, serialize($guestbook));
fclose($f);
}
?>
Når du så skal vise gæstebogen, er det bare at læse det serialiserede
array igen og skrive det ud på en smart måde:
<?php
$guestbook = unserialize(file_get_contents('guestbook.txt'));
foreach ($guestbook as $entry)
{
// udskriv $entry
}
?>
Eller hvis du vil udskrive det nyeste indlæg først:
<?php
$guestbook = unserialize(file_get_contents('guestbook.txt'));
for ($i = count($guestbook); $i > 0; $i--)
{
// udskriv $guestbook[$i]
}
?>
Hmmm... toilettid - gotta go.
/Thomas
| |
Tommy Ipsen (15-10-2004)
| Kommentar Fra : Tommy Ipsen |
Dato : 15-10-04 14:29 |
|
Thomas Lindgaard wrote:
>>Nu sætter den ind øverst i tekstdokument.txt, kan den ikke sætte
>>ind nederst?
>
> Nej.
>
> Den eneste måde hvorpå du kan indsætte noget i toppen af en fil er at
> skrive det nye indlæg i en ny fil, og derefter kopiere indholdet af den
> gamle fil ind i bunden.
Du svarer da ikke på spørgsmålet?
Mvh Tommy
| |
Thomas Lindgaard (15-10-2004)
| Kommentar Fra : Thomas Lindgaard |
Dato : 15-10-04 16:31 |
|
On Fri, 15 Oct 2004 15:28:49 +0200, Tommy Ipsen wrote:
> Du svarer da ikke på spørgsmålet?
Joh lidt gør jeg da... :)
Men jeg kan da ved nærmere gennemlæsning godt se at det kunne gøres
bedre. Here goes...
Man kan ikke skrive noget ind i toppen af en fil - man kan kun tilføje
til bunden. Skrivning til toppen af filen KAN gøres ved anvendelse af
følgende krumspring:
1) åbne og læse indholdet af den originale fil - dette gemmes i en
streng og filen lukkes igen
2) åbne filen med skriveadgang (hvorved alt indholdet slettes) og så
først skrive det nye indhold og derefter indholdet af strengen
Svar nok?
Til gengæld foreslog jeg en metode hvor Murray i stedet for at gemme en
html-fil kunne gemme sin gæstebog som et serialiseret array. Et sådant
er meget let både at tilføje til og at indlæse igen, og når man først
har hele sin gæstebog liggede i et array, kan man jo selv bestemme om man
vil skrive det ud forfra eller bagfra eller fra midten og ud...
Men hvorom alting er, så læser begge metoder (Murrays og min) HELE
gæstebogen ind, hver gang der tilføjes en indgang til den, og det kan jo
godt gå hen og blive lidt træls rent performance-mæssigt, hvis man har
mange besøgende.
Mvh.
/Thomas
| |
Tommy Ipsen (15-10-2004)
| Kommentar Fra : Tommy Ipsen |
Dato : 15-10-04 22:36 |
|
Thomas Lindgaard wrote:
> Men jeg kan da ved nærmere gennemlæsning godt se at det kunne gøres
> bedre. Here goes...
>
> Man kan ikke skrive noget ind i toppen af en fil - man kan kun tilføje
> til bunden. Skrivning til toppen af filen KAN gøres ved anvendelse af
> følgende krumspring:
>
> 1) åbne og læse indholdet af den originale fil - dette gemmes i en
> streng og filen lukkes igen
> 2) åbne filen med skriveadgang (hvorved alt indholdet slettes) og så
> først skrive det nye indhold og derefter indholdet af strengen
Så vidt jeg forstår af spørgsmålet har Niels i forvejen den lidt
omstændige løsning med at skrive til starten af en fil og ønsker i
stedet en løsning, hvor der skrives til slutningen af en fil! Dette er
så besvaret af Dennis og tilrettet af dig - disse par linier er vel
løsningen på Niels' problem?
Mvh Tommy Ipsen
| |
Thomas Lindgaard (16-10-2004)
| Kommentar Fra : Thomas Lindgaard |
Dato : 16-10-04 09:01 |
|
On Fri, 15 Oct 2004 23:36:18 +0200, Tommy Ipsen wrote:
> Så vidt jeg forstår af spørgsmålet har Niels i forvejen den lidt
> omstændige løsning med at skrive til starten af en fil og ønsker i
> stedet en løsning, hvor der skrives til slutningen af en fil! Dette er
> så besvaret af Dennis og tilrettet af dig - disse par linier er vel
> løsningen på Niels' problem?
Aaah - nu kan jeg se hvad du mener. Jeg forstod det som om, at Niels
ønskede at skrive øverst i filen...
Så jow - Dennis har svaret.
Mvh.
/Thomas (der dog stadig mener at serialiserede arrays er smarte :)
| |
|
|