Toon posts:

PHP vooraan in de file laten schrijven.

Pagina: 1
Acties:
  • 103 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik ben net begonnen met PHP.
Ik probeer nu een gastenboek te scrijven.
Hiervoor gebruik het script van ene Stefan.
http://home.concepts.nl/~stefan/php/sample_guestbook.php3

Alle data wordt middels fputs in een bestandje (huppeldepup.dat) geschreven.

Maar 'bericht 2' na 'bericht 1' wordt achteraan geschreven. Is het niet mogelijk dat je een later bericht eigenlijk via een soort 'insert' voor alle andere data kan krijgen?

  • JJJ
  • Registratie: Mei 2000
  • Laatst online: 20:37

JJJ

Dat de laatste post bovenaan komt?

Met mysql database:

ORDER BY id WHERE id='$id'

zoiets?

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
Moeilijk... Probleem is dat dit in het bestand dat op schijf staat niet kan, je kan daar niet zomaar alles naar beneden opschuiven.

Makkelijkst lijkt me het werken met een database.. Als je toch een txt bestand wilt gebruiken dan kan je b.v. iets doen als
$oudedata=file(guestdata.dat);
daarna open je een lege guestdata.dat, schrijft je nieuwe entry er achter en zet er dan de inhoud van $oudedata bij..

Andere oplossing is het gewoon achteraan schijven van de entry en dan bij het weergeven van de data heel de file inlezen en sorteren (of alles in een array zetten en achterstevoren die array afwerken).

Maar databases zijn echt een stuk makkelijker/flexibele/leuker/veiliger/sneller dan van die txt bestanden.

Verwijderd

<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>Op 02 november 2000 08:57 schreef JJJ het volgende:
Dat de laatste post bovenaan komt?

Met mysql database:

ORDER BY id WHERE id='$id'

zoiets?[/quote]Hij zegt dattie het in een bestand schrijft...

beetje overbodig dus!

  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

Het volgende zou ook kunnen:
1. De oude file hernoemen
2. De oude file openen
3. Een nieuwe file maken met de originele naam
4. De entry toevoegen
5. Gegevens van de oude file in de nieuwe file schrijven
6. Hernoemde bestand verwijderen

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


Verwijderd

Topicstarter
Het zou toch makkelijker moeten kunnen. In een oud messagebord mbv een perl scriptje had je een mogelijkheid om de data te inserten in een bepaald gedeelte, nl zo:<BLOCKQUOTE><font size=1 face=Verdana, Arial, Helvetica>quote:</font><HR>for ($i=0;$i<=$SIZE;$i++) {
$_=$LINES[$i];
if (/<!--begin-->/) {

print GUEST "<!--begin-->n";
bla bla bla etc.[/quote]Lijkt me dat dat in php ook zou moeten kunnen.

  • bartvb
  • Registratie: Oktober 1999
  • Laatst online: 26-08 16:09
Tuurlijk, dat stuk code kan je bijna rechtstreeks in PHP gebruiken, maar dat stukje perl lost het probleem nog niet op. Ook in Perl is het niet mogelijk zomaar een file te openen en dan iets helemaal vooraan er bij te zetten zonder ook de rest van de file helemaal in te lezen en weg te schrijven..

Verwijderd

Het lijkt mij het handigste en het snelste om gewoon nieuwe entries achteraan erin te zetten, en dan van achteraan uitlezen...

Verwijderd

Hoe dan?? Hoe kun je het laatste dan voor aan zetten??? (als je bijv op je msg board maximaal 50 msg laat zien kun je bijv met een array werken $msg[0]-$msg[50] en dan weergeven als $msg[50] eerst en dan 49, 48.. (met een for-loop) maar anders lukt het niet)

  • goalgetter
  • Registratie: Juni 1999
  • Laatst online: 25-08 15:24
- Lees de file in naar een variable
- Zet alles wat je wil posten in een variable
- Hang de inhoudt van de file achteraan de variable waar je message in zit.
- Schrijf deze variable weer naar de file.

Voorbeeldje:

$msgfile = fopen ("$messages","r");
$current = fread ($msgfile, filesize ($messages));
fclose ($msgfile);

Nu heb je de hele inhoud van het oude bestand in de variabele '$current'.

Wat je wil schrijven zet je in een andere variabele bijv. '$new'

$new = "Bla Bla Bla\n";
$new .= "Bla Bla Bla\n";

Als je alles daarin hebt zitten doe je gewoon
$new .= "$current";

Daarna schrijf je het geheel weer naar het bestand toe
$msgfile = fopen ("$messages","w+");
fputs ($messages,$new);
fclose ($messages);

Verwijderd

Topicstarter
Bedankt, zo'n zetje had ik nodig.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ik kwam deze topic net tegen in de search. Ik ben ook maar 's begonnen met php en wou nu proberen 1 regel in een .txt bestandje te wijzigen.

tot nu toe kom ik niet verder dan dit (en dat werkt dus niet, want $info blijft leeg):
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$file = fopen("test.txt","r");
$info = fread($file, filesize("test.txt"));
fclose($file);
$new .= "blaatblaatblaat".$info."blaatblaatblaat";
echo $new;
//dit hieronder is nog wat onzin, waar ik mee bezig ben geweest, maar de moed al voor opgegeven heb
//for ($i in $info) {
   //if ($i == "tekst") $blaat = fwrite($file,"NogmeerTekst");
//}

// ^^ wat er nou volgens mij zou moeten gebeuren is dat de file plus 6x blaat zou moeten worden weergegeven op het scherm, maar dat gebeurd dus niet ): ..
?>

Kant iemand mij misschien eventjes helpen en zeggen wat ik fout doe ;(

Verwijderd

Je moet wel eerst je file weer fopenen!
code:
1
$file = fopen ("tekst.txt", "w");

Verwijderd

PHP:
1
<?$fp = fopen ("php.txt", "aw");?>

zou je aan het begin moeten kunnen schrijven...

  • Engineer
  • Registratie: Juni 2001
  • Laatst online: 04-05 00:03

Engineer

Software

.

[ Voor 100% gewijzigd door Engineer op 13-10-2018 11:54 ]


  • Grum
  • Registratie: Juni 2001
  • Niet online
hdd: Hier zijn standaard php functies voor, oa fseak() fseek() of een parameter bij fopen()

:+

Verwijderd

Op dinsdag 09 april 2002 19:47 schreef Grum het volgende:
hdd: Hier zijn standaard php functies voor, oa fseak() fseek() of een parameter bij fopen()

:+
Laat ik die "of een parameter bij fopen" nou net een paar berichten eerder gepost hebben... *zucht*
Pagina: 1