Gastenboek

Status
Niet open voor verdere reacties.

DarkFeather

Gebruiker
Lid geworden
21 jan 2004
Berichten
134
Okee, denk dat de titel errug onduidelijk is, maar ik wist niet hoe ik mijn probleem kort moet omschrijven.

Het probleem is als volgt. Ik heb een gastenboek geschreven, waar de berichten in een .txt-bestandje worden opgeslagen. De gebruiker vult een formuliertje in en dan wordt het formulier naar het volgende bestand gePOST:

invoeg.php:
PHP:
<?php

 if ($message != '') 
 {
  $message = str_replace ("\n","<br>",$message);
  $message = strip_tags ($message, '<br>');

  $newRow = '<TABLE width="100%"><TR><B><A HREF="mailto:' . strip_tags ($mail) .'">' . strip_tags ($name) .'</A></B><I> schreef op ' . date('d.m.Y H:i') . 
  	    '</I></TR><TR>' . ($message) .
  	    '</TR></TABLE>';
  

	      
  $oldRows = join ('', file ('guestbook.txt') );
  $fileName = fopen ('guestbook.txt', 'w');
  fputs ($fileName, $newRow . chr(13) . chr(10) . $oldRows);
  fclose ($fileName);
 }
 
?>

Nu gaat alles goed, maar de enters in het bericht ($message) worden vervangen door een enter (het wordt zo'n mooi blokje in kladblok) en <BR>. Wat moet ik doen om te zorgen dat het alleen maar <BR> wordt en geen blokje meer?

Als het niet duidelijk is kijk even in de bijlage! (Ff rechtermuisknop en dan opslaan als (of save target as)!
 

Bijlagen

Laatst bewerkt:
als je variable van het bericht bijvoorbeeld $message heet zet je dit neer:

PHP:
$message = nl2br($message);

dat is alles ;)

gebruik het zelf ook bij gastenboeken (alleen dan met mysql DB maar dat maakt verder in dit geval niet uit)
 
Geplaatst door Barry_127
als je variable van het bericht bijvoorbeeld $message heet zet je dit neer:

PHP:
$message = nl2br($message);

dat is alles ;)

gebruik het zelf ook bij gastenboeken (alleen dan met mysql DB maar dat maakt verder in dit geval niet uit)

Hoe bedoel je? Snap niet echt wat je bedoeld. Hoe komt de code er dan uit te zien? En belangrijker hoe werkt het verder?
 
dus:

PHP:
$message = str_replace ("\n","<br>",$message);
//dit hierboven moet dit worden:
$message = nl2br($message)

(had het script niet goed door gelezen :P)
 
de code is goet

ik weet niet maar op zig is dit een maklijk scipt

je bebrukt geen supper globals.
het zouw niet werken op alle server

maar zijn die blokjes dan te zien al laat je het weer zien in IE of ander brouwzer


groeten aart
 
Geplaatst door aartvg
de code is goet

ik weet niet maar op zig is dit een maklijk scipt

je bebrukt geen supper globals.
het zouw niet werken op alle server

maar zijn die blokjes dan te zien al laat je het weer zien in IE of ander brouwzer


groeten aart

Dat niet, maar het probleem is dat ik het script online wil veranderen. En als ik via een script guestbook.txt opvraag worden die blokjes wel omgezet in enters, terwijl het eigenlijk een lange regel moet zijn, zonder enters. Snappie?
 
Geplaatst door Barry_127
dus:

PHP:
$message = str_replace ("\n","<br>",$message);
//dit hierboven moet dit worden:
$message = nl2br($message)

(had het script niet goed door gelezen :P)

Code werkt dus niet zoals ik het wil. De enters moeten gewoon vervangen worden door <BR> en verder moet het bericht op 1 regel komen, anders wordt ie niet goed weergegeven. Hier is de code die guestbook.txt uitleest om het weer te geven.

gastenboek.php:
PHP:
<?php

 $fileName = file ("guestbook.txt");
 $rows = count ($fileName);
  
 if ($rows > 10)
 {
 	if (!isset ($row) )
 	{
 		$row = 0;
 	}
 
 	print ("<table class=\"guestbookLinks\"><tr><td width=\"50%\">");
  
 	if ($row > 0)
 	{
		echo "<div class=\"nextPage\"><Font face=arial size=2><< </FONT><a href=\"gastenboek.php?row=" . ($row - 10) . "\"><FONT FACE=ARIAL SIZE=2>Volgende 10</FONT></a></div>";
	}
	
	print ("</td><td width=\"50%\">");

 	if ( ($rows - $row) > 10)
 	{
		echo "<div class=\"previousPage\"><a href=\"gastenboek.php.php?row=" . ($row + 10) . "\"><Font face=arial size=2>Vorige 10</FONT></a><FONT FACE=ARIAL SIZE=2> >></FONT></div>";
	}
		
	print ("</td></tr></table>");

   	for ($i = $row; $i < ($row + 10); $i++)
	{
		echo $fileName [$i];
	}
 }
 else
 {
  	for ($i=0; $i < $rows; $i++)
  	{
  		echo $fileName [$i];
  	}
 }
  
?>

Het probleem is dus dat elk berichtje op 1 moet komen, omdat ie anders niet goed uitgelezen wordt.
 
Laatst bewerkt:
ja oke
dat snap ik

dan zouw hij zo moeten werken
ik gebruken trouwens altijd die code die jij gebrukten

ook weer wat geleert

groeten aart
 
volgens mij moet nl2br dan werken :S

alleen moet je dat niet in je bastenboek.txt zetten maar in je invoegen.php veranderen wat er in mijn vorige post stond
 
ik denk dan niet dat ik je verder kan helpen :(

ik kan namelijk wel wat php maar zelf werk ik nooit met losse bestanden

maar wel verder suc6 met je gastenboek,

als je er nou helemaal niet uitkomt heb ik er nog wel 1 voor je liggen met mysql
 
wat is nu de bedoeling persies
je wil dat allis in dat txt bestatje op 1 rij staat of dat allis in de php pagina gastenboek.php:
allis op 1 rij staat

of in de bronkode

groeten aart
 
Geplaatst door aartvg
wat is nu de bedoeling persies
je wil dat allis in dat txt bestatje op 1 rij staat of dat allis in de php pagina gastenboek.php:
allis op 1 rij staat

of in de bronkode

groeten aart

De bedoeling is dus dat als iemand een bericht post, dat het in het guestbook.txt op 1 regel komt te staan. Dus dat het invoegen.php alles op 1 regel zet.

Dus iemand post een bericht dan ziet guestbook.txt er zo uit:
Berichtje eerste post (en dan met de codes e.d. erbij)

Na volgende post de volgende post wordt guestbook.txt:

Berichtje tweede post
Berichtje eerste post (en dan met de codes e.d. erbij)

enz.

Gastenboek.php leest namelijk het aantal regels. Aan de hand daarvan wordt bepaald hoeveel berichten er zijn. 10 regels zijn 10 berichten. Als er namelijk meer dan 10 regels wordt er een "nieuwe pagina aangemaakt" en verschijnen een link naar VORIGE.
PHP:
$message = nl2br($message)
Dit werkt dus niet. Hij haalt die stomme blokjes wel weg, maar plaatst zelf wel enters in het bestand. Niet alles komt meer netjes op 1 regel.

Hoop dat mijn probleem zo duidelijker is neergezet.
Wie kan me helpen???
 
open je de txt in internet explorer of gewoon vanaf je HD (nadat je em met ft van internet hebt gehaald)

als je hem namelijk vanaf internet direct opent in je browser kan het zijn dat je browser die <br>'s leest als enters en ze zo ook weergeeft.

dus probeer zonodig hem even down te loaden en dan te bekijken in notepad (a.k.a. kladblok)
 
Geplaatst door Barry_127
open je de txt in internet explorer of gewoon vanaf je HD (nadat je em met ft van internet hebt gehaald)

als je hem namelijk vanaf internet direct opent in je browser kan het zijn dat je browser die <br>'s leest als enters en ze zo ook weergeeft.

dus probeer zonodig hem even down te loaden en dan te bekijken in notepad (a.k.a. kladblok)

Die blokjes worden weergegeven als ik het bestand met ftp van i-net heb gehaald. Maar als ik het bestand open met het script uit dit topic:
http://www.helpmij.nl/forum/showthread.php?s=&threadid=158480
geeft die de blokjes als enters weer. En als ik het bestand dan bewerk en weer opsla staat 1 bericht op meerdere regels, wat dus niet de bedoeling is!

Het moet gewoon mogelijk zijn om het tekst-bestand m.b.v. een script o.d. aan te passen, zonder dat die blokjes weergegeven worden als enters. Duidelijk?
 
ja dat opzich wel maar als hij het in kladblok wel goed weergeeft geeft dit aan dat het online openscript fout is en en niet je gastenboek script

dus daarom maar even testen ;)
 
Geplaatst door Barry_127
ja dat opzich wel maar als hij het in kladblok wel goed weergeeft geeft dit aan dat het online openscript fout is en en niet je gastenboek script

dus daarom maar even testen ;)

Alleen kladblok geeft die blokjes (die dus eigenlijk enters zijn) weer. Ook als ik het knip en plak in word of een willekeurig andere tekstbewerkingsprogramma worden die blokjes weer enters...

Ik moet gewoon een manier hebben die de blokjes gewoon verwijderd uit het bericht voordat het in het tekstbestand wordt geplaatst.

Is er nou niemand die mij kan helpen???????
 
kijk op phpfreakz.nl naar het artikel "MS Word document maken met PHP" en gebruik dit om de input van het formulier op te slaan in een word document.
 
Geplaatst door mvdd
kijk op phpfreakz.nl naar het artikel "MS Word document maken met PHP" en gebruik dit om de input van het formulier op te slaan in een word document.

Dat werkt dus ook niet. Een word-document geeft die blokjes ook gewoon weer als enters.

Ik wil gewoon weten hoe ik ervoor kan zorgen dat die "stomme-*piep*"-blokjes bij het posten al niet in het .txt bestandje geplaatst worden. Weet iemand geen code o.d. om bepaalde tekens gewoon helemaal uit een berichtje te halen?

Zoiets in de geest van:
Verwijder "stomme blokje" uit $message (en dan in php-code)
 
re:

ik dacht aan eregi_replace maar er wordt iedere x naar het gastenboek geschreven dus dan zou je na ieder bericht opnieuw je script met eregi_replace moeten uitvoeren..


[edit]

ehm.. je kunt natuurlijk eerst eregi_replace gebruiken voor de hele boel naar het .txt bestand wordt geschreven.. even niet aan gedacht :) voor meer info over eregi_replace natuurlijk nl.php.net even zoeken in de functielijst

[/edit]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan