Beiträge von Basi

    Du kannst deine Formularfelder einfach so anpassen:


    PHP
    1. <input type="text" name="rotkaepchen" <?php print ($wort1 == $ltw1) ? 'value="'. $wort1 .'"' : ""; ?>>


    Oder mit if:


    PHP
    1. <input type="text" name="rotkaepchen" <?php if($wort1 == $ltw1) print 'value="'. $wort1 .'"'; ?>>

    Es geht dabei um Redundanz. Redundanz bedeutet, dass identischer Code mehrfach vorkommt. Eine Funktion kannst du jederzeit wieder aufrufen, anstatt den Code einfach zu kopieren.


    Einfach mal 3 Aufrufe vergleichen.


    Mit Funktion:



    Ohne Funktion:



    Bei kleineren Funktionen wie dieser fällt es nicht so extrem auf, daher habe ich hier mal die sort Funktion für Arrays nachgebaut um die Einfachheit zu verdeutlichen:


    Schau mal hier. Am Besten in umgekehrter Reihenfolge lesen.


    Was du suchst kann fast jeder Editor.


    Visual Studio Code (Nutze ich)
    Sublime Text
    Brackets
    ...

    Was dich hier verwirrt sind die Übergabewerte oder auch Parameter genannt, dabei geht es um die in den Klammern hinter dem Funktionsnamen angegebenen Variablen. Du hast von "überschreiben" gesprochen. Das ist genau das was passiert und was beabsichtigt ist.


    PHP
    1. function funktionsname($parameter1, $parameter2, ...)
    2. {
    3. }


    Funktionsparameter benötigt man immer dann, wenn man Daten, die außerhalb der Funktion erhoben werden, innerhalb verwenden will. In deinem Fall sind es 2 Zahlen. Diese Zahlen könnte man zum Beispiel über Eingabefelder vom Benutzer abfragen oder wie du es getan hast einfach so deklarieren.


    Ein Gleichheitszeichen brauchst du bei den Parametern grundsätzlich nicht, außer du möchtest Standardwerte nutzen. Das macht in deinem Fall hier absolut keinen Sinn. Ich komme gleich darauf zurück.


    Die Parameter setzt du nun nicht durch das Gleichheitszeichen, sondern indem du beim Funktionsaufruf in der gleichen Reihenfolge durch Kommata getrennt werte angibst. Dabei kann es sich um Variablen, Zahlen, Strings, Arrays, Objekte, etc. handeln:


    PHP
    1. function addieren($zahl1, $zahl2)
    2. {
    3. print $zahl1; // Gibt 5 aus
    4. print $zahl2; // Gibt 8 aus
    5. }
    6. addieren(5, 8);


    Wenn du nun im Funktionsaufruf (Zeile 7) zu wenig Parameter angibst, bekommst du Fehlermeldungen. Es werden 2 Parameter erwartet, gibst du nur einen an:


    PHP
    1. addieren(5);


    Erhältst du:


    Code
    1. Warning: Missing argument 2 for addieren()
    2. Notice: Undefined variable: zahl2


    Es wird angezeigt, dass beim Aufruf von addieren() das 2. Argument (Parameter) fehlt. Außerdem wird in der Funktion festgestellt, dass $zahl2 nicht definiert ist. Kann ja auch nicht, da der 2. Übergabewert fehlt.


    Für das nächste Beispiel wird die Funktion kurz umgeschrieben:


    PHP
    1. function addieren($zahl1, $zahl2)
    2. {
    3. $ergebnis = $zahl1 + $zahl2;
    4. print $ergebnis;
    5. }


    Jetzt gehen wir davon aus, dass wir in unserem Programmablauf die Funktion benötigen zu einer Zahl 2 hinzu zu addieren. Statt eine neue Funktion anzulegen, kann einfach die addieren Funktion benutzt werden. Dazu bekommt $zahl2 den Standardwert (default) 2 zugewiesen:


    PHP
    1. function addieren($zahl1, $zahl2 = 2)
    2. {
    3. $ergebnis = $zahl1 + $zahl2;
    4. print $ergebnis;
    5. }


    Diese Funktion kann jetzt mit nur einem Übergabewert aufgerufen werden:


    PHP
    1. addieren(5, 5); // Ausgabe: 10
    2. addieren(5, 2); // Ausgabe: 7
    3. addieren(5); // Ausgabe: 7


    Wenn du schon bein anlegen der Funktion keine Parameter angibst, bekommst du keine Daten in die Funktion hinein:


    PHP
    1. function addieren()
    2. {
    3. // Hier existiert keine Variable
    4. }


    Eine Ausnahme bilden globale Variablen, Auf die sollte man aber möglichst verzichten.


    Was @JR Cologne: meint ist, dass man in Funktionen nichts ausgeben lassen sollte (außer beim Debuggen). PHP ist eine typschwache Sprache, das bedeutet es ist egal welche Variablentypen verwendet werden. Eine Funktion kann also sowohl einen String als auch einen Integer zurückgeben. In deinem Fall würde ich das einfach so lösen:


    Das ist in dem Fall Wichtigtuerei. Der PHP Handler stellt den PHP Funktionsumfang bereit und wenn dein Apache problemlos startet, läuft das Teil und ist auch für das htdocs Verzeichnis aktiv.


    Wenn du auf Nummer Sicher gehen willst, erstelle eine PHP Datei (nenne sie zum Beispiel phpinfo.php) und verschiebe sie in htdocs, dann rufst du das über den localhost auf, gibst sicherheitshalber den Port mit an (localhost:8080/phpinfo.php) und schaust was passiert. In die Datei schreibst du einfach folgendes:


    PHP
    1. <?php phpinfo(); ?>


    Wenn du dann eine ziemlich lange Tabelle erhältst und oben drüber PHP Version 5.6.21 (oder eine andere Versionsnummer, 5 oder 7 am Anfang sollte aber drin sein) steht, liegt das Problem nicht an deinem Webserver.

    Hast du einen aktiven Mailserver?


    Einfacher gesagt: Führst du das Skript auf einem gemieteten (wenn auch kostenlos) Webspace oder lokal auf deinem Computer aus?

    $_POST["ausgabe"] enthält (wie du anfangs erwähnt hast) ein Array. In Dateien können nur Strings geschrieben werden, du musst das also vorher umwandeln. Dir fehlt auch ein Verkettungsoperator direkt dahinter.

    Meine Meinung dazu ist: Bücher lohnen nicht.


    Wir arbeiten für das Medium Internet und können ebenso effektiv mit dem Internet arbeiten und lernen.


    Besonders durch den schnellen Wandel hinken Bücher oft hinterher. Was vor 2 Monaten in einem Verlag erschienen ist, muss heute schon nicht mehr aktuell sein. Außerdem hat Webentwicklung auch viel mit ganz subjektiven Gedanken zu tun. In einem Buch hast du oft nur die Meinung von 1-2 Leuten, während im Internet Tausende dazu beitragen für jeden die richtige Lösung zu finden.


    Es gibt dutzende Seiten, die sich mit den Flexboxen und Bootstrap auseinandersetzen. Mit 10 Minuten Google findest du mehrere Seiten auf denen du dich stundenlang aufhalten kannst.


    Für Flexbox zum Beispiel die w3c Dokumentation (aktuellere und korrektere Anleitungen existieren da nicht wirklich) hier.


    Bootstrap stellt die eigene Dokumentation sogar auf Deutsch zur Verfügung.


    Statt stupide ein Buch abzuarbeiten, solltest du dir lieber ein Lernziel setzen und dieses mithilfe solcher Quellen selbst bearbeiten. Wenn du nicht weiterkommst oder eine Rückmeldung wünscht kannst du dich an uns oder andere Foren wenden. Auch das bietet ein Buch nicht.


    Und als wären das nicht genug Punkte: Das Ganze ist auch noch kostenlos.

    Killerbear :
    Das oben gezeigte Script ist völlig korrekt. Es wird eine automatisch anonyme Funktion verwendet um die Ausführung des Scripts zu erzwingen und einen Namensraum zu schaffen. Es handelt sich dabei nicht unbedingt um eine Technik die Anfängern beigebracht wird und so wie sie hier verwendet wird, fehlt auch der Sinn dahinter.


    lulu68163 :
    Damit wir nachvollziehen können was passieren soll und was passiert brauchen wir vollständigen Code (das betrifft HTML, CSS und Javascript) oder im besten Fall einen Link zu deiner Seite (wenn vorhanden) wo wir uns die Geschichte angucken können.


    Im Moment klingt alles irgendwie nach "Ich habe ein Pferd und möchte mit dem Apfel den Baum fällen."

    Ich habe wenig Lust eine Gegenüberstellung zu starten, wage aber zu behaupten, dass Javascript trotzdem in mehr Browsern integriert ist, als der Selektor. Dabei handelt es sich aber auch eher um eine unwichtige Kleinigkeit, da nur Randgruppen betroffen sein dürften.


    Wegen mobilen Endgeräten auf Javascript zu verzichten ist meiner Ansicht nach nicht nötig. Ich habe dazu auf die Schnelle nur eine Quelle gefunden (hier), diese halte ich aber für inkorrekt, da ich mehreren No's aus persönlicher Erfahrung widersprechen kann.


    In der Praxis hat Javascript definitiv die Oberhand, was mit der Einführung von HTML5 seitens w3c auch erwünscht und teilweise erzwungen ist. Auch außerhalb des Webs erfreut sich die Sprache mittlerweile großer Beliebtheit, wodurch der Support in den nächsten Jahren eher steigen als fallen wird.

    Deine Anforderungen an ein Menü halte ich so pauschal in den Raum gestellt für maßlos übertrieben.


    Elemente verbergen ist nicht von Grund auf Benutzerunfreundlich, sondern oft unumgänglich. Ich denke nicht, dass den Benutzern geholfen wäre, wenn Caseking alle 427 Punkte der Steuerung anzeigen würde.


    Hinzu kommt, dass solche Menüs nicht nur im Web gängig, sondern auch in jedem Betriebssystem integriert sind.


    Für mobile Lösungen gibt es Media Queries oder User Agents um dementsprechend Anpassungen vorzunehmen.


    Auf Javascript verzichten ist Mitte 2016 nicht mehr nötig. Wenn man es doch unbedingt versuchen möchte, hat wolf : hinreichend gezeigt wie man Checkboxen manipuliert um dies zu erreichen. Wird vermutlich in weniger Fällen funktionieren als Javascript.


    Für die Tastatur gibt es den Tabindex.


    Wie immer gilt: Es kommt darauf an.

    Was du da erzählst, ist aktuell nicht mehr korrekt.


    Aktuelle HTML-Renderer wie WebKit, Gecko oder EdgeHTML arbeiten mit bikubischer Interpolation und leisten beim Downscaling hervorragende Arbeit. Beim Vergrößern sind die Ergebnisse qualitativ auch nicht wesentlich schlechter.


    Einfach 1600 Pixel Breite nehmen ist Quatsch. Es kommt darauf an, was man darstellen möchte. Wenn ich bereits weiß, dass mein Zielpublikum Breitere Geräte verwendet und eine horizontale Skalierung beim verwendeten Bild nicht gut aussieht, kann ich mich schlecht auf so eine Größe festlegen. Derzeit ist es eher gängig auf solche Grafiken zu verzichten, oder direkt verschiedene Größen anzubieten und im nächsten Absatz weiterzulesen.


    Um Grafiken abhängig von der Bildschirmauflösung anzuzeigen, braucht es kein Javascript. Das kann CSS mittels Mediaquerys, was aktuell auch überall Anwendung findet, wo jemand Ahnung hatte.


    Deine Quelle ist von 2014. Genauer gesagt etwa 1 Monat vor Veröffentlichung von HTML5. In nun bald 2 Jahren ist in der Hinsicht weder etwas passiert, noch finden sich Informationen darüber auf der Seite des w3c. Bleibt also entweder noch sehr lange Zukunft, oder wird einfach nie eingeführt. Es handelt sich um Spekulation, also kann man nicht fest behaupten, dass es dies "in Zukunft geben wird".