Toon posts:

[PHP] content systeem

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik moet voor m'n club een scriptje maken dat het mogelijk maakt voor iedereen om nieuws te zetten op de site.
Het standaard gastenboek gedoe kan ik natuurlijk gebruiken, maar nu zit het zo dat links een link komt naar een nieuwsitem en die moet dan rechts in het content frame worden getoont.

Als we een database achter de site hadden zitten, zou het natuurlijk erg simpel zijn, maar je snapt het al, dat hebben we niet..

Ik wilde dus de variabeles die uit de form komen (als je ze invoert) opslaan in een flat (txt) file, en deze dan steeds uitlezen.
Probleem is dat ik dus die file 2 keer moet uitlezen, 1 keer in de menubalk en 1 keer in het contentscherm.

Wat lijkt jullie nou de beste manier om die gegevens op te slaan, of hoe ik dit kan bewerkstelligen !?
Ik zit een beetje vast met het linken van de nieuwsitems en dan het tonen van het nieuws in een ander frame, en dus een ander document..

Hoop dat het een beetje duidelijk is wat ik bedoel :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
Je kan je eigen session handler systeem maken zodat je gebruikers informatie langer dan 1 sessie kan opslaan.

En voor de site-opbouw .. tja ... een template engine :)

Verwijderd

Gewoon een sequentieel tekstbestand regel voor regel inlezen met 'fopen'. Daarna op de eerste regel (of met een speciaal teken ervoor) de titel, gevolgd door de content. Dit werkt perfect. Zorg er wel voor dat je schrijfrechten hebt op de server.

  • Dennis
  • Registratie: Februari 2001
  • Laatst online: 22:39
Op zaterdag 23 maart 2002 12:34 schreef Grum het volgende:
En voor de site-opbouw .. tja ... een template engine :)
XSLT

Verwijderd

als je een bestandje wilt uitlezen kan je het beste gebruik maken van de funktie

$array = file("database.txt"):

Nu word namenlijk elke regel in een array gezet, dus regel 1 is $array[0] en regel 2 is $array[1].

als je dus nu iets wil bijschrijven kan je de volgende code gebruiken:

$filehandler = fopen("database.txt", "w");
$id = 0;
$count = count($array);
while ($id =< $count) {
$schrijf .= "$array[$id]\n";
$id++;
}
$schrijf .= "Nieuwe regel die onderaan moet komen\n";
fwrite ($filehandler, $schrijf);
fclose ($filehandler);

Ik heb hem niet getest, dus er kan nog een foutje in zitten. Maar dit is dus een kleine uitleg over het werken met files, misschien wist je het al.

Verwijderd

Topicstarter
Ik heb inmiddels de nodige dingen klaar maar blijf met 1 ding zitten.

Als iemand het bericht intypt in een formveld, gebruikt hij enters.
Nu wil ik de berichten opslaan in een textfile, maar dan die enters er niet in hebben..

Ik heb geprobeerd om eerst de output van het formfield met nl2br() om te zetten naar de juiste html, maar dan krijg ik nog enters in de variabele en dus in me txt file..
Ik kan ereg-replace gaan gebruiken voor de \n\r naar niks, maar is er geen andere manier !?

Verwijderd

Topicstarter
Ik ben nu een paar uur verder, maar ben er nog niet uit.. Kan iemand ff vertellen hoe dat wel kan/moet ?!

Dus de enters weghalen uit een variabele die uit een form komt..

  • Baxlash
  • Registratie: Juni 2000
  • Niet online

Baxlash

Its a boy Genius!

Op maandag 25 maart 2002 19:56 schreef Tizzwat het volgende:
Ik ben nu een paar uur verder, maar ben er nog niet uit.. Kan iemand ff vertellen hoe dat wel kan/moet ?!

Dus de enters weghalen uit een variabele die uit een form komt..
je hebt een variable, daar gooi je een nl2br overheen, en maakt van alle \n een <br>.

$variable = nl2br($variable);

nu heb je een text zonder fysieke enters.

Zodra je het er uit haalt ben je gelijk klaar, want je had al <br>'s nodig :)

[edit]
en anders replace je een \n gewoon naar iets anders :)
$variable = str_replace("\n","[ikbeneenenterenjij]",$variable);

Verwijderd

Topicstarter
Wat ik dus wil in dat textfile is dit;
Titel|bron|bericht

En dat wil ik allemaal op een zin hebben.
Ik gebruik uitlees code die een zin pakt en daar dan wat mee doet, hij kijkt dus naar 1 zin en niet naar meerdere..
(de file() functie)

Omdat nl2br() ook de enters in de broncode van de html laat staan slaat die die enters ook op in de txt file, en dat kan dus niet omdat m'n uitleescode dan niet werkt..

Hoop dat het nu duidelijker is en iemand me kan helpen, kom echt niet verder :(

  • Baxlash
  • Registratie: Juni 2000
  • Niet online

Baxlash

Its a boy Genius!

Op maandag 25 maart 2002 20:52 schreef Tizzwat het volgende:
Wat ik dus wil in dat textfile is dit;
Titel|bron|bericht

En dat wil ik allemaal op een zin hebben.
Ik gebruik uitlees code die een zin pakt en daar dan wat mee doet, hij kijkt dus naar 1 zin en niet naar meerdere..
(de file() functie)

Omdat nl2br() ook de enters in de broncode van de html laat staan slaat die die enters ook op in de txt file, en dat kan dus niet omdat m'n uitleescode dan niet werkt..

Hoop dat het nu duidelijker is en iemand me kan helpen, kom echt niet verder :(
Wat mij bij staat is dat nl2br een replace is (kan het fout hebben hoor). MAar als dat niet zo is delete je toch alle \n in een zin?

hint voor deze oplossing: str_replace

Verwijderd

Desnoods bij invoeren:
PHP:
1
<?$bericht = str_replace ("\n", "[enter]", $bericht);?>

en als je het bericht nodig hebt :
PHP:
1
<?$bericht = str_replace("[enter]", "<br>", $bericht);?>

Poe hee, dat is onzin.

Verwijderd

Topicstarter
Heb der dit van gemaakt;
PHP:
1
<?$bericht = preg_replace("/\r\n|\n\r|\n|\r/", "<br>",$bericht);?>

Verwijderd

Topicstarter
Ik heb nu een probleem met de quotes die in een bericht gebruikt kunnen worden..
met addslashes() zet die er / voor, maar dat is niet me bedoeling omdat dat lelijk is als ik die string dan output op het scherm.
gebruik nu ;
PHP:
1
<?$bericht = htmlentities("$bericht",ENT_QUOTES);?>

Maar hij zet nu nog niet de ' of " om in ASCII maar zet er weer een / voor..

Wat moet ik der aan doen...

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

het is de \ trouwens, niet de /
daarbij kan je gewoon zeggen:
htmlentities($bericht, ENT_QUOTES);
(dus zonder " om de var heen)

daarbij heeft addslashes() een contraversie: stripslashes()

Klaar voor een nieuwe uitdaging.


Verwijderd

Topicstarter
Jah, heb hier maar ff wat met ereg replaces wat gewerkt en hier ben ik nu ook uit :)

Laatste probleem;
Ik wil graag dat ze ook de inhoud van het bericht later aan kunnen passen.
Lees daarvoor eerst de file opnieuw uit, poep die in een form waar ze em kunnen aanpassen en stuur dat form weer door naar de page die alles netjes moet wegschrijven in de file..
Alleen weet ik nou niet hoe ik die inhoud op de juiste plek in de file krijg.
Als ik bv. bericht 9 wil aanpassen heeft deze file[8] als array_id (regel 8), en moet file[8] dus worden aangepast en de rest van de file niet..

Ik heb alle array functies op php.net eens langsgelopen, maar kan hier geen functie voor vinden ?!
Is die er wel, en zo niet, wat zou jij doen, ik kom er ff niet uit..

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 27-08 13:53

chem

Reist de wereld rond

dan de gehele file uitlezen, entry 8 aanpassen en alles weer terug schrijven...

Je zou ook alle content in losse files kunnen stoppen - tenzij het er heel veel zijn natuurijk.

Klaar voor een nieuwe uitdaging.


Verwijderd

Topicstarter
Ik ben de draad weer eens kwijt...
Heb een file test2.txt waar steeds een nieuwe datum op een nieuwe regel wordt ingepleurd..
Nu moet ik de laatste datum weten, die dus op de laatste regel staat uitlezen.
PHP:
1
<?$file2="test2.txt";$fp2=fopen($file2,"r");$content2 = fread($fp2,filesize($file2));fclose($fp2);$pimper = explode("\n",$content2);$pimper2= count($pimper);$datum = $pimper3[$pimper2];echo"$datum";?>

Echter $datum blijft leeg... :(

Wat doe ik nu weer fout ?!

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
$pimper3 moet $pimper zijn.... (met $pimper[$pimper2 - 1])

Verwijderd

Topicstarter
Op woensdag 27 maart 2002 23:58 schreef RdeTuinman het volgende:
$pimper3 moet $pimper zijn.... (met $pimper[$pimper2 - 1])
Oeps, typfout..

Maar heb nu dit;
PHP:
1
<?$file2="test2.txt";$fp2=fopen($file2,"r");$content2 = fread($fp2,filesize($file2));fclose($fp2);$pimper = explode("\n",$content2);$pimper2= count($pimper);$datum = $pimper[$pimper2 - 1];echo"$datum";?>

Nog steeds geen ouput :?

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Dan maar een beetje debuggen met print_r($pimper) en echo $pimper2.

Als $pimper al een lege array is, dan zit de fout bij het inlezen...

Verwijderd

Topicstarter
Dat doe diet die allemaal wel goed, en hij leest de array ook wel in.. (Had ik al geprobeerd)
$pimper[0] of $pimper[1] output die gewoon..

Maar dit;
PHP:
1
<?$pimper2= count($pimper);$pimper2--;$datum = $pimper[$pimper2];echo"$datum";?>

Doet die dan weer niet..

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
Dan denk ik dat er meerdere \n ofwel enters aan het einde van je tekst-bestandje staan.

Kijk maar eens met:
PHP:
1
<?echo "<PRE>";print_r($pimper);echo "</PRE>";?>

wat de inhoud van het laatste element is

Verwijderd

Topicstarter
Ouput;
code:
1
2
3
4
5
6
Array
(
    [0] => 27 Maart 2002
    [1] => 27 Maart 2002
    [2] => 
)

Lijkt me niks mis mee

  • Sjaaky
  • Registratie: Oktober 2000
  • Laatst online: 03-09 23:48
Ik geloof dat je het antwoord nu zelf al geeft " [2] => ".

  • RdeTuinman
  • Registratie: Mei 2001
  • Laatst online: 16-08 07:25
tadaaaaa ;)

  • brammetje
  • Registratie: Oktober 2000
  • Laatst online: 12-01-2025
al aan gedacht wat er gebeurt als iemand een | invoert?
Pagina: 1