Beiträge von Basi

    Um deine Datei zum Download anzubieten, musst du lediglich den Pfad zur Datei in ein a-Element packen.

    HTML
    <a href="pfad/meine_datei_zum_download.pdf">Hier herunterladen</a>


    Der Browser prüft dann, ob der die Datei anzeigen kann. Wenn er es kann, wird er es tun. Sollte der Browser die Datei nicht anzeigen können, öffnet der File Dialog wo der Benutzer dann die Datei auf seinem Computer abspeichern kann.

    Du kannst versuchen den Browser durch das download Attribut zu überreden, die Datei direkt speichern zu wollen, statt sie anzuzeigen:

    HTML
    <a href="pfad/meine_datei_zum_download.pdf" download>Hier herunterladen</a>


    Das funktioniert nicht für alle Browser, siehe hier.

    Eine andere Lösung wäre ein kontrollierter Downstream mit Hilfe von PHP aber da wird es dann kompliziert.

    Alternativ könntest du die die Datei in ein Archiv packen (.zip/.rar/etc.). Solche Archive werden vom Browser immer heruntergeladen. Ich würde .zip empfehlen, da sich das mit vielen Betriebssystemen ohne zusätzliche Software entpacken lässt.

    Wenn du mit Javascript in Dateien schreiben möchtest, musst du auf node.js zurückgreifen. Mit node.js kannst du einen Webserver aufsetzen und dann mit einer Erweiterung wie z. B. dieser hier arbeiten.

    Vom Aufwand her, besonders wenn du dich nicht auskennst, wäre PHP aber wirklich einfacher. Du musst dann auch nicht zwangsläufig einen ganzen Webserver lokal laufen lassen, sondern kannst über die Kommandozeile arbeiten. Außerdem könntest du das Formular an ein Python Skript senden, dann brauchst du auch keinen Server. Hier gibt es Infos zu CSV Dateien in Python und hier einen Überblick darüber, wie man Formulare auswertet.

    Das benötigte Wissen sowohl in Javascript als auch in PHP und Python ist mit etwas Einsatz und bestenfalls einer Woche Urlaub unglaublich schnell angeeignet.

    Ohne Javascript wird das nichts. Javascript ist aber auch offline und in jedem halbwegs modernen Browser verfügbar.

    Erst HTML:

    HTML
    <form>
        <select name="namen" id="formularNamen">
            <option value="">Bitte wählen</option>
            <option value="1234">Schwarz, Christian</option>
            <option value="2345">Krüger, Hans</option>
        </select>
        <input type="text" name="nummer" id="formularNummer">
    </form>


    Die benötigten Javascript-Techniken sind lediglich: Ereignis am select Feld abfangen, Textfeld anwählen und mit ausgelesenem Wert füllen.

    Es gibt grundlegend 3 Wege das umzusetzen, der einfachste wäre inline im onchange-Attribut. Das ist unschön aber tut seinen Zweck:

    HTML
    <select name="namen" id="formularNamen" onchange="document.getElementById('formularNummer').value = this.value">


    HTML und CSS/PHP/Javascript/etc. sollten aber immer getrennt werden. Daher kannst du nun einen Script Tag erstellen und ähnlich vorgehen. Der Script Tag muss in dem Fall unter den beiden betroffenen Elementen stehen.


    Und jetzt noch der schöne Weg in einer externen Datei oder im Kopfbereich. Dafür muss noch gewartet werden bis das window Objekt (also alle Dateien die du so benutzt auf der Seite z. B. CSS, Bilder, etc.) geladen ist, wieder per EventListener.


    Im letzten Fall kann der Javascript Quelltext überall stehen. Es bietet sich jedoch der Head Bereich oder eine externe Javascript Datei an.

    Falls du noch Fragen hast immer her damit.

    Man kann das Ganze bis zum jüngsten Tag diskutieren. In erster Linie kann man 2 Sachen sagen:

    Es ist ein Stück weit Geschmackssache.
    Es kommt immer darauf an.

    Zu "gutem Design", wie du es nennst, zählen weder statische Klassen, noch Singleton Klassen. Hier auch ein weiteres Beispiel, worüber man diskutieren könnte: "Design" hat für mich mit Programmierung nichts zu tun, trotzdem binde ich dir nicht auf die Nase, dass "Form" viel besser klingt.

    Es ist jedoch mit Fakten belegt, dass eine statische Klasse im Gegensatz zu einer Singleton Klasse nicht nur deutlich schneller ist (wir sprechen hier von teilweise gut 62% Unterschied), sondern auch weniger Speicher allokiert. Die obige satische Klasse etwa 40% weniger als das Singleton-Äquivalent. Die Singleton Klassen holen erst dann auf, wenn sie wahnsinnig oft aufgerufen werden. Dabei sprechen wir je nach Ausmaß der Klasse von mindestens 1.000.000 Aufrufen für eine Annäherung. Der Speicherverbrauch ist unabhängig der Aufrufe höher.

    Hinzu kommt die Übersichtlichkeit des Codes und die Redundanz. Die Singleton Klasse braucht eine Funktion mehr und diese muss bei Jedem Aufruf mitgeschrieben werden. Solch redundanter Code sollte vermieden werden.

    In bestehende Objekte lassen sich beide Varianten nur mit zwei zugedrückten Augen einbinden und sowohl Geschwindigkeits- als auch Speichertechnisch fährt eine Standard PHP Klasse beide der hier diskutierten Varianten an die Wand. Außerdem kommt es bei beiden Varianten schnell zu Problemen im Scope, wenn man wirklich Objektorientiert arbeitet.

    Warum mehr Speicherverbrauch schlecht ist erkläre ich nur ungerne. 200 kB mehr Speicher für eine Klasse mit identischem Ergebnis machtn icht viel aus. Wenn man von 200 kB Grundbedarf, 300 kB Static-Bedarf und 500 kB Singleton-Bedarf ausgeht, verbrauchen 8192 parallele Seitenaufrufe auf Seite des Singleton 5.734.400 kB Speicher, auf Seite der statischen Klasse 4.096.000 kB. Bei 4 GB verfügbaren Arbeitsspeicher für die eigenen PHP Skripte, würde die Singleton-Variante also deutlich früher zur Überlastung des Servers führen. Eigentlich selbsterklärend.

    Mehr Infos zur Laufzeit findest du auch hier.

    Das sind Themen mit denen sich niemand beschäftigen muss, der ein Gästebuch für seine Urlaubsseite programmiert und darüber kann man (wie gesagt) ewig diskutieren.

    Warum nur statische Methoden verwendet werden, wird doch im Beitrag erklärt.

    Eine Klasse, die sowieso nur ein mal aufgerufen wird und zudem noch keine individuellen Zusammenhänge speichert (wie zum Beispiel die Farbe eines bestimmten Autos), eignet sich wunderbar als rein statische Klasse.

    Würde man eine nicht statische Klasse instanziieren um nur eine der integrierten Funktionen aufzurufen, würde auch Speicher für die restlichen Funktionen der Klasse reserviert werden. Auch das ist bei statischen Klassen nicht der Fall.

    Zudem richtet sich die Anleitung (wie beschrieben) an Anfänger und soll eine Hilfestellung sein, keine perfekte Lösung. Ansonsten wären es auch nicht 221 Zeilen, sondern 2210.

    Auf Anhieb sehe ich nur das:

    PHP: 60
    <?php echo '
    <?php if(isset($nachricht["art"])) { ?>
        <option value="<?php print $nachricht["art"]; ?>" selected><?php print $nachricht["art"]; ?></option> 
    <?php } ?>
    '; ?>


    Das kann natürlich nicht funktionieren. Alles zwischen den Anführungszeichen ist ein String, der PHP Code wird also auch nicht ausgeführt.

    Sind dir die PHP Basics geläufig? Verkettung ist hier das Stichwort.

    Okay zwei Sachen fallen mir auf:

    1. Du hast in dem Media Query eine Klasse namens "img" selektiert (durch den Punkt).

    2. Du musst den Wert zum zurücksetzen auf "none" setzen, nicht auf 0.

    Probier also mal:

    CSS
    @media only screen and ( max-width: 56.25em) {
        /* img:hover statt .img:hover */
        img:hover {
            /* none statt 0 */
            box-shadow: none;
            transform: none;
        }
    }

    Hey,

    hast du den Codeblock (die geschwiften Klammern) aus Zeile 1 wieder geschlossen?

    Außerdem sehe ich in Zeile 33 nach dem "none" einen Doppelpunkt statt dem Semikolon.

    In welcher Reihenfolge steht der Code in deinen Dokumenten?

    Falls dein Problem noch nicht gelöst ist, zeig am Besten deinen ganzen CSS Code, damit wir auf Fehlersuche gehen können.

    Mit welchem Editor bearbeitest du dein HTML und CSS? So ein Syntaxfehler wie der Doppelpunkt statt dem Semikolon wird von brauchbaren Editoren direkt hervorgehoben, damit man ihn beseitigen kann.

    Warum es nicht funktioniert, ist aus dem Codeausschnitt leider nicht zu erkennen. Wie sieht dein restlicher Code aus?

    Deine option-Elemente haben den Aufbau:

    HTML
    <option value="[art des tieres]">[art des tieres]</option>


    Also zum Beispiel:

    HTML
    <option value="Hamster">Hamster</option>


    Hamster kommt zwei mal vor, darum auch zwei Ausgaben mit PHP.

    Wenn ich den Code so ausprobiere...


    ... erhalte ich folgende Ausgabe:


    Das ist so alles korrekt.

    Hi.

    Ein select Element kann kein value Attribut beinhalten, dafür sind ja die option Elemente da. Siehe hier unter dem Punkt Attribute.

    Du müsstest mittels PHP ein weiteres option Element erstellen:


    Ich habe dem dynamisch erstellten option Element noch das Attribut selected gegeben. Das stellt sicher, dass diese Option anfangs angewählt wird.

    Das geht ganz einfach mit jQuery. Zum Beispiel mittels .scrollTop() überwacht man, ob die Seite weit genug gescrollt wurde. Mit .animate() animiert man das Element dann.

    Das verantwortliche Script sitzt hier in der lib.js. Dort findet sich in den Zeilen 485 - 578 eine animateLogoCotacts() Funktion. In den Zeilen 580 - 582 werden Positionsdaten ermittelt und in den Zeilen 588 - 602 wird die eben genannte Funktion aufgerufen.

    Um das Problem ergründen zu können, reicht dein Codeausschnitt leider nicht.

    Du kannst versuchen die Farbe zu erzwingen:


    Diese Methode ist aber eher unschön und zeigt finde ich, dass man selbst nicht so richtig versteht was der eigene Code treibt.

    Wie sieht denn der Rest aus?

    Dafür brauchst du PHP. PHP ist eine Skriptsprache die auf dem Webserver ausgeführt wird und Eingaben von Benutzern verarbeiten kann.

    Es gibt den PHP-Kurs von Axel Pratzner: http://www.php-kurs.com/

    Dort kannst du entweder den Kurs in Schriftform durcharbeiten, oder dir die DVDs bestellen.

    Was genau du brauchst ist ein Formular und eine Methode zum übermitteln der Daten. Das könnte via Mail, mit beschreibbaren Dateien oder einer Datenbank realisiert werden.

    Zum Punkt Formulare kommt es im Kurs relativ schnell: PHP-Kurs | Formulare