Frage zur Wertübergabe Auswahlliste -> Textfeld

  • Schönen Guten Tag liebe User, :)


    ich bin Frischling in der Html-Welt und habe zum Thema "Formulare" eine Frage.
    Ich möchte aus einem Auswahlfenster das "value" in ein Textfeld übertragen.


    Beispiel:
    ....
    < option value="1234"> Schwarz, Christian</option>
    < option value="2345"> Krüger, Hans</option>
    .....
    das Value jedes einzelnen aus der Auswahlliste soll entsprechend in ein separates Textfeld direkt unter der Auswahlliste übertragen werden.


    also, wenn ich "Schwarz, Christian" ausgewählt habe soll im unteren Textfeld "1234" stehen.


    Welche Funktion wird hierzu benötigt?
    Und ist es möglich ohne JS oder php das zu realisieren?
    Die Seite selbst soll offline bleiben.


    würde mich sehr über eine Antwort freuen. :)


    mit freundlichen Grüßen
    kulle

  • 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.

  • Wow, Basi!


    Erst einmal riesen Dank , dass du dich damit so Intensiv auseinander gesetzt hast.Du hast mir echt weitergeholfen damit.


    Es funktioniert perfekt und du hast alles sehr verständlich beschrieben. Da ich mich mit JavaScript nicht so auskenne , war das echt Gold wert!


    Wie Oben schon geschrieben, handelt es sich bei meiner offline Seite um ein Formular.


    Dieses hat den zweck, Mitarbeiter Berichte schreiben zu lassen und Sie genau zu identifizieren.


    Nachdem die Berichte fertig geschrieben sind, sollen alle relevante Daten (aus den Auswahllisten und Textfeld) in eine .csv-Datei schreibgeschützt abgespeichert werden.


    d.h


    Dienstart, Mitarbeiter, Personalnummer, Kategorie sowie der geschriebene Bericht.


    Ich hatte bereits in einen Forum gelesen, dass solche Methoden am besten mit php gelöst werden sollten (fopen(), fwrite()).


    gibt es auch eine Möglichkeit mit JavaScript? Wenn Ja, welche wäre das?



    Mit freundlichen Grüßen :)


    kulle

  • 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.

  • Guten Morgen liebe User,


    habe mich jetzt mal ein wenig mit den php Funktionen beschäftigt.


    habe aber noch einige Fragen :-).


    Hier erst einmal mein HTML Code zu den Formular:




    Seite Mit Auswahllisten und Textfeld:





    und die Seite, in dem der Bericht geschrieben werden soll.









    Und Hier meine php Funktionen dazu:





    Nun zu den Fragen.


    1. Wo füge ich jetzt die php Funktion ein?


    Es handelt sich ja um zwei unterschiedliche Seiten, aus denen ausgelesen werden muss. Muss ich die Funktion in beide Seiten einfügen? (sicherlich ja.... :-)).


    und WO im HTML Code genau?




    2. Würde auch gerne Das Datum in der csv-Datei abspeichern wollen. wie kann ich das realisieren?




    Würde mich über Antworten sehr freuen.


    Mit freundlichen Grüßen


    kulle
    kann mir keiner weiterhelfen? :-/

  • Dein Vorgehen ist noch nicht ganz korrekt.


    Zuerst etwas zum HTML Code:


    HTML
    <th col width="500" height="50">


    Das ist kein valider Aufbau. Es gibt kein col Attribut für th und ab HTML5 sind width und height Attribute an Tabellenelementen auch nicht mehr zulässig, dafür nutzt man nun ausschließlich CSS.


    Der korrekte Aufbau ist also einfach:


    HTML
    <th>


    Gibt es einen bestimmten Grund dafür, dass du 2 Dokumente verwenden möchtest? Das macht die Sache nur unnötig komplizierter und der Mehraufwand macht in meinen Augen hier keinen Sinn.


    Du hast jedes einzelne Input Feld mit einem form-Tag versehen. Ein form-Tag entspricht aber einem ganzen Formular und ermöglicht es logische Zusammenhänge zwischen den Eingabefeldern herzustellen. Also nur einen verwenden und unter dem action-Attribut die Datei angeben, die aufgerufen werden soll wenn das Formular abgesendet wird. Absenden kann man mit einem input Element vom Typ submit.


    Da du PHP verwenden möchtest, muss der Dateiname vom .html in .php umgewandelt werden. Ich habe die Datei mal formular.php genannt. Die ungültigen Attribute und die überflüssigen Formulare habe ich gelöscht. Außerdem habe ich alles in einer Tabelle untergebracht, diese mit einem form-Tag umschlossen und das action-Attribut gesetzt, außerdem das method-Attribut auf post. Zuletzt habe ich noch einen Absenden Button eingefügt:



    Jetzt kann man anfangen mit PHP etwas Logik in die Geschichte zu bringen. Dazu muss ab jetzt ein PHP Interpreter (sprich ein Webserver oder ein CGI Script) aktiv sein um PHP verarbeiten zu können.


    Ganz am Anfang der Datei hilft folgender Code nachzuvollziehen was wir verarbeiten müssen:



    $_POST ist ein Array, welches alle über die post-Methode gesendeten Daten enthält. Da noch nichts gesendet wurde, ist das Array leer. print_r (print recursive) kann ganze Arrays ausgeben. Wenn die Seite aufgerufen wird, steht oben über dem Formular jetzt:


    Code
    Array
    (
    )


    Nach einem Klick auf den Absenden Button steht dort Folgendes:


    Code
    Array
    (
        [dienstart] => 
        [disponent] => 
        [Personalnummer] => 
        [kategorie] => 
        [user_eingabe] => 
        [gesendet] => Absenden
    )


    Jetzt ist bekannt, dass das Formular abgesendet wurde und nicht mehr angezeigt werden muss. Also eine Variable setzen die wir später abfragen können:


    PHP
    print_r($_POST);
    
    
    
    
    if(isset($_POST['gesendet']))
        $formular_anzeigen = false;
    else
        $formular_anzeigen = true;


    Weiter unten lässt sich die Variable jetzt abfragen und dementsprechend kann das Formular ausgeblendet werden:


    PHP
    <?php if($formular_anzeigen): ?>
    <form action="formular.php" method="post">
    <!-- Formular wegen Übersicht ausgeschnitten -->
    </table> 
    </form>
    <?php else: ?>
    <p>Das Formular wurde abgesendet!</p>
    <?php endif; ?>


    Jetzt wird das Formular nicht mehr gezeigt, wenn es bereits abgesendet wurde. Stattdessen ein Paragraph der meldet, dass das Formular gesendet wurde.


    Dann kannst du eigentlich schon deinen PHP Code einfügen. Statt einer direkten Ausgabe der Meldung einfach in eine Variable speichern und diese unten ausgeben:


    PHP
    <?php if($formular_anzeigen): ?>
    <form action="formular.php" method="post">
    <!-- Formular wegen Übersicht ausgeschnitten -->
    </table> 
    </form>
    <?php else: ?>
    <p><?php print $meldung; ?></p>
    <?php endif; ?>


    Der exit Befehl würde die Anzeige der Datei abbrechen und das wäre Unsinn. Damit niemand Unsinn in deine Datei schreiben kann, empfiehlt es sich die eingegebenen Daten noch zu bereinigen. Dafür bieten sich die Funktionen trim (entfernt unnötige Leerzeichen am Anfang und Ende), stripslashes (entfernt Maskierungszeichen) und htmlspecialchars (maskiert HTML). Damit man nicht für jede Eingabe alle drei Funktionen aufrufen muss, macht es Sinn eine eigene anzulegen. Das sieht dann etwa so aus:



    Die ganze Datei sieht bei mir dann etwa so aus:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!