Toon posts:

[php] nieuwste message bovenaan in NG??!

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

Verwijderd

Topicstarter
hallo...ik heb een nieuwsgroep gemaakt in php, hij werk perfect, op 1 ding na, waar ik echt niet uitkom: de nieuwste berichten stan onderaan ipv boven...
|:(
hier het script:

//newsgroup file
$newsgroup = "newsgroup.php";
//datum
$datetime = date('l, F j \a\t g:i A T');
//smilies//
$smile=str_replace(":)","[img]smile.gif>",$msg); $smile=str_replace("\n","<br>",$smile); $smile=str_replace(":(","<IMG[/img]",$smile);
$smile=str_replace(":p","[img]tong.gif>",$smile); $smile=str_replace(":P","<IMG[/img]",$smile);
$smile=str_replace(":D","[img]grin.gif>",$smile); $smile=str_replace(":grin:","<IMG[/img]",$smile);
$smile=str_replace("puke:","[img]puke.gif>",$smile); $smile=str_replace(":fuckyou:","<IMG[/img]",$smile);
$smile=str_replace(":eek:","[img]eek.gif>",$smile); $smile=str_replace(":rolleyes:","<IMG[/img]",$smile);
$smile=str_replace(":mad:","[img]mad.gif>",$smile); $smile=str_replace(";)","<IMG[/img]",$smile);
$smile=str_replace(":?:","[img]confused.gif>",$smile); $smile=str_replace(":smoke:","<IMG[/img]",$smile);
$smile=str_replace(":smoking:","[img]bob.gif>",$smile); $smile=str_replace(":beer:","<IMG[/img]",$smile);
$smile=str_replace(":cheers:","[img]cheers.gif>",$smile); $smile=str_replace("pimp:","<IMG[/img]",$smile);
$smile=str_replace(":army:","[img]army.gif>",$smile); $smile=str_replace(":kill:","<IMG[/img]",$smile);
$smile=str_replace(":ask:","[img]question.gif>",$smile); $smile=str_replace(":O","<IMG[/img]",$smile);
$smile=str_replace(":0","[img]gaap.gif>",$smile); $smile=str_replace(":o","<IMG[/img]",$smile);
$smile=str_replace(":evil:","[img]evil.gif>",$smile); $smile=str_replace(":Q","<IMG[/img]",$smile);
$smile=str_replace(":smartass:","[img]smart.gif>",$smile); $smile=str_replace("8)","<IMG[/img]",$smile);
$smile=str_replace(":cool:","[img]cool.gif>",$smile); //[/img]>
$addname= "You have to enter a name!";
$addmsg= "You have to enter a message!";
$back= "[go back]";
// naam checker
if ($name == "")
{
echo "<center>".$addname."<br>\n";
echo "<center><a href=javascript:history.back()>".$back."</a><br>";
exit;
}
// mmsg checker
if ($msg == "")
{
echo "<center>".$addmsg."<br>\n";
echo "<center><a href=javascript:history.back()>".$back."</a><br>";
exit;
}
//entry
$entry .= "<center><table width=75% border=0 cellspacing=0>
<tr bgcolor=#666666>
<td width=20%>
<div align=left><font face=Arial, Helvetica, sans-serif size=2><a href=mailto:$email>$name</a></font></div>
</td>
<td width=60%>
<div align=center><font face=Arial, Helvetica, sans-serif size=2>$datetime<br>\n</font></div>
</td>
<td width=20%>
<div align=right><font face=Arial, Helvetica, sans-serif size=2><a href=http://$home>$name's homepage</a></font></div>
</td>
</tr>
<tr bgcolor=#999999>
<td colspan=3><font face=Arial, Helvetica, sans-serif size=2 color=#000000> $smile
</font></td>
</tr>
</table><BR>\n";
// submitter
$uitvoerbestand ="newsgroup.htm";
$bestandsindex = fopen($uitvoerbestand,
"a+");
fwrite($bestandsindex, "<BR>");
fwrite($bestandsindex,
$entry);
fclose($bestandsindex);
?>

degen die mij kan helpen is de man ;)....

alvast bedankt :D

  • Kees
  • Registratie: Juni 1999
  • Laatst online: 16-09 17:15

Kees

Serveradmin / BOFH / DoC
append schijft standaard aan het einde van de file, wat je kunt proberen is dat je de file inleest, oude file weggooit, niewe msg erin gooit en dan de rest.

persoonlijk zou ik voor zoiets trouwens veeeeeel liever een dbase gebruiken (mysql/postgresql/access voor mijn part)

"Een serveradmin, voluit een serveradministrator, is dan weer een slavenbeheerder oftewel een slavendrijver" - Rataplan


  • pimlie
  • Registratie: November 2000
  • Laatst online: 15-09 18:06
Als eerst:
Elke keer als je het bestand wegschrijft, schrijf er dan | achter, gevolgd door een timestamp en dan weer door een |.

Dan als je het bestand inleest:
PHP:
1
2
3
4
5
6
7
8
9
<?
$temp = explode("|", $fp);
$stop = sizeof($a) - 1;
for($i=0; $i<=stop; $i++) {
  $a = $temp[$i];
  $i++;
  $b = $temp[$i];
}
?>

Nu heb je dus alle timestamps in $b en alle nieuwspostings in $a. Sorteer nu $b.
PHP:
1
2
3
4
<?
arsort($b); // met behoud van key indeces
reset($b);
?>

Nu heb je de juiste volgorde van indeces. En kan je dus de posts gaan printen.
PHP:
1
2
3
4
5
<?
while(list($key, $value) = each($b)) {
  echo $a[$key]."<br>";
}
?>

Zo zou ik het denk ik doen als ik geen database tot mijn beschikking zou hebben ;)

Verwijderd

Topicstarter
bedankt pimlie...alleen nog een vraag: waar moet ik dan jou deel plaaqtsen, en met $a en $b bedoel je denk ik dus $smile en $datetime???

Verwijderd

Topicstarter
damn, ik kom er nog steess nie uit, iemand andere oplossingen???

  • Grum
  • Registratie: Juni 2001
  • Niet online
lekker omslachtig allemaal dit :P

1/ lees file in (fopen (rw mode) /fread+filesize)
2/ reset filepointer (fileseek meen ik)
3/ fwrite nieuwe text erin
4/ fwrite oude text erin
5/ fclose

TADA!!!!!!!!!!

:P

Verwijderd

Topicstarter
ik heb je raad opgevolgd, en hij lijkt te kloppen, ik heb er dit van gemaakt:
PHP:
1
2
3
4
5
6
7
8
<?
88 $filename = "newsgroup.htm";
89 $fd = fopen ($filename, "a+");
90 $contents = fread ($fd, filesize ($filename));
91 fwrite ($entry, "<BR>");
92 fwrite ($filename);
93 fclose ($fd);
?>

hij opent newsgroup.htm (de file waar alle entry's komen te staan), en kan lezen en schrijven. dan leest hij de filesize, hij schrijft het bericht weg, hij schrijft newsgroup.htm erachteraan, zodat het eerste bericht bovenaanstaat (? toch???)...en hij sluit weer.

maar dan krijg ik bij het indrukken van submit, deze melding:


[error]
Warning: Supplied argument is not a valid File-Handle resource in /web/sites/242/vanisher/www.vanisher.f2s.com/newsgroup/submit.php on line 91

Warning: Wrong parameter count for fwrite() in /web/sites/242/vanisher/www.vanisher.f2s.com/newsgroup/submit.php on line 92
[/error]

ik denk dus dat ik het bericht moet wegschrijven zoals ik dat nu doe, maar dan naar bijv. entry.txt ofzo, en dan ???, tja, ik ben nog niet zo lang bezig met php, dus vandaar...

Verwijderd

Topicstarter
shit, wat een stupid fout van mij, hij doet 't, echt stupid, ik hoefde alleen in mijn html file iets aan te passen, namelijk <!--post here-->... |:(

  • cappie
  • Registratie: Februari 2000
  • Laatst online: 17-05-2025

cappie

all lowercase

waarom heb je dit niet in een database gedaan? last van server restricties?

Aspire to inspire before we expire | profiel | systeem


  • Woef
  • Registratie: Juni 2000
  • Niet online
Op dinsdag 04 december 2001 17:47 schreef cappie het volgende:
waarom heb je dit niet in een database gedaan? last van server restricties?
of php/mysql kennis :P!
Pagina: 1