Korrekter Seitenaufbau
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
all
aufruf
beispiel
browser
code
dank
datei
design
einbinden
formular
funktion
header
index
jahr
kopf
mache
machen
projekt
url
webseite
-
Hallo
Als Vorwort: Ich scripte jetzt seit einiger Zeit als Hobby irgendwelche Kleinigkeiten. Meistens einfach hier im Forum, wenns was zu helfen gibt, oder wenn ich gerade Lust habe etwas auszuprobieren. Da sind mir die "Normen" eigentlich bekannt und ich kenne mich damit aus. Am besten mit JS, PHP geht mit Google eigentlich auch gut und HTML&CSS ist eh kein Problem.
Richtig begonnen habe ich so vor einem Jahr, da war das erste ein Projekt für die Matura eines Freundes in Verbindung mit Physik. Gleich darauf noch als ein Geburtstagsgeschenk für einen Kollegen, den ich leider nicht persönlich kenne ein Snake-Spiel mit JavaScript, bei dem er dann mit Punkten sich seine Geschenke freischalten konnte.
Die beiden Projekte haben funktioniert, aber waren, nennen wir es mal nicht so sauber. Dann habe ich einfach mit so kleinen Dingen, wie eben hier auf Lima-City Erfahrungen gesammelt und vor einziger Zeit habe ich mal mit einer Seite begonnen, bei der man Umfragen erstellen konnte und dann abstimmen. Alles hat eigentlich funktioniert, war sicher auch noch nicht perfekt, aber konnte sich sehen lassen, nur mit dem Seitenaufbau war ich überhaupt nicht zufrieden.
Zum einen habe ich damals noch gar nicht darauf geachtet, dass es auch Leute gibt, die JavaScript deaktiviert haben, bzw habe auch nicht wirklich auf ältere Browser geachtet. Das wurde dann mal später kurz hier im Forum angesprochen und ich habe mir mal Gedanken darüber gedacht, aber viel mehr auch nicht. Wenn ich das richtig verstehe, könnte man das so lösen, oder?
Mit PHP überprüfe ich, ob JavaScript unterstützt wird, wenn ja, normal ausführen, wenn nein eine PHP Funktion ausführen. Oder man könnte auch alles in PHP schreiben, aber um das Neuladen der Seite das ganze, wenn JavaScript aktiviert ist per Ajax ausführen. Stimmt das so? Bzw gibt es dazu Tips, das einfach allgemein zu beachten.
Zum Browsersupport, da ist eigentlich klar, ich muss direkt drauf achten und vielleicht auch mal testen. Aber trotzdem noch eine Frage. Ich habe bisher eigentlich mit reinem JavaScript gearbeitet, auch bei komplizierten Dingen, die man z.B. mit jQuery in wenigen Zeilen lösen könnte. Ausserdem gibts ja da schon Crossbrowser unterstützung. Würdet ihr mir empfehlen da umzusteigen? Wenn ja, wie mache ich das am besten? Gibt ja nicht jede Funktion, wie verschaffe ich mir nen Überblick, was alles damit einfacher geht und was man einfach weiterhin mit normalem JS löst?
Und jetzt noch zum Seitenaufbau allgemein. Das ist eigentlich ein riesen Thema, meiner Meinung nach. Aber zuerst mal eine bestimmte Frage. Wenn ich überall den gleichen Header einbinden will und den gleichen Footer, erstelle ich da dann eine .html Datei, die ich z.B. als header.html abspeichre und binde dann diese mit PHP include ein? So habe ich es mal früher gelöst, ist das auch der Standard?
Und wenn ich bei allen noch verschiedene JavaScripts oder CSS einbinden will, muss ich dann 3 html Dateien einbinden? Auch da wär ich um allgemeine Tips froh, wenn ich auf was bestimmtes nicht eingegangen bin.
Meine bestimmten Fragen wurden jetzt eigentlich erwähnt, aber ich kenne mich da so gut wie nicht aus. Ich hab das einfach so gemacht, dass ich einfach mal was probiert hab und dann war ich unzufrieden, hauptsächlich wegen den erwähnten Dingen. Wie schon gesagt, die Scripts selber sind kein Problem, aber wenn ich dann tatsächlich nochmal eine Webseite aufbauen will, ist das was komplett anderes.
Ich hab nämlich vor im Sommer, wenn ich mal wieder Zeit hab etwas komplett fertig zu stellen und auch mal zu veröffentlichen, alles andere war bisher privat. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ob Javasscript im Browser aktiviert ist oder nicht, kannst du auch einfach mit noscript abfangen. Da brauchst du sonst nichts weiter überprüfen. Viele CMS zeigen dann an, dass man doch javascript dann aktvieren sollte, um in den Genuss der Webseite zu kommen.
Wenn ich eine Webseite erstelle, dann mache zuerst ein Design komplett fertig und Teile es dann wie folgt in PHP-Dateien auf:
header.php
navigation.php
index.php / bzw. die Seite die dann gerade dran ist
Je nach Design und was ich so brauche, einzelne Boxen oder gesamte Leisten
footer.php
Das ganze habe ich so mal angefangen, damit , wenn man einzelne Teile ändern möchte, immer nur eine Datei ändern musst.
In PHP deshalb, weil du z.B. möchtest du ja verschiedene CSS oder js Dateien einbinden. So kannst du z.B. $css in der index deklarieren mit der Datei die als CSS oder Javascript eingebunden werden soll und in der header.php machst du dann den entsprechenden include daraus. So kannst du auch für jede einzelne Seite deine Meta-Tags und den Title Tag spezifisch angeben. Genauso, wenn man mal einen onload benötigt und und und..
In der Regel habe ich auch noch eine main.php, wo ich wiederkehrende Funktionen drin habe, wie für Datenbank Zugriffe, validieren von Usereingaben usw.
Wie man was Handhabt ist eigentlich egal, die Hauptsache ist, dass man es für sich gut Dokumentiert, so dass man auch noch nach einem Jahr weiss, was wo passiert. Einen wirklichen Standart gibt es da eigentlich nicht.
-
all-in1 schrieb:
Ob Javasscript im Browser aktiviert ist oder nicht, kannst du auch einfach mit noscript abfangen. Da brauchst du sonst nichts weiter überprüfen. Viele CMS zeigen dann an, dass man doch javascript dann aktvieren sollte, um in den Genuss der Webseite zu kommen.
Ich dachte da nicht wirklich an eine Meldung, sondern eher daran, dass wenn JavaScript aktiviert ist, alle Funktionen auch mit JS laufen, und sobald es deaktiviert wird, die PHP Funktionen. Ich würd meine Seite eben gerne dynamisch gestalten. Irgendwie hatte ich im Kopf, dass man das ganz einfach mit PHP überprüfen kann, aber ist ja totaler Blödsinn.
So als Beispiel: Wenn ich eine Seite habe, die "unendlich" lang ist und ich lös das mit JavaScript so, dass nur 20 Posts angezeigt werden und sobald ich nach unten scrolle, laden nochmal 20 nach, hau ich dann einfach noch einen noscript Tag rein, der z.B. noch auf Seiten verlinkt?
all-in1 schrieb:
Wie man was Handhabt ist eigentlich egal, die Hauptsache ist, dass man es für sich gut Dokumentiert, so dass man auch noch nach einem Jahr weiss, was wo passiert. Einen wirklichen Standart gibt es da eigentlich nicht.
Okey, war aber gut mal zu hören, wie du das löst. So ähnlich habe ich das auch mal gemacht, nur war ich mir nicht sicher, ob das wirklich der Standard ist.
Und was meint ihr zu jQuery?
Beitrag zuletzt geändert: 28.5.2014 11:50:10 von c143 -
Wegen des noscripts oder überprüfen, hängt immer vom jeweiligen Einsatz Zweck ab.
Ebenso jQuery, ich nutze es für einiges und hängt auch vom Einsatzzweck ab. Ab und an nutze ich auch einfache Javascripts, entweder weil es damit einfacher als mit jQuery ist oder die Ladezeit geringer ist, wenn jQuery in der Datei gerade eh nicht genutzt wird. Meistens wird jQuery ja doch schon als Standart Bibliothek geladen, dann macht es natürlich keinen Sinn, da noch eine andere große Bibliothek zu verwenden. jQuery binde ich aber in der Regel über Google Code ein, hat zwei Vorteile. Zum einen muss man sich selbst nicht ständig um das Update bemühen und kann so immer auf die neueste Version zugreifen. Und zum anderen senkt es die Ladezeit, da der Browser jQuery von einer anderen Domain lädt, kann er von der eigenen Domain ein zweites Javascript gleichzeitig mitladen. Nachteilig wäre natürlich, wenn Google Code gerade nicht erreichbar wäre oder die Zugriffe so hoch sind, das dort ein Engpass entsteht. -
In Bezug auf den Einsatz von jQuery versuche ich immer den Grundsatz ganz oder gar nicht durchzuhalten. Wenn ich einmal mit jQ angefangen habe, z.B. im Zusammenhang mit dem Einsatz eine Fremdplugins, dann mache ich auch den eigenen Kleinkram mit jQ.
Zu header.php, footer.php usw.
Ich versuche, PHP- und HTML-Code voneinander zu trennen und arbeite nach Möglichkeit mit Templates und Subtemplates. In letzter Zeit ist mir in diesem Zusammenhang das Fat Free PHP-Framework ans Herz gewachsen - ist auf jeden Fall mal einen Blick wert. -
Zu der Template-Sache:
wenn ich eine Webseite baue, die nur statischen Inhalt (maximal noch JavaScript) beinhaltet, dann habe ich vor einiger Zeit einen kleinen »Compiler« gebaut, der mir mit Hilfe einer Vorlage und den Texten für jede Seite eine fertige Webseite, die nur noch aus HTML-, CSS- und Bild-Dateien besteht erstellt sowie alle Daten mit Tools wie dem »htmlcompressor« bearbeitet. Das heißt: mehrere einzelne Seiten bekommen durch den Compiler und das Template ein einheitliches Layout + Navigation.
Getrennte Logik und Darstellung ist, falls es sich um dynamischen Inhalt handelt (PHP, JavaScript, …), sowieso ein Muss.
c143 schrieb:
Das funktioniert gar nicht, da PHP am Server, JavaScript in dem Fall aber erst danach am Client ausgeführt wird.
Mit PHP überprüfe ich, ob JavaScript unterstützt wird […] -
mein-wunschname schrieb:
[...]arbeite nach Möglichkeit mit Templates
Ist nicht so meins. Und auch die Idee von hackyourlife nicht wirklich. Meine Webseiten sind weniger 'normaler' Inhalt, sondern hauptsächlich Funktionen, die ausgeführt werden. Ich bevorzuge irgendwie die Variante von all-in1, hab das auch früher schon so gemacht. Das Design eigentlich immer einbinden und alles individuelle kann noch hinzugeschrieben werden.
Ich denke ich beginn da im Sommer einfach mal, versuch das so gut wie möglich umzusetzen und auf alles zu achten, was ich in der Vergangenheit falsch gemacht habe und bei bestimmten Problemen melde ich mich.
hackyourlife schrieb:
Das funktioniert gar nicht, da PHP am Server, JavaScript in dem Fall aber erst danach am Client ausgeführt wird.c143 schrieb:
Selbst auch noch erkannt, aber danke.
Irgendwie hatte ich im Kopf, dass man das ganz einfach mit PHP überprüfen kann, aber ist ja totaler Blödsinn.
Danke für die Antworten. :-)
EDIT: Als Beispiel habe ich einen Link und möchte ein Formular öffnen. Mit Javascript als Popup (Hab das einfach durch nen einfachen Alert ersetzt) und ohne Javascript werde ich einfach auf eine Seite mit dem Formular weitergeleitet. Demo
Passt das so, oder wie macht man das am besten?
Beitrag zuletzt geändert: 28.5.2014 16:41:39 von c143 -
c143 schrieb:
EDIT: Als Beispiel habe ich einen Link und möchte ein Formular öffnen. Mit Javascript als Popup (Hab das einfach durch nen einfachen Alert ersetzt) und ohne Javascript werde ich einfach auf eine Seite mit dem Formular weitergeleitet. Demo
Passt das so, oder wie macht man das am besten?
Zu deiner Frage krame ich jetzt noch einmal die Überschrift deines Themas raus:
Korrekter Seitenaufbau
Dazu zählt für mich: man trifft eine Grundsatzentscheidung darüber, ob
a) zur Darstellung des Inhaltes der Website der Einsatz von JavaScript unverzichtbar ist. Dann mache ich den Besucher in gegebener Form darauf aufmerksam, dass entweder sein Browser oder seine Browsereinstellungen (bzw. Einstellungen anderer Programme) für die Nutzung des Informationsangebotes der Website nicht geeignet sind
oder
b) man erreichen möchte, dass der Inhalt unter allen Umständen zugänglich ist und adäquat dargestellt wird, also meinetwegen auch mit einem reinen Textbrowser wie Lynx.
Du hast ja eigentlich selbst schon geschrieben:
Irgendwie hatte ich im Kopf, dass man das ganz einfach mit PHP überprüfen kann, aber ist ja totaler Blödsinn.
Das hast du also schon einmal erkannt, aber anscheinend kannst du den Blödsinn nur schwer aus deinem Kopf verdrängen.
Nunja, man kann, wenn man unbedingt Blödsinn verzapfen will, ein wenig herumtricksen, Stichwort Session-Variablen. Der Grundaufbau eines PHP-Scriptes könnte so aussehen:
<?php session_start(); if(isset($_GET['aktiv']) AND isset($_SESSION['aufruf']) AND ($_SESSION['aufruf'] == "ok")) { $_SESSION['aktiv'] = ($_GET['aktiv'] == '1'); } if($_SESSION['aktiv'] === NULL) { $_SESSION['aufruf'] = "ok"; echo '<script type="text/javascript">window.location="'.$_SERVER['PHP_SELF'].'?aktiv=1&'.htmlspecialchars(SID).'";</script>'; $_SESSION['aktiv'] = false; } else $_SESSION['aufruf'] = ""; echo $_SESSION['aktiv'] ? "JavaScript ist aktiv<br>" : "JavaScript ist <b>nicht</b> aktiv<br>"; ?>
Ich muss noch dazu sagen, dass ich mir dieses Script nicht selbst ausgedacht habe, vor 4 oder 5 Jahren habe ich es so oder so ähnlich in einem Forum gefunden. Weiß aber nicht mehr wo. In der praxis habe ich es letztendlich nie eingesetzt.
-
mein-wunschname schrieb:
Richtig.
[...] aber anscheinend kannst du den Blödsinn nur schwer aus deinem Kopf verdrängen.
mein-wunschname schrieb:
Ich denke unverzichtbar ist es echt in den seltensten Fällen. Nur bin ich der Meinung man kann vieles einfach 'besser' mit JS lösen. Funktionieren tut beides, aber bei JS ist alles einfach angenehmer für den Benutzer, empfinde ich zumindest so.
man trifft eine Grundsatzentscheidung
Ich wollte jetzt eben beides kombinieren. Ich nehm nochmal das Beispiel mit dem automatischen nachladen beim scrollen. Viel angenehmer, als immer auf die nächste Seite zu gehen. Doch möchte ich sie auch für jeden zugänglich machen, der JS lieber deaktiviert hat. Ist es also völliger Blödsinn mit noscript und PHP noch eine Seitenverlinkung einzufügen?
mein-wunschname schrieb:
Auf diese Variante bin ich auch schon gestossen, aber selbst die hielt ich für zu grossen Blödsinn. . Ich dachte mir einfach, wenn das mit noscript schon so einfach funktioniert, warum sollte man das dann nicht so umsetzen?
Nunja, man kann, wenn man unbedingt Blödsinn verzapfen will, ein wenig herumtricksen
Was spricht dagegen? Und wenn ich solche Dinge echt lieber einbauen würde, dann einfach eine Meldung mit noscript einfügen und die anderen einfach vernachlässigen? Weil mit allen Nutzern verglichen, ist der anteil mit daktivierten JS doch recht klein und deswegen will ich irgendwie nicht darauf verzichten. -
c143 schrieb:
Und jetzt noch zum Seitenaufbau allgemein. Das ist eigentlich ein riesen Thema, meiner Meinung nach. Aber zuerst mal eine bestimmte Frage. Wenn ich überall den gleichen Header einbinden will und den gleichen Footer, erstelle ich da dann eine .html Datei, die ich z.B. als header.html abspeichre und binde dann diese mit PHP include ein? So habe ich es mal früher gelöst, ist das auch der Standard?
Und wenn ich bei allen noch verschiedene JavaScripts oder CSS einbinden will, muss ich dann 3 html Dateien einbinden? Auch da wär ich um allgemeine Tips froh, wenn ich auf was bestimmtes nicht eingegangen bin.
Gerne trennen Entwickler die Logik (in dem Fall PHP) vom Design (HTML, CSS). Dazu eignen sich zB Templatesysteme wie zB Smarty.
Ein noch etwas weiter greifender Ansatz ist das MVC-Pattern. Damit trennt man die Logik vom Design (Model (Daten), View (Template), Controller (steuert das Ganze)). Dazu braucht man dann allerdings etwas Verständnis von objektorientierter Programmierung. Ein eigenes MVC umzusetzen ist nicht ganz einfach, da man viel Arbeit in die Architektur stecken muss. Es gibt aber recht gute Frameworks dazu, zB CakePHP, ZendFramework, Codeigniter, Symfony, uvm.
Für kleinere Projekte reicht ein Templatesystem vollkommen aus (oder für eine statische "ein-paar-Seiten-Webseite" auch include(), für größere Projekte mit viel Logik dahinter empfiehlt sich ein MVC-Framework). -
Frameworks haben aber auch Nachteile. Erstens muss man sich da rein finden und zweitens verlangsamen einige Frameworks doch die Auslieferung der Webseite bzw. erhöhen die Serverlast. Und Zendframework steht einem nicht überall zur Verfügung.
-
all-in1 schrieb:
Jap, und meine Projekte sind nicht so riesig, dass ich sie brauchen würde, deshalb, wie schon gesagt, verzichte ich darauf. Aber danke für die Informationen.
Frameworks haben aber auch Nachteile.
Ich denke, ich werde es so lösen, wie all-in1 vorgeschlagen hat. Hab mir vorhin noch mal kurz angesehen und das wird so passen. Ich werde auch versuchen mal in jQuery rein zu finden, hab mir da in letzter Zeit auch bisschen was angeschaut. Und bei Projekten, bei denen JS verzichtbar ist, löse ich auch alles mit PHP.
Wahrscheinlich starte ich so in zwei Wochen, wieder etwas aktiver zu scripten, dann habe ich eine riesen Prüfung hinter mir und auch wieder mehr Zeit, bzw einen freieren Kopf.
Danke für die Infos! -
Hätte da auch noch ein fast fertiges CMS, dass so aufgebaut ist. Dort muss ich nur noch ein paar kleine Dateien fertig stellen und hier und da etwas im Code aufräumen. Ist aber soweit einsatzbereit. Bei interesse kann ich das gerne mal zippen und bereitstellen.
-
all-in1 schrieb:
Danke für das Angebot, aber ich bevorzuge es, Zeile für Zeile selbst zu schreiben. :-) Damit sammle ich mehr Erfahrung, und das ist der Hauptgrund für meine Projekte.
Bei interesse kann ich das gerne mal zippen und bereitstellen.
Ausserdem noch eine kurze Frage: Bei include ist mir aufgefallen, dass die Struktur im Quelltext anders ist. Ist ja auch klar, aber bei Lima-City ist das ähnlich. Ist das bei anderen Systemen auch so, oder kann man davon ausgehen, dass dies auch per include gemacht wurde?
Ich kann mir eben den Begriff 'kleine Projekte' für include nicht so gut vorstellen. Wenn selbst dies so gut lösbar wäre, hätte ich keinerlei Probleme, grösser wie Lima wird von mir eh nie was. :D Oder ab wann sollte man eher darauf verzichten? -
Man muss sich vorher nur vorstellen, welche Bereiche benötige ich auf der Webseite. Macht dann das Design entsprechend fertig und teilt es dann in seine Bereiche auf.
Bei meinem neuen Script habe ich alles über eine index.php gesteuert und includiere dann die entsprechenden Inhalte und das Design. -
Bei mir war es bisher so, dass ich immer einen container mit dem Inhalt habe und im head etwas, dass sich verändert, alles andere war gleich. Dann habe ich das in 3 Dateien aufgeteilt und auch über die index.php alles eingebunden und dann eben den individuellen Inhalt eingefügt.
Funktioniert auch alles und mehr brauche ich momentan nicht.
Also danke für die Infos! :-) -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage