Schwuffi: Bewertung: Ist dieses Skript einen Pfifferling wert?

Beitrag lesen

Hallo,

ich hab gerade quasi mein erstes Skript vollendet und wollte mal von den Fachleuten hier hören, ob das denn auch etwas taugt oder man es lieber so wie es ist zum Mond schießen sollte :)

Es ist keinesfalls perfekt und man kanns daher bestimmt eleganter machen, aber wie gesagt - das ist mein ersters Mal.

Das ganze soll ein Lexikon darstellen. Über die Variable $buchstb wird erstmal eine Übersicht aller Begriffe mit dem gleichen Anfangsbuchstaben erstellt, über die Variable $wort wird dann eben eine Erklärung zu einem Wort ausgegeben.

Die DB enthält folgende Felder:

id
buchstabe (zur Selektion nach Anfangsbuchstabe)
begriff (Ausgabe des jew. Begriffs in der Tabelle usw.)
url
definition
wort (entspricht im Grunde dem Feld "Begriff" allerdings hab ich hier Umlaute o.ä. durch ae, ue usw. ersetzt und überlange Worte abgekürzt, damit es keine Probleme in der URL bzw. beim Verlinken gibt; weiß nicht ob das sein muss, erschien mir aber sinnvoll).

Das Skript sieht dann so aus (nicht lachen ;)):

<?php  
  
  #######  
  #Schutz vor SQL-Injections  
  #######  
  
  if(get_magic_quotes_gpc() == false)  
  {  
     $buchstb = addslashes($_GET['buchstb']);  
     $wort = addslashes($_GET['wort']);  
  }  
  else  
  {  
      $buchstb = $_GET['buchstb'];  
      $wort = $_POST['wort'];  
  }  
  
  
  $title = "Lexikon: $buchstb";  
  include("../mysql/connect.php");  
  
  #######  
  #Anzahl an Spalten der Tabelle festlegen  
  #######  
  
  $spalten = 4;  
  $i=0;  
  
  echo "<h1>Lexikon</h1>  
 <b>$buchstb</b>";  
  
  
  #######  
  #Tabelle mit Begriffen des gewaehlten Anfangsbuchstaben anlegen  
  #######  
  
  $query = "SELECT begriff, url FROM lexikon WHERE buchstabe = '$buchstb'" or die(mysql_error());  
  $result = mysql_query($query);  
  while($row = mysql_fetch_object($result))  
    {  
    if(($i%$spalten) == 0)  
 {  
 echo "</tr>\n\t<tr>\n\t";  
    }  
    echo "\t<td><a href=\"$row->url\">$row->begriff</a></td>\n\t";  
    $i++;  
    }  
    if(($i%$spalten) == 0)  
    {  
    echo "</tr>\n</table>";  
 }  
 else  
 {  
    echo "\t<td colspan=\"".($spalten-($i % $spalten))."\">&nbsp;</td>\n\t</tr>\n</table>";  
    }  
  
    #######  
    #Seite abschließen falls kein Wort oder zum Wort kein Buchstabe angegeben wurde  
    #######  
  
    if(($wort == "") OR (($buchstb == "") AND ($wort != "")))  
    {  
    echo "<div id=\"fuss\" ><a href=\"#top\" title=\"Nach oben\">Nach oben</a></div></div>";  
 include("../foot.php");  
 }  
  
 #######  
 #Ausgabe der Defintion des jeweiligen Wortes  
 #######  
  
 else  
 {  
 $query_wort = "SELECT buchstabe, definition FROM lexikon WHERE wort = '$wort'" or die (mysql_error());  
     $result_wort = mysql_query($query_wort);  
     while($row = mysql_fetch_object($result_wort))  
      {  
  
      #######  
      #Ausgabe nur wenn das Wort auch mit dem angegebenen Buchstaben beginnt, sonst Seite abschließen  
      #######  
  
      if($row->buchstabe == $buchstb)  
  {  
  echo "<h1>$begriff</h1>";  
  echo $row->definition;  
  echo "</div>";  
  include("../foot.php");  
  }  
  else  
  {  
  echo "<div id=\"fuss\"><a href=\"#top\" title=\"Nach oben\">Nach oben</a></div></div>";  
  include("../foot.php");  
  }  
  }  
 }  
?>

Was mir selbst besonders missfällt (ohne überhaupt zu wissen, wie gut/schlecht das Skript ist), ist der letzte Teil ab der Ausgabe der Begriffserklärung. Ist es überhaupt sinnvoll, dass alles in eine Skript zu stecken?

Die Zeile if(($wort == "") OR (($buchstb == "") AND ($wort != ""))) hab ich erstellt, da es sonst möglich ist, z.B. händisch die URL zu ändern. D.h. man hätte z.B. die Seite index.php?buchstb=A und fügt daran &wort=Linse an; damit hätte man oben die Liste mit allen Worten mit Buchstabe "A" und darunter die Erklärung eines Wortes mit einem anderen Buchstaben. Ist zwar nicht weiter schlimm, aber soll halt nicht sein.

Was sagt ein Profi oder zumindest Nicht-absoluter-Laie dazu? :)