Hi !
Habe da ein kleines Forum, leider kann ich keine Kommentare zu den Beiträgen schreiben. Eine neue Hauptkategorie kann ich festlegen, aber sobald ich ein Kommentar dazu schreiben will, wird es nicht in die dafür richtige htm seite gespeichert!
Hier Quelltext:
Code <? #Maximale Menge an Haupteinträgen #werden mehr einträge vorgenommen #wird der jeweils älteste gelöscht. $maxbeitrag=50; #Maximale Anzahl von Einträgen pro Seite #liegen mehr Einträge vor, wird automatisch eine Navigation erzeugt. $maxproseite=5; # Name der Speicherdatei # existiert diese nicht, wird sie beim #ersten eintrag angelegt $maintext="eintraege.txt"; #Forum aufgerufen if(!$sent) { ermitteln(); #ermittelt die vorhandenen Daten if($daten) #schon daten vorhanden { #navigationsleiste schreiben echo '<span class="normal"><b><a href="'.$PHP_SELF.'?sent=neu">neuen Beitrag schreiben </a></b></span><br>'; schreibedaten(); # Daten schreiben } else # noch keine daten vorhanden { echo '<span class="normal">Zur Zeit sind keine Beiträge vorhanden. :-))</span><br><br>'; echo '<span class="normal"><b><a href="'.$PHP_SELF.'?sent=neu">neuen Beitrag schreiben </a></b></span><br>'; } } # Formular für neuen Eintrag aufgerufen # oder neuer Eintrag abgeschickt elseif($sent and ($sent=="neu" or $sent=="neusent")) { #Kopfzeilen schreiben echo '<center><span class="klein"><b> <a href="'.$PHP_SELF.'">zurück zum Forum </a> </b></span><br>'; echo '<span class="normal"><b>Neuer Beitrag:</a> </b></span>'; if($sent=="neusent") # formulardaten abgeschickt { if($nick=="" or $thema=="" or strlen($beitrag)<5) #Pflichtfeld leer? #Fehlermeldung schreiben echo '<span class="normal"><b><br><br>Nickname, Thema oder Beitrag sind leer. Bitte ergänzen</b></span><br><br>'; else { speichern(); #Alles ok , dann eintrag speichern #Kopfzeilen schreiben echo '<center><span class="meldungen"><b>Eintrag wurde gespeichert<br>'; #echo '<a href="'.$PHP_SELF.'">zurück zum Forum </a></b></span></center><br><br>'; exit; } } neuformschreiben(); #Formular für neueingabe erstellen } # formular für eine Antwort abgeschickt? elseif($sent and ($sent=="zeigen" or $sent=="neuzeigen")) { #Kopfzeile schreiben echo '<span class="normal"><b><a href="'.$PHP_SELF.'">zurück zum Forum</a>  <a href="#ANTWORT" >Auf diesen Beitrag antworten </a></b></span><br><hr><br>'; # Pflichtfelder prüfen, wenn leer if($sent=="neuzeigen" and ($nick=="" or strlen($beitrag)<5)) { #fehlermeldung schreiben echo '<span class="normal"><b><br><br>Nickname oder Beitrag sind leer. Bitte ergänzen</b></span><br><br>'; } #Pflichtfelder ok elseif($sent=="neuzeigen" and ($nick!="" and strlen($beitrag)>=5)) { # Eingaben speichern schreibe_antwortdaten(); } # Alle Einträge eines Beitrages anzeigen include("f_".$URL1.".htm"); # antwort formular darstellen antwortform_schreiben(); } ?> <? ### Hier die entsprechenden Functionen # Haupt Einträge auslesen function ermitteln() { global $maintext; global $dat; global $daten; global $PHP_SELF; if(file_exists($maintext)) { $dat=file($maintext); $daten= array(); for($i=0;$i<count($dat);$i++) { $daten[]=split("\|\*\|",$dat[$i]); } } } # Haupteinträge darstellen function schreibedaten() { global $daten; global $maxproseite; global $szpara; global $PHP_SELF; $data=array_reverse($daten); #Neuster beitrag nach vorn #Berechnen der maximalen seitenzahl abhängig vom #vorgegbenen Wert(Eintrag pro seite) $szahl=ceil(count($data)/$maxproseite); if(!$szpara) $szpara=1; $startwert=($szpara*$maxproseite)-$maxproseite; if($szpara<$szahl) { $endwert=($szpara*$maxproseite)-1; } else { $endwert=count($data)-1; } # Navigation schreiben echo '<p><span class="normal"><b>Seite:'; for($i=1;$i<=$szahl;$i++) { if($i!=$szpara) echo '<a href="'.$PHP_SELF.'?szpara='.$i.'"> '.$i.'</a> '; else echo $i; } #darstellen der bisherigen Beiträge #Layout kannst Du selbstverständlich ändern #Die Felder und Feldnamen solltest du beibehlten #oder aber sorgfältig ändern. echo ' von '.$szahl.'</b></span></p>'; echo '<table border="2" width="600" cellspacing="0" cellpadding="0">'; echo '<tr><td width="200" class="kopf"> <span class="normal">von: </span></td><td class="kopf" width="300"><span class="normal">Thema:</span></td> <td class="kopf" width="50"><span class="klein">Antw.:</span></td><td class="kopf" width="50"> <span class="klein">Datum:</span></td><tr>'; for($i=$startwert;$i<=$endwert;$i++) { echo '<tr valign="top"><td> <span class="klein">von:<br>'. $data[$i][2].'<br>mail:<br><a href="mailto:'.$data[$i][3].'">'.$data[$i][3].'</a></span></td> <td><span class="normal"><a href="'.$PHP_SELF.'?sent=zeigen&URL1='.$data[$i][0].'">'.$data[$i][4].'</a></span></td> <td><span class="klein">'.$data[$i][1].'</span></td> <td><span class="klein">'.$data[$i][5].'</span></td></tr>'; } echo '</table>'; } ?> <? #Schreiben der Antwortdaten function schreibe_antwortdaten() { global $email; global $beitrag; global $nick; global $URL1; global $maintext; global $PHP_SELF; $dat=file($maintext); #Auselesen der daten mit den Haupteinträgen $dat1=array(); for($i=0;$i<count($dat);$i++) { $dat1[$i]=split("\|\*\|",$dat[$i]); # Datensatz zerlegen } for($i=0;$i<count($dat1);$i++) { if($dat1[$i][0]==$URL1) # Passendereintrag (Haupteintragnummer) gefunden $dat1[$i][1]=$dat1[$i][1]+1; #Zahelervariable erhöhen(der zweite eintrag in der Datenzeile) } # Datei öffnen und wert zurückschreiben $dat=fopen($maintext,"w"); for($i=0;$i<count($dat1);$i++) { fputs($dat,$dat1[$i][0]."|*|".$dat1[$i][1]."|*|".$dat1[$i][2]."|*|".$dat1[$i][3]."|*|".$dat1[$i][4]."|*|".$dat1[$i][5]."|*|\n"); } fclose($dat); # Datei mit den Beiträgen für den Haupteintrag öffnen $tempdat=fopen("f_".$URL1.".htm","a"); # Antwortdaten dazuschreiben $temptext='<br><br><table width="600" cellspacing="0">'; $temptext=$temptext.'<tr><td width="50%" class="kopf"><span class="normal"><b>Antwort von:</b>'.$nick.'<br>Mail:<a href="mailto:'.$email.'">'.$email.'</a></span></td>'; $temptext=$temptext.'<td width="50%"class="kopf" align="right"><span class="normal"><b>vom:</b>'.date("d.m.y:H.i").'</span></td> </tr>'; $temptext=$temptext.'<tr><td colspan="2"><span class="normal">'.stripslashes(nl2br(htmlspecialchars($beitrag))).'</span></td></tr>'; $temptext=$temptext.'</table>'; fputs($tempdat,$temptext); fclose($tempdat); #Formularfelder löschen $nick=""; $beitrag=""; $email=""; } ?> <? #Hier das erstellen des Antwortformulars function neuformschreiben() { global $nick; global $thema; global $beitrag; global $email; global $PHP_SELF; ?> <center> <form action="<?echo $PHP_SELF ?>" method="post"> <input type="hidden" name="sent" value="neusent"></input> <span class="klein">Nickname:(Pflichtfeld)</span><br> <input type="text" name="nick" value="<?echo stripslashes(nl2br(htmlspecialchars($nick)))?>" size="50" ></input> <br> <span class="klein">Email:</span><br> <input type="text" name="email" value="<?echo stripslashes(nl2br(htmlspecialchars($email)))?>" size="50" ></input> <br> <span class="klein">Thema:(Pflichtfeld)</span><br> <input type="text" name="thema" value="<?echo stripslashes(nl2br(htmlspecialchars($thema)))?>" size="50" maxlength="50" ></input> <br> <span class="klein">Beitrag:(Pflichtfeld)</span><br> <textarea name="beitrag" rows="10" cols="40" ><?echo stripslashes($beitrag)?></textarea> <br> <input type="submit" name="senden" value="senden"></input> </form> </center> <? } ?> <? ## function zum Abspeichern eines neuen Eintrags function speichern() { global $maintext; global $nick; global $email; global $thema; global $beitrag; global $maxbeitrag; global $PHP_SELF; $anzahl=0; if(file_exists($maintext)) { $dat=file($maintext); $anzahl=count($dat); $tempnr0=split("\|\*\|",$dat[count($dat)-1]); $tempnr=$tempnr0[0]+1; } else { $dat=array(); $tempnr=1; } $zeit=date("d.m.y:H.i"); $temptext=$tempnr."|*|0|*|".stripslashes(nl2br(htmlspecialchars($nick))); $temptext=$temptext."|*|".stripslashes(nl2br(htmlspecialchars($email))); $temptext=$temptext."|*|".stripslashes(nl2br(htmlspecialchars($thema))); $temptext=$temptext."|*|".$zeit."|*|\n"; $dat[count($dat)]=$temptext; $tempdat=fopen("f_".$tempnr.".htm","w"); $temptext='<table width="600" cellspacing="0">'; $temptext=$temptext.'<tr><td colspan="2"> <span class="normal"><b>Thema:</b>'.stripslashes(nl2br(htmlspecialchars($thema))).'</span><br> </td></tr>'; $temptext=$temptext.'<tr><td width="50%" class="kopf"><span class="normal"><b>Beitrag von:</b>'.$nick.'<br>Mail:<a href="mailto:'.$email.'">'.$email.'</a></span></td>'; $temptext=$temptext.'<td width="50%"class="kopf" align="right"><span class="normal"><b>vom:</b>'.$zeit.'</span></td> </tr>'; $temptext=$temptext.'<tr><td colspan="2"><span class="normal">'.stripslashes(nl2br(htmlspecialchars($beitrag))).'</span></td></tr>'; $temptext=$temptext.'</table>'; fputs($tempdat,$temptext); fclose($tempdat); $tempdat=fopen($maintext,"w"); if($anzahl>=$maxbeitrag) $tempi=$anzahl-($maxbeitrag-1); else $tempi=0; if($tempi>0) { for($i=0;$i<$tempi;$i++) { $tempnr0=split("\|\*\|",$dat[$i]); $tempnr=$tempnr0[0]; unlink("f_".$tempnr.".htm"); } } for($i=$tempi;$i<count($dat);$i++) { fputs($tempdat,$dat[$i]); } fclose($tempdat); } ?> <? # Function zum Erstellen der Antwortform function antwortform_schreiben() { global $nick; global $email; global $beitrag; global $URL1; global $PHP_SELF; ?> <center> <a name="ANTWORT"></a><br> <span class="normal"><b> Antwort schreiben:</b><br> <form action="<?echo $PHP_SELF ?>" method="post"> <input type="hidden" name="sent" value="neuzeigen"></input> <input type="hidden" name="URL1" value="<?echo $URL1 ?>"></input> <span class="klein">Nickname:(Pflichtfeld)</span><br> <input type="text" name="nick" value="<?echo stripslashes(nl2br(htmlspecialchars($nick)))?>" size="50" ></input> <br> <span class="klein">Email:</span><br> <input type="text" name="email" value="<?echo stripslashes(nl2br(htmlspecialchars($email)))?>" size="50" ></input> <br> <span class="klein">Beitrag:(Pflichtfeld)</span><br> <textarea name="beitrag" rows="10" cols="40" ><?echo stripslashes($beitrag)?></textarea> <br> <input type="submit" name="senden" value="senden"></input> </form> </center> <? } ?>