Verbesserungsvorschläge für txt-newsscript gesucht

ElGrAnDiOs

Mitglied
Hallo,

Ich habe jetzt mein kleines newsscript fertig gemacht und wollte mir jetzt noch ein paar anregungen holen, was ich noch verbessern könnte....

Es basiert auf TXT-Basis und funktioniert soweit 1a ( hab heute noch ein paar bugfixes gemacht)
Dazu muss ich sagen, dass ich mich auf ein anderes script bezogen habe, welche ebenfalls mit txt dateien arbeitet, doch musste ich viel modifizieren, damit es so läuft, wie es soll...

Naja, falls mir jemand helfen kann, noch Fehler o.ä. zu finden, wär ich dankbar.

(Das is alles eine datei, habs nur wegen der Styles getrennt dargestellt)
HTML:
<script language="JavaScript" type="text/JavaScript">
function show(id)
{
    if (document.getElementById("klapptext_" + id).style.display == 'none')
    {
        document.getElementById("klapptext_" + id).style.display = "";
		document.getElementById("klapptextImg_" + id).src = "images/collapse.gif";
    }
    else
    {
        document.getElementById("klapptext_" + id).style.display = "none";
		document.getElementById("klapptextImg_" + id).src = "images/expand.gif";
    }
}
</script>
<style type="text/css">
<!--
tr,td	{ color: #000000; font-family:Verdana; font-size:10px }
A:link             { color: #000000; text-decoration: none; font-family:Verdana; font-size:10px }
A:hover            { color: #02C7FF; text-decoration: none; font-family:Verdana; font-size:10px }
A:active           { color: #000000; text-decoration: none; font-family:Verdana; font-size:10px }
A:visited          { color: #000000; text-decoration: none; font-family:Verdana; font-size:10px }
A:visited:hover    { color: #000000; text-decoration: none; font-family:Verdana; font-size:10px }
A:visited:active   { color: #000000; text-decoration: none; font-family:Verdana; font-size:10px }
-->
</style>
PHP:
<? 

include("settings2.php");

if($goto==""){

$datei = "news.txt"; 
$trenner = "|µ|"; 
$newsline = file($datei); 
$zaehler = 0; 
 
 
foreach($newsline as $number => $wert) 
{ 

  $news = explode($trenner,$wert);

 // schreiben der zeile in ein array 

$klappe_da = $news[10];
$count = strlen($klappe_da);  //Klapptext vorhanden? <4 = NEIN, else JA!
$titel_1 =  substr($news[1],1);
$titel_2 =  substr($news[1],0,1);
$content_1 = substr($news[9],1);
$content_2 = substr($news[9],0,1);

$newsdetail[] = "<tr><td valign=top>
<table border=0 width=100% cellspacing=0 cellpadding=0>
  <tr>
    <td colspan=2><font face=Verdana size=3><b><font color=#02C7FF>$titel_2</font>$titel_1</b></font><br></td>
  </tr>
  <tr>
    <td width=100 valign=top><br><img border=0 src=images/ava.gif width=90 height=90></td>
    <td>
	  <br><font color=#02C7FF>$content_2</font>$content_1<br><br>";

if($count>4) {

$newsdetail[] = "<table width=100%  border=0 cellspacing=0 cellpadding=0>
          <tr>
            <td width=4%><a href=javascript:show('$number')><img src=images/expand.gif width=16 height=16 border=0 id=klapptextImg_$number></a></td>
            <td width=96% valign=middle><a href=javascript:show('$number')> $news[11]</a></td>
          </tr>
        </table>
        <br>

        <table width=100%  border=0 cellspacing=0 cellpadding=3 id=klapptext_$number style=display:none>
          <tr>
            <td>$news[10]</td>
          </tr>
        </table><br>"; 
}

if(strlen($news[4]) or strlen($news[6]) or strlen($news[8]) > 0) {

$newsdetail[] = "<font color=#02C7FF>Q</font>uicklinks: <a href=$news[3] target=_blank>$news[4] </a><a href=$news[5] target=_blank>$news[6] </a><a href=$news[7] target=_blank>$news[8]</a><br><br>";
}

$newsdetail[] = "&nbsp;&nbsp;&nbsp;&nbsp; - <font color=#02C7FF>b</font>y<font color=#02C7FF> #</font>u<font color=#02C7FF>N</font>known<font color=#02C7FF>5</font></td>
  </tr>
  <tr>
    <td width=100>&nbsp;<font color=#02C7FF>f</font>abiO<br>
&nbsp;<font color=#333333><b>Webmaster</b></font></td>
    <td>&nbsp;</td>
  </tr>
</table><hr color=#02C7FF size=1 noshade></tr></td>";

 $zaehler++; 
 } 
 
 
// ausgabe des tabellenkopfes 
 
 echo" 
 <table width=100% align=center cellpadding=0 cellspacing=0>"; 
 
 // ausgabe der einzelnen news
 
 foreach($newsdetail as $temp) 
   { 
   echo $temp; 
   } 
 

 // ausgabe des tabellenfooters 
 
 echo "</table>"; 


	
}
elseif($goto=="postnews"){
	if(!isset($newspost)){
		$datum = date("j.m.y");
		
		?>
HTML:
<form action="<?php echo $surl;?>goto=postnews" method="post">
		<table>
		<tr> <td width="87">Passwort:</td> <td width="144"><input type="password" name="newspost[pw]"></td> <td width="328"></td></tr>
		<tr> <td>Datum:</td> <td><input type="text" name="newspost[datum]" value="<?php echo $datum;?>"></td> <td>TT.MM.JJ</td></tr>
		<tr> <td>News Titel:</td> 
		  <td><input type="text" name="newspost[titel]"></td> 
		  <td>zB Top Match vs. Mousesports </td>
		</tr>
		<tr> <td>News Autor:</td> 
		  <td><input type="text" name="newspost[autor]"></td> 
		  <td>zB fabiO</td>
		</tr>
		<tr> <td>Quicklink #1:</td> 
		  <td><input type="text" id="link1" name="newspost[url1a]"></td>
		  <td><input type="text" name="newspost[url1b]"></td>  
		</tr>
		<tr> <td>Quicklink #2:</td> 
		  <td><input type="text" id="link2" name="newspost[url2a]"></td> 
		  <td><input type="text" name="newspost[url2b]"></td> 
		</tr>
		<tr> <td>Quicklink #3:</td> 
		  <td><input type="text" id="link3" name="newspost[url3a]"></td> 
		  <td><input type="text" name="newspost[url3b]"></td> 
		</tr>
		<tr> 
		  <td valign=top>News Text:</td>
		  <td colspan=2><textarea cols="50" id="text1" rows="5" name="newspost[text]"></textarea></td>
		</tr>
		<tr> 
		  <td>Klapptext Titel :</td> 
		  <td><input name="newspost[klapptext_titel]" type="text" value="mehr..."></td> 
		  <td>zB mehr...</td>
		</tr>
		<tr> 
		  <td valign=top>Klapptext Text:</td>
		  <td colspan=2><textarea cols="50" id="text2" rows="5" name="newspost[klapptext]">ne</textarea></td>
		</tr>
		</table>		
		<br><input type="submit">
		</form>
PHP:
<?php
	}	
	else{
		if($pass!=$newspost[pw]){
			echo "ERROR: falsches passwort!<br><br>[<a href=\"javascript:history.back()\">back</a>]";
		}
		else{
			echo "News erfolgreich gepostet!";
			
			function save($datei, $eintragen) {
    			$fp = fopen($datei, "w");
    			fwrite($fp, $eintragen);
    			fclose($fp); 
  			}

		if(!file_exists("./news.txt")) save("./news.txt","");
		
		function my_nl2br($text){
				  $retvalue="";
				  for ($ii=0; $ii < strlen($text); $ii++){
				    if ($text[$ii]!=chr(13))$text[$ii]=="\n" ? $retvalue .= "<BR>" : $retvalue .= $text[$ii];
				  }
				  return $retvalue;
				}
		
		
			$newsline = file("news.txt");
			$text_html = my_nl2br($newspost[text]);	
			$klapptext_html = my_nl2br($newspost[klapptext]);	
    		$newsline[0] = "$newspost[datum]|µ|$newspost[titel]|µ|$newspost[autor]|µ|$newspost[url1a]|µ|$newspost[url1b]|µ|$newspost[url2a]|µ|$newspost[url2b]|µ|$newspost[url3a]|µ|$newspost[url3b]|µ|$text_html|µ|$klapptext_html|µ|$newspost[klapptext_titel]\n".$newsline[0]; 
			
    		save("./news.txt",implode("",$newsline));
			$newsnumber++;
			
		}
	}
}

?>

Ein kleines Problem hab ich allerdings noch, und zwar gibt es probleme bei dem hover-tag der links...
d.h. bei den Quicklinks, welche in einer News mit Klapptext stehen, funktionieren diese einwandfrei.
Bei denen, ohne einen Klapptext, also nur news + Quicklinks, funktioniert der hover effekt nicht, warum auch immer?

Zum anschauen: klick mich !

So danke schonmal im Vorraus.
Gruß egd
 
Ich hatte eher an Vebesserungen des Codes gedacht und nicht an sowas, denn das script soll ja dazu da sein, auch auf server ohne sql zu laufen :suspekt:
 
Dann schlage ich vor, eine andere Zeichensequenz als Trennmarke zu wählen als „|µ|“. Vielleicht Steuerzeichen, die nicht direkt mit der Tastatur eingegeben werden können, beispielsweise das „INFORMATION SEPARATOR ONE“-Zeichen (U+001F).

Desweiteren solltest du jede Zeichenkette auch als solche kennzeichnen:
PHP:
<?php

	…

	$text_html = my_nl2br($newspost['text']);
	$klapptext_html = my_nl2br($newspost['klapptext']);

	…

?>
 
Zurück