[PHP] reading a textfile reverse

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi!,

ik heb een prbleem en kom er niet uit,

http://gijs.airliner.nl/Source/news.txt

word hier getoond: http://gijs.airliner.nl/news.php

maar hoe kan ik nu het nieuwste news dat ik geschreven heb naar die news.txt, bovenaan laten zien.. :? 8)7 |:(

alvast bedankt _/-\o_

Acties:
  • 0 Henk 'm!

  • We Are Borg
  • Registratie: April 2000
  • Laatst online: 22:25

We Are Borg

Moderator Wonen & Mobiliteit / General Chat
ehm, moet je toch echt de code plaatsen van news.php

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nou op dit moment gebruik ik gewoon:

PHP:
1
<?php include 'news.txt'; ?>


B)

[ Voor 27% gewijzigd door Verwijderd op 27-02-2004 11:15 . Reden: added =PHP to code tag ]


Acties:
  • 0 Henk 'm!

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
en wat heb je zelf al geprobeerd? 8)7

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
proberen te zoeken op www.php.net, maar ik weet niet waarnaar ik moet zoeken en hoe ik het moet aanpakken, vandaar dat ik het vraag |:(

Acties:
  • 0 Henk 'm!

  • Helox-in-a-box
  • Registratie: Augustus 2000
  • Laatst online: 21-09 10:07
zoek maar op "strrev":

(PHP 3, PHP 4 )

strrev -- Reverse a string

Acties:
  • 0 Henk 'm!

  • JER00N
  • Registratie: Maart 2002
  • Niet online
Gewoon dat bestand in een array lezen met file() en dan die array omdraaien?
Waarom kies je btw voor een engelse titel? |:(

Acties:
  • 0 Henk 'm!

  • vogeltje
  • Registratie: December 2001
  • Laatst online: 10-08 19:30
http://nl2.php.net/manual/en/function.fopen.php

en dan verder nog fread etc. zie bovenstaande link

binnenkort een hele dikke casemod :P


Acties:
  • 0 Henk 'm!

  • HunterPro
  • Registratie: Juni 2001
  • Niet online
Helox-in-a-box schreef op 27 februari 2004 @ 11:17:
zoek maar op "strrev":

(PHP 3, PHP 4 )

strrev -- Reverse a string
lol, je weet welk resultaat dit geeft :? 8)7

Ik zou inlezen naar een array, en dan vanaf array[arraylengte] naar array[0] terug gaan tellen :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
maar als ik het bestand in een array zou lezen, en daarna zou omdraaien, dan kloppen de tabellen toch niet meer

(engels gebruik ik meer op forums :| )

Acties:
  • 0 Henk 'm!

  • vogeltje
  • Registratie: December 2001
  • Laatst online: 10-08 19:30
Helox-in-a-box schreef op 27 februari 2004 @ 11:17:
zoek maar op "strrev":

(PHP 3, PHP 4 )

strrev -- Reverse a string
hij wil niet de string omdraaien, maar de textfile ipv. boven naar beneden, van beneden naar boven lezen.

[ Voor 3% gewijzigd door vogeltje op 27-02-2004 11:20 ]

binnenkort een hele dikke casemod :P


Acties:
  • 0 Henk 'm!

Verwijderd

maar hoe kan ik nu het nieuwste news dat ik geschreven heb naar die news.txt, bovenaan laten zien..

euh waar schrijf je je nieuws in? begrijp het niet helemaal? dus het laatst geschreven nieuws moet boven aan? en php leest het txt bestandje en dan? zoals ik het nu zie moet je gewoon het nieuws bovenaan in het txt bestanje zetten :? maar dat komt omdat er erg weinig uitleg is

Acties:
  • 0 Henk 'm!

  • vogeltje
  • Registratie: December 2001
  • Laatst online: 10-08 19:30
Verwijderd schreef op 27 februari 2004 @ 11:19:
maar hoe kan ik nu het nieuwste news dat ik geschreven heb naar die news.txt, bovenaan laten zien..

euh waar schrijf je je nieuws in? begrijp het niet helemaal? dus het laatst geschreven nieuws moet boven aan? en php leest het txt bestandje en dan? zoals ik het nu zie moet je gewoon het nieuws bovenaan in het txt bestanje zetten :? maar dat komt omdat er erg weinig uitleg is
ik denk dat de TS gewoon via een ander PHP scriptje regels 'append' aan news.txt, waardoor die append-regels onderaan komen te staan.

binnenkort een hele dikke casemod :P


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 27 februari 2004 @ 11:19:
maar hoe kan ik nu het nieuwste news dat ik geschreven heb naar die news.txt, bovenaan laten zien..

euh waar schrijf je je nieuws in? begrijp het niet helemaal? dus het laatst geschreven nieuws moet boven aan? en php leest het txt bestandje en dan? zoals ik het nu zie moet je gewoon het nieuws bovenaan in het txt bestanje zetten :? maar dat komt omdat er erg weinig uitleg is
ik schrijf het naar de textfile, dus hij schrijft het niewste onderaan het (wat er al in staat), nou wil ik het dus weer uit de textfile lezen zodat datgene wat het nieuwste is (wat ik onderaan heb gezet) bovenaan de pagina news.php komt..

voorbeeld:

1-01
2-01
3-01
4-01

zo staat het in de textfile

maar wil het zo eruit laten zien op de news.php

4-01
3-01
2-01
1-01

Acties:
  • 0 Henk 'm!

  • vogeltje
  • Registratie: December 2001
  • Laatst online: 10-08 19:30
maar nog ff terug naar het probleem. TS, waarom hang je al het spul niet gewoon in een database? Is toch veel makkelijker?

binnenkort een hele dikke casemod :P


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
vogeltje schreef op 27 februari 2004 @ 11:23:
maar nog ff terug naar het probleem. TS, waarom hang je al het spul niet gewoon in een database? Is toch veel makkelijker?
nou uh nee voor mij niet, van een database snap ik de kloten al helemaal niet :'( :'( ..

en dat vraag ik nou ook niet

[ Voor 7% gewijzigd door Verwijderd op 27-02-2004 11:24 ]


Acties:
  • 0 Henk 'm!

  • vogeltje
  • Registratie: December 2001
  • Laatst online: 10-08 19:30
Verwijderd schreef op 27 februari 2004 @ 11:24:
[...]

nou uh nee voor mij niet, van een database snap ik de kloten al helemaal niet :'( :'( ..

en dat vraag ik nou ook niet
nou dan is dit een stuk makkelijker op te lossen hoor :)

maar anyway, dan denk ik dat je toch niks anders kan doen dan alles in een array inlezen, en die omdraaien. (zoek maar op "array" op www.php.net)

[ Voor 4% gewijzigd door vogeltje op 27-02-2004 11:27 ]

binnenkort een hele dikke casemod :P


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
maar zie i kdat dan verkeerd,

als ik bijvoorbeeld een table in een textfile zet en die inplaats van boven naar beneden van beneden naar boven lees

dus..

code:
1
2
3
4
5
<table>
  <tr>
    <td></td>
  </tr>
</table>


word dan zo gelezen

code:
1
2
3
4
5
</table>
  </tr>
    <td></td>
  <tr>
<table>



toch

Acties:
  • 0 Henk 'm!

Verwijderd

je moet ook geen array met regels aanmaken en deze omkeren maar een array met nieuwsitems omdraaien (gewoon voor elk nieuwsitem tijdens het inlezen een nieuw objectje aanmaken en deze in een array zetten).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 27 februari 2004 @ 11:32:
je moet ook geen array met regels aanmaken en deze omkeren maar een array met nieuwsitems omdraaien (gewoon voor elk nieuwsitem tijdens het inlezen een nieuw objectje aanmaken en deze in een array zetten).
kan iemand in godsnaam laten zien hoe dit moet _/-\o_ 8)7

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Misschien kun je met een regular expression alles tussen <table> en </table> helemaal in een array van relatief lange strings zetten, en die array dan achterstevoren doorlopen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
2
3
4
    $bestandsnaam = "news.txt";
    $bestand = fopen($bestandsnaam, "r");
    $tekst = fread($bestand, filesize($bestandsnaam));
    fclose($bestand);


En dan vervolgens een aantal string functies van php gaan gebruiken. Bijv
code:
1
$begin = strpos($tekst, '<table>')

dan kan je achterhalen op welke positie table begint en dan vervolgens met substr():
code:
1
$news = substr($tekst, $begin);

kan je een stukje uit die text knippen. Veel succes

[ Voor 13% gewijzigd door Verwijderd op 27-02-2004 11:38 . Reden: was nog niet klaar ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
NMe84 schreef op 27 februari 2004 @ 11:34:
Misschien kun je met een regular expression alles tussen <table> en </table> helemaal in een array van relatief lange strings zetten, en die array dan achterstevoren doorlopen.
ja maar het probleem is, als ik een enter (<br>) in de textarea zet, en dat naar de file schrijf dat het vanzelf ook zo erin komt te staan.. dus dan blijft het niet mooi precies in 1 regel tussen de <table> en </table> staan

[ Voor 13% gewijzigd door Verwijderd op 27-02-2004 11:36 ]


Acties:
  • 0 Henk 'm!

Verwijderd

andere, logischere oplossing is gewoon bij het toevoegen pre(?)penden, dus het nieuwste bovenaan zetten. Erg eenvoudig aan te passen, hoef je voor de rest niets te gaan doen met array etc. Moet je het alleen wel eenmalig handmatig veranderen in je huidige bestand.

[ Voor 65% gewijzigd door Verwijderd op 27-02-2004 11:43 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 27 februari 2004 @ 11:37:
andere, logischere oplossing is gewoon bij het toevoegen pre(?)penden, dus het nieuwste bovenaan zetten. Erg eenvoudig aan te passen, hoef je voor de rest niets te gaan doen met array etc. Moet je het alleen wel eenmalig handmatig veranderen in je huidige bestand.
dus gewoon als ik het ernaar toe schrijf al boven aan plaatsen :)?

hoe gaat ik dat aanpakken dan :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 27 februari 2004 @ 11:36:
ja maar het probleem is, als ik een enter (<br>) in de textarea zet, en dat naar de file schrijf dat het vanzelf ook zo erin komt te staan.. dus dan blijft het niet mooi precies in 1 regel tussen de <table> en </table> staan
Regels hebben er niets mee te maken. Je moet dan wel de inhoud van die tekstfile in een keer inlezen, dan heb je een lange string, waar dan toevallig een \n in voorkomt op de plaats van een enter.

Maar ik ben het met Fuego eens dat het handiger is om gewoon de manier van toevoegen in die text file aan te passen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Alleen het nieuws zelf in je textfile zetten, dan e file inlezen in een array. met de functie array_reverse() em omdraaien. Dan ff met een while/for loop je tabel ermee vullen?

of denk ik nu veels te moeilijk ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Verwijderd schreef op 27 februari 2004 @ 11:36:
code:
1
2
3
4
    $bestandsnaam = "news.txt";
    $bestand = fopen($bestandsnaam, "r");
    $tekst = fread($bestand, filesize($bestandsnaam));
    fclose($bestand);


En dan vervolgens een aantal string functies van php gaan gebruiken. Bijv
code:
1
$begin = strpos($tekst, '<table>')

dan kan je achterhalen op welke positie table begint en dan vervolgens met substr():
code:
1
$news = substr($tekst, $begin);

kan je een stukje uit die text knippen. Veel succes
sorry deze had ik niet gelezen, alvast bedankt daarvoor :) ..

Acties:
  • 0 Henk 'm!

Verwijderd

stukje pseudo code voor je nieuwsbeheer script:
het oude bestand inlezen in var,
het bestand openen voor schrijven en legen, (fopen met 'w').
dan het nieuwe bericht erin schrijven,
al het oude er achteraan,
bestand sluiten en klaar..

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
godverdegotver, .. ik kom er gewoon niet uit, ik kan kijken en willen wat ik wil, maar ik moet gewoon een beter voorbeeld hebben, ik ben behoorlijk nieuw tot php, maar damn ik kan er heel slecht in komen :|

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Verwijderd schreef op 27 februari 2004 @ 11:39:
[...]

dus gewoon als ik het ernaar toe schrijf al boven aan plaatsen :)?

hoe gaat ik dat aanpakken dan :)
Eerst de hele file inlezen, dan die file legen, je nieuwe bericht plaatsen en het oude weer terugschrijven? :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 27 februari 2004 @ 11:43:
stukje pseudo code voor je nieuwsbeheer script:
het oude bestand inlezen in var,
het bestand openen voor schrijven en legen, (fopen met 'w').
dan het nieuwe bericht erin schrijven,
al het oude er achteraan,
bestand sluiten en klaar..
Is ook een goede oplossing :D
Deze functie had ik nog liggen:
code:
1
2
3
4
5
6
7
8
$bestandsnaam = "news.txt";
$bestand = fopen($bestandsnaam, "r");
$outputtekst = fread($bestand, filesize($bestandsnaam));
fclose($bestand);
$outputtekst = //VERANDEREN WAT JE WIL
$bestand = fopen($bestandsnaam, "w");
$fout = fwrite($bestand, $outputtekst);
fclose($bestand);


Maar houd wel rekening mee dat je news.txt wel schrijfrechten heeft

offtopic:
Sorry fuego ;)

[ Voor 17% gewijzigd door Verwijderd op 27-02-2004 11:51 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Vertel eens welke regel van de pseudo code je niet uitkomt? Als je een heel kleine beetje moeite doet vind je ze allemaal zo in de manual, het is echt een van de meest simpele scriptjes mogelijk.
Een klein beetje meer moeite doen ipv de makkelijke weg te kiezen en gelijk om hulp te vragen, dan leer je er nog wat van

[edit]
Heb jij even mazzel iemand heeft het toch al voorgekauwd :P

[ Voor 11% gewijzigd door Verwijderd op 27-02-2004 11:50 ]


Acties:
  • 0 Henk 'm!

  • -=bas=-
  • Registratie: Oktober 2000
  • Laatst online: 22-04 02:56
Op www.phpfreakz.nl staan wel wat duidelijke tutorials over hoe databases te gebruiken met PHP.
Het scheelt je heel veel werkt. :) (als het eenmaal draait).

Maar waarom loop je niet gewoon je bron-file van beneden naar boven af zodat het nieuwste item bovenaan komt in je HTML output?
Je hoeft dan niet eens een array te gebruiken.

Senile! Senile Oekaki


Acties:
  • 0 Henk 'm!

Verwijderd

_bas_ schreef op 27 februari 2004 @ 11:54:
Op www.phpfreakz.nl staan wel wat duidelijke tutorials over hoe databases te gebruiken met PHP.
Het scheelt je heel veel werkt. :) (als het eenmaal draait).

Maar waarom loop je niet gewoon je bron-file van beneden naar boven af zodat het nieuwste item bovenaan komt in je HTML output?
Je hoeft dan niet eens een array te gebruiken.
Een nieuwsitem loopt over meerdere regels, dus je zal van boven naar beneden moet lezen in de file en daar weer met arrays aan de gang gaan.
Maar dat is gewoon het probleem aan de verkeerde kant oplossen. Als je de input gewoon goed maakt hoef je niet van dat soort dingen uit te gaan halen om het alsnog goed te doen. Misschien in dit geval niet echt relevant, maar ook voor de performance een stuk beter om alles zoveel mogelijk aan de beheer kant te regelen en niet voor iedere keer dat de pagina opgevraagd wordt de verkeerd opgeslagen data gaan ordenen.

En als het alleen maar om een simpele nieuwpagina gaat is een DB niet nodig hoor, je ziet hoe je met 1 regel de boel include en het opslaan op de beheer pagina is ook in 10 regels geregeld.

Acties:
  • 0 Henk 'm!

Verwijderd

Hier heb je vast ook wat aan:
code:
1
2
3
4
5
6
7
8
9
10
11
<?
$tekst = "<TABLE>news1</TABLE> <TABLE>news2</TABLE> <TABLE>news3</TABLE>";

$stukjes = explode("<TABLE>", $tekst);


for ($i=count($stukjes);$i>=0;$i--){
print($stukjes[$i]);

}
?>


De functie explode() http://nl2.php.net/manual/nl/function.explode.php kan erg handig zijn (was hem ff vergeten) :9

[ Voor 24% gewijzigd door Verwijderd op 27-02-2004 14:51 ]

Pagina: 1