suche tipps zur Code -verbesserung / vereinfachung

JamesT

Erfahrenes Mitglied
Hallo zusammen,

erstmal vorab ich suche in diesem Thread nicht nach einer Problemlösung ich suche
einfach nach Tipps von euch wie ich es besser machen könnte. :)

Kurz zu mir, dies ist mein erster Versuch PHP zu programmieren, ich habe mich vorher
durch viele Threads dieses Forums gekämpft, Tutorials gelesen, das PHP Handbuch im
Internet und und und... Mit den gesammelten Informationen habe ich dann eine
Druckerdatenbank programmiert, in der man geteste Drucker und Informationen zu deren
Eigenschaften, Schnittstellenkonfigurationen etc. eintragen, löschen, bearbeiten und
suchen kann.

Nun habe ich folgende bitte an euch, ich bin dabei PHP zu lernen, und daher würde
ich es klasse finden, wenn sich einige von euch ein bisschen Zeit nehmen würden meinen
Code zu kommentieren, mir Verbesserungstipps zu geben, all das was mich nach vorne
bringt.

Und ich denke ihr könnt mich nur nach vorne bringen. :)

Ich bin mir sicher das ich vieles viel zu umständlich programmiert habe, aber genau darum
geht es, ich möchte diese Fehler ausmerzen und dadurch lernen, lernen lernen.

Eure Antworten sind kein muss, dennoch würde ich mich freuen, wenn der ein oder
andere hier postet. :)

Im folgenden findet ihr einen Link zur Datenbank und darunter ein zip file, mit sql dump
der datenbank und dem code.

Ich danke euch im voraus für eure Zeit.

Liebe Grüße

Jamest

Zugang zur Datenbank:

user: "test" password: "test11"
http://www.apex-design.de/printerdb
 

Anhänge

  • printerdb.zip
    38 KB · Aufrufe: 27
Zuletzt bearbeitet:
Meine Frage: hättest du dir die ellenlange select-liste ab zeile 412 nicht sparen können, indem du dir die werte mit select group by aus der datenbank ziehst?
Ich hätte mir mehr kommentare gewünscht, aber für eine anfänger arbeit alle achtung.
Im großen und Ganzen finde ich das mit Tipps immer sehr schwer, weil den din-gerechten weg gibt es nicht, stattdessen sind eine ganze reihe von prog-stilen auf den markt und es dauert schon eine weile bis man selbst seinen eigenen stil gefunden hat
 
Ok, ein paar Tips:
  • Längere HTML-Blöcke solltest du nich mit Echo ausgeben, sondern einfach ein ?> vorne und ein <?php hintenransetzen, so dass du den HTML-Code ganz normal in die Datei schreiben kannst.
  • Sowas ist fucking ugly:
PHP:
						  if($row['anschluss']=="intern") echo '<OPTION value="intern" selected>intern</OPTION>';
						  else echo '<OPTION value="intern">intern</OPTION>';
						  if($row['anschluss']=="LPT1") echo '<OPTION value="LPT1" selected>LPT1</OPTION>';
						  else echo '<OPTION value="LPT1">LPT1</OPTION>';
						  if($row['anschluss']=="LPT2") echo '<OPTION value="LPT2" selected>LPT2</OPTION>';
						  else echo '<OPTION value="LPT2">LPT2</OPTION>';
						  if($row['anschluss']=="LPT3") echo '<OPTION value="LPT3" selected>LPT3</OPTION>';
						  else echo '<OPTION value="LPT3">LPT3</OPTION>';
						  if($row['anschluss']=="USB1") echo '<OPTION value="USB1" selected>USB1</OPTION>';
						  else echo '<OPTION value="USB1">USB1</OPTION>';
						  if($row['anschluss']=="USB2") echo '<OPTION value="USB2" selected>USB2</OPTION>';
						  else echo '<OPTION value="USB2">USB2</OPTION>';
						  if($row['anschluss']=="USB3") echo '<OPTION value="USB3" selected>USB3</OPTION>';
						  else echo '<OPTION value="USB3">USB3</OPTION>';
						  if($row['anschluss']=="USB4") echo '<OPTION value="USB4" selected>USB4</OPTION>';
						  else echo '<OPTION value="USB4">USB4</OPTION>';
						  if($row['anschluss']=="USB5") echo '<OPTION value="USB5" selected>USB5</OPTION>';
						  else echo '<OPTION value="USB5">USB5</OPTION>';
						  if($row['anschluss']=="COM") echo '<OPTION value="COM" selected>COM</OPTION>';
						  else echo '<OPTION value="COM">COM</OPTION>';
So ginge es einfacher:
PHP:
$options = array('intern', 'LPT1', 'LPT2', 'LPT3', 'USB1', 'USB2', 'USB3', 'USB4', 'USB5', 'COM');
if (in_array($row['anschluss'], $options)) {
	echo '<option value="'.$row['anschluss'].'" selected>'.$row['anschluss'].'</option>';
}
Wenn ich mir den Code aber so ansehe, würde ich dir empfehlen, dich lieber erstmal intensiv mit HTML und CSS auseinanderzusetzen, bevor du weiter in die PHP-Materie einsteigst – dein HTML ist gelinde gesagt grauenhaft.
 
Vielen Dank schonmal für eure Tipps. :)

@silentwarrior

Danke für deinen Kommentar und dem Tipp zur verbesserung des codes. Ich weiss das das html ziemlich ugly ist. :) Werde das verbessern. :)

Dann mal ne Frage.

Da es ja schon einige Einträge sind hatte ich vor in der liste "alle anzeigen" bei jedem neuen buchstaben eine Leerzeile einzufügen oder sowas wie ab hier buchstabe C.

Ausserdem hätte ich oben ganz gerne eine A-B-C-D-E.... leiste wo man sich nur die einträge von einem bestimmten buchstaben anzeigen lassen kann. Ich habe gestern schon den halben Tag danach gesucht, habe aber keine Beispiele gefunden die ich für meine DB verwenden könnte.

Hättet ihr eine Idee?

Danke und Gruß

Jamest
 
Die Ausgabe nach Anfangsbuchstaben könntest du so realisieren:
Durch deine Liste mit den ganzen Anfangsbuchstaben wird eine Variable an das Script übergeben (z.B. XXX.php?buchstabe=F).
In der mySQL-Abfrage könntest du dann in die WHERE-Bedingung einbauen:
Code:
`druckername` LIKE '".$_GET['buchstabe']."%'
 
Hallo JamesT,

als Tipp kann ich dir auf den Weg geben, arbeite dich in die Funktionsbildung, sowie wenn du soweit bist in die OOP- Sachen von PHP ein, weil bestimmte Sachen, wie die Tabellenbildung usw. kannst du ganz bequem in Funktionen packen und schreibst nicht ewig, den gleichen Kram.

Zum einen, hast du wesentlich weniger Code und zum anderen werden die Dateien, nicht so imens groß. ;) Denn dein Script in verschiedene Dateien auf, macht das Ganze auch gleich wieder Pflegeleichter, da du nicht in den großen Dateien nach bestimmten Abschnitten suchen musst.

Auch wenn ich den Code nur kurz überflogen habe, muss ich sagen, sieht das gar nicht mal schlecht aus, als ich mit PHP angefangen habe, sah mein Code gaaanz anders aus... :)

Gruß StefanR
 
Hallo zusammen :)

ich melde mich mal wieder zurück. Erstmal danke an Stefan für den Kommentar. :)
Wegen den Fehlern in HTML und CSS. :) Ich gelobe Besserung *smile*

Dann nochmal zurück zu meiner Frage wegen der Buchstabenleiste. Meine DB die
ich hier hausintern habe, hat mittlerweile knapp 500 Einträge, und das laden der hauptseite (alle einträge) dauert daher sehr lange.

Ich habe den Tipp von Ceppi versucht zu benutzen, aber irgendwie bekomme ich die WHERE abfrage nicht hin, ich weiss nicht ob mir hier noch hintergrund wissen fehlt oder ich mich einfach zu dumm anstelle, es will einfach nicht funktionieren.

ich habe versucht einfach mal eine Where abfrage zu erstellen die mir alle Druckerhersteller anzeigt die mit H anfangen.

Ich bekomms nich hin, und hoffe ihr könnt mir unter die Arme greifen mit ein paar Tipps.

Viele Grüße

Jamest
 
OK, dann beschreibe ich die SQL-Abfrage noch mal genauer:
Code:
SELECT * FROM drucker WHERE hersteller LIKE 'H%';
Das Prozentzeichen % steht in SQL als Platzhalter für eine beliebige Anzahl anderer Zeichen. Weitere Hilfe findest du in der MySQL-Doku.
 
JamesT, falls du die Performance deines Scripts noch etwas steigern möchtest, empfehle ich dir den Einsatz von AJAX, um die Informationen zu den einzelnen Produkten erst bei Klick auf den »Info«-Link zu öffnen – so könntest du meines Erachtes rund 50% der Querys beim Laden der Seite weglassen.

Falls du dich mit AJAX beschäftigen möchtest, kann ich folgendes Tutorial wärmstens empfehlen (englisch): http://www-128.ibm.com/developerworks/web/library/wa-ajaxintro1.html?ca=dgr-lnxw01MasterAJAX.
 

Neue Beiträge

Zurück