Toon posts:

[php] NG:ik wil maximaal 50 berichten per page

Pagina: 1
Acties:

Verwijderd

Topicstarter
ik heb een php-tje voor een nieuwsgroep geschreven, en er wordt GEEN database gebruikt, hij maakt gewoon van elke bericht een tabel die wordt weggeschreven in de newsgroup file...

de url is http://cgi-bin.spaceports.com/~vanisher/newsgroup.php , dan kun je zien wat ik bedoel, er wordt dus niets in een text file of DB opgeslagen...het wordt rechtstreeks in newsgroup.php gezet...

en nou wil ik dat er max 50 berichten op 1 page passen...en nu vroeg ik me af of dat uberhaupt wel kan zonder database... :?

ik ben geloof ik niet erg duidelijk...dus hier het script:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
<?
// variabelen

$ngfile = "newsgroup.php";
//ng file
$MOTIF = "<!-- Value_Add_Comments -->";
// post plaatsing
//max entrys
$displayStep = 50;
//datum
$datetime = date("d.m.Y / H:i:s");
// 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(":*","<IMG[/img]",$smile);
$smile=str_replace(":C","[img]blush.gif>",$smile);
$smile=str_replace(":x","<IMG[/img]",$smile);
$smile=str_replace(":fuckyou:","[img]fuck.gif>",$smile);
$smile=str_replace(":eek:","<IMG[/img]",$smile);
$smile=str_replace(":rolleyes:","[img]roll.gif>",$smile);
$smile=str_replace(":mad:","<IMG[/img]",$smile);
$smile=str_replace(";)","[img]wink.gif>",$smile);
$smile=str_replace(":?:","<IMG[/img]",$smile);
$smile=str_replace(":smoke:","[img]bob.gif>",$smile);
$smile=str_replace(":smoking:","<IMG[/img]",$smile);
$smile=str_replace(":beer:","[img]beer.gif>",$smile);
$smile=str_replace(":cheers:","<IMG[/img]",$smile);
$smile=str_replace("pimp:","[img]pimp.gif>",$smile);
$smile=str_replace(":army:","<IMG[/img]",$smile);
$smile=str_replace(":kill:","[img]shoot.gif>",$smile);
$smile=str_replace(":ask:","<IMG[/img]",$smile);
$smile=str_replace(":O","[img]gaap.gif>",$smile);
$smile=str_replace(":0","<IMG[/img]",$smile);
$smile=str_replace(":o","[img]gaap.gif>",$smile);
$smile=str_replace(":evil:","<IMG[/img]",$smile);
$smile=str_replace(":Q","[img]smokin.gif>",$smile);
$smile=str_replace(":smartass:","<IMG[/img]",$smile);
$smile=str_replace(":alien:","[img]alien.gif>",$smile);
$smile=str_replace(":cool:","<IMG[/img]",$smile);
// urls doorlaten
function translateHtml($msg)
    {
        global $a, $b, $i;
        if ($a)
        {
            $msg = preg_replace("/(\<a href=\\\\\")(.*)(\\\\\">)(.*)(\<\/a\>)/U","\[a href=\\2\]\\4\\[/a\]", $msg);
        }
        if ($b)
        {
            $msg = preg_replace("/(\<b\>)(.*)(\<\/b\>)/U","[b]\\2[/b]", $msg);
        }
        if($i)
        {
            $msg = preg_replace("/(\<i\>)(.*)(\<\/i\>)/U","[i]\\2[/i]", $msg);
        }
$msg = htmlspecialchars($msg);
        $msg = str_replace("\"","&amp;quot;", $msg);
        $msg = str_replace("\'","&amp;#034;", $msg);
        $msg = str_replace(">","&amp;gt;", $msg);
        $msg = str_replace("<","&amp;lt;", $msg);
        $msg = ereg_replace("[ ]{2,}", " ", $msg);
        $msg = str_replace("\n","<br/>", $msg);
        $msg = stripslashes($msg);
        if ($a)
        {
            $msg = preg_replace("/(\[a href=)(.*)(\])(.*)(\\[\/a\])/U","<a href=\"\\2\">\\4</a>", $msg);
        }
        if ($b)
        {
            $msg = preg_replace("/(\\[b\])(.*)(\\[\/b\])/U","<b>\\2</b>", $msg);
        }
        if ($i)
        {
            $msg = preg_replace("/(\\[i\])(.*)(\\[\/i\])/U","<i>\\2</i>", $msg);
        }
        return $msg;
    }
// check files index
$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;
}
// msg 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=#333333>
    <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=$home>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";

//submit file

    $file_arry = file($ngfile);

    $file = join ("", $file_arry);

    $add = $MOTIF;
    $add .= $entry;

    $file = preg_replace("/$MOTIF/", $add, $file);

    $fp = fopen("$ngfile", "w");
    flock($fp, 1);
    fputs($fp, $file);                                     
    flock($fp, 3);
    fclose($fp);
// teller wegschrijven
//counter showen op NG//
$counter = "<!-- Value_Add_Count -->";
// counter file
$counterfile = "countng.txt";
$insert = $counter;
$insert .= $counter;
$filecount = preg_replace("/$counter/", $insert, $counterfile);
// bestand inlezen //
$fp=fopen ($counterfile, "r");
$count=fgets($fp,1024);
fclose ($fp);
$fw=fopen($filecount,"w");
$cnew=$count+1;
// wegschrijven //
$countnew=fputs($fw,$count+1);
fclose($fw);
?>

Verwijderd

Topicstarter
oeps das een hele lange code....hoe krijg ik die kleurtjes??? :?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Op maandag 31 december 2001 01:08 schreef daandehaan het volgende:
oeps das een hele lange code....hoe krijg ik die kleurtjes??? :?
[ php] ipv [code] gebruiken

Verwijderd

Topicstarter
zo nu heb ik wel kleurtjes :) maar ik heb weken gezocht hoe, maar kan het NERGENS vinden...verder is het hele script OK namelijk, en heb geen zin om nu helemaal aan een Dbase te koppelen, zou niet eens weten hoe het moet... :?

  • Ritch
  • Registratie: December 1999
  • Laatst online: 28-08 17:03
als je nou eens al het smilies omzetten en urls omzetten enzo gedeelte eruit haalt, wordt het al een stuk overzichtelijker....

Verwijderd

Topicstarter
Op maandag 31 december 2001 00:59 schreef daandehaan het volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
<?
// variabelen

$ngfile = "newsgroup.php";
//ng file
$MOTIF = "<!-- Value_Add_Comments -->";
// post plaatsing
//max entrys
$displayStep = 50;
//datum
$datetime = date("d.m.Y / H:i:s");
// check files index
$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;
}
// msg 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=#333333>
    <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=$home>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";

//submit file

    $file_arry = file($ngfile);

    $file = join ("", $file_arry);

    $add = $MOTIF;
    $add .= $entry;

    $file = preg_replace("/$MOTIF/", $add, $file);

    $fp = fopen("$ngfile", "w");
    flock($fp, 1);
    fputs($fp, $file);                                     
    flock($fp, 3);
    fclose($fp);
// teller wegschrijven
//counter showen op NG//
$counter = "<!-- Value_Add_Count -->";
// counter file
$counterfile = "countng.txt";
$insert = $counter;
$insert .= $counter;
$filecount = preg_replace("/$counter/", $insert, $counterfile);
// bestand inlezen //
$fp=fopen ($counterfile, "r");
$count=fgets($fp,1024);
fclose ($fp);
$fw=fopen($filecount,"w");
$cnew=$count+1;
// wegschrijven //
$countnew=fputs($fw,$count+1);
fclose($fw);
?>
zo dan??

Verwijderd

je moet een loopje maken,
en dan +1 doen bij een variable,
als een variable 50 is, dan moet
je de loop doorbreken en de pagina
afsluiten. ik weet nie precies hoe
je dat doet in php want ik doe alleen
perl. je kunt dan aan de volgende pagina
de startid meegeven en dan bij
de 51ste beginnen.

  • jurri@n
  • Registratie: Maart 2000
  • Laatst online: 13:56
Op maandag 31 december 2001 09:25 schreef poepkind het volgende:
ik weet nie precies hoe
je dat doet in php want ik doe alleen
perl
Exact hetzelfde :)
PHP:
1
2
3
4
5
6
7
<?
$count=0;
while ($count<50) {
   # hier wat commando's
   $count++;
}
?>

Verwijderd

Topicstarter
thnx ik gaat het proberen...iemand nog betere suggesties???

Verwijderd

Topicstarter
ik wil btw geen page divider he! gewoon dat als er 50 posts staan, en de 51e komt, dat je dan de laatste post automatisch weghaalt zeg maar, maar niet onderverdelken in pagina's gewoon de laatste post weg dus...

en nee ik ben niet echt ver met PHP, ik dacht laat ik eens wat php leren en ik vind mijn NG goed geslaagd...vandaar dat ik neit alles direct zal begrijpen wat jullie zeggen..

maar bovestaande voor beeld heeft me al een stuk verder geholpen alleen wijst dit op een pagina verdeler.,..klopt dat???

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 14-09 20:56
Op maandag 31 december 2001 19:17 schreef daandehaan het volgende:
ik wil btw geen page divider he! gewoon dat als er 50 posts staan, en de 51e komt, dat je dan de laatste post automatisch weghaalt zeg maar, maar niet onderverdelken in pagina's gewoon de laatste post weg dus...

en nee ik ben niet echt ver met PHP, ik dacht laat ik eens wat php leren en ik vind mijn NG goed geslaagd...vandaar dat ik neit alles direct zal begrijpen wat jullie zeggen..

maar bovestaande voor beeld heeft me al een stuk verder geholpen alleen wijst dit op een pagina verdeler.,..klopt dat???
Waarom zet je al de posts niet in een array, die iedere keer eentje opschuiven?? Zodat de nieuwste no. 1 word en de oudste (no 50) er gewoon "afvalt"??
Dat is toch veel makkelijker? (ik heb je script niet helemaal bekeken, maar het moet eigenlijk overal wel in te pasten zijn :))

Verbouwing


Verwijderd

Topicstarter
wat is een array??? ow laat maar...ik tjeck eerst PHP.net wel ff, had er wat over gelezen daar...thnx 4 de tip! :)

php documentatie roelt btw...heb ik bijna alles van geleerd, toch maar eens dat hele zooitje printen...

Verwijderd

Topicstarter
nah heb op PHP.net ff gekeken..maar ik wordt er niet wijzer uit...je hebt duizenden array function...maar array betekent "rij" / "wachtrij", als ik het goed heb, zet ik dus zoiets neer als:
PHP:
1
2
3
4
<?
//entry bestaat al, dat is de tabel met het bericht enz...
array ($entry);
?>

dan worden alle berichten in een "array" opgeslgen?

maar hoe geef ik elke tabel met post dan een ID ofzo... :? want dan kan ik een soort van ID count maken, en dan lukt het denk wel...maar dat stukkie php hierboven...kan dat dan?

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 14-09 20:56
Op maandag 31 december 2001 21:46 schreef daandehaan het volgende:
nah heb op PHP.net ff gekeken..maar ik wordt er niet wijzer uit...je hebt duizenden array function...maar array betekent "rij" / "wachtrij", als ik het goed heb, zet ik dus zoiets neer als:
PHP:
1
2
3
4
<?
//entry bestaat al, dat is de tabel met het bericht enz...
array ($entry);
?>

dan worden alle berichten in een "array" opgeslgen?

maar hoe geef ik elke tabel met post dan een ID ofzo... :? want dan kan ik een soort van ID count maken, en dan lukt het denk wel...maar dat stukkie php hierboven...kan dat dan?
Een array kun je je voorstellen als een doos, waar vakjes inzitten. Die vakjes geef je een naam, en in de vakjes stop je spullen:
PHP:
1
2
3
4
<?
$my_array[0] = "inhoud nummer 1";
$my_array[1] = "inhoud nummer 2";
?>

of
PHP:
1
2
3
4
<?
$my_array = array(0 => "inhoud nummer 1", 
                  1 => "inhoud nummer 2");
?>

....

De nummers beginnen bij 0 bij het tellen! let daar op. Verder kun je de arrays ipv van een nummer een een letter of zelfs een naam geven (bijv. $my_array[een]).
.....

Multidemensionale arrays zijn er ook. Je kan het zo voorstellen: Wat je eerst had gedaan daarbij heb je alleen de vakjes in de eerste rij een naampje + inhoud gegeven, nu maak je er een tweede de(i??)mensie bij, zo dus:

$multi[0][0] is iets anders dan $multi[0][1] :)
Op die manier kun je dus 't eerste bijv. het nummer van de post maken, en dan 't volgende:
PHP:
1
2
3
<?
$posts[3][titel] = "blaat";
?>

en
PHP:
1
2
3
<?
$posts[3][inhoud] = "Dit is de inhoud van de post";
?>

....

Je kan ook nog veel dieper gaan:
PHP:
1
2
3
<?
$multi[4][5][2458][523][2][653]
?>

enzovoorts >:)

Er is dus veel mogelijk met arrays... :+

edit:

Om een array weer te geven doe je hetzelfde als een gewone variabele:
[php]<?
print($multi[31][24][14]);
?>[/php]

[edit2]
Ik heb ff wat php tags neergezet :+
[/edit2]

Copyright bij mij (DinoRaptor). Zelf geschreven aan de hand van m'n boek

Verbouwing


Verwijderd

Topicstarter
thanx!!! dat is duidelijke uitleg en hier heb ik wat aan...gaat het vanmiddag gelijk doen, ik denk dat ik nu snap wat je bedoelt!

thanx... :)

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 14-09 20:56
Op dinsdag 01 januari 2002 13:30 schreef daandehaan het volgende:
thanx!!! dat is duidelijke uitleg en hier heb ik wat aan...gaat het vanmiddag gelijk doen, ik denk dat ik nu snap wat je bedoelt!

thanx... :)
graag gedaan :)

Verbouwing

Pagina: 1