Ankündigung

Einklappen
Keine Ankündigung bisher.

bei input text, value füllen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • bei input text, value füllen

    hallo,

    ich habe eine kleine Frage. Ich lerne gerade autodidaktisch php und hab mir gerade die Lektion Formulare vorgenommen. Ich möchte ein kleines Script schreiben:

    In einem Formular hat man 3 Textfelder, die mit <input type="text"> erstellt sind.

    Ich habe 2 Button. Einen Submit-Button, den ich jetzt noch nicht benötige und einen "Berechne" Button. <input type="button">.

    Wenn ich auf diesen Button Click möchte ich gern die Funktion rechne() aufrufen. Diese soll den Inhalt des zweiten Textfeldes vom ersten Abziehen. Das Ergebnis soll dann in das dritte Textfeld ausgegeben werden.

    Und da gehts nun los:

    Wie kann ich eingetragene Werte aus einem Textfeld übergeben und wie kann ich vorallem das Ergebnis ins value des Textfeldeszurückgeben. beim onClick-Ereignis des Buttons müsste ich ja die values der Textfelder als variablen übergeben. In C++ war das alles so einfach *lol* nur blick ich irgendwie nicht durch. In meinem php5 Handbuch ist das irgendwie nicht erklärt, anscheinend brauch das keiner :P

    PHP-Code:
    <?
    function rechne($wert1,$wert2) {
    $ergebnis = $wert1-$wert2;
    return $ergebnis;
    }

    ?>

    <form...

    <input name="textfeld1" type="text">
    <input name="textfeld2" type="text">
    <input name="textfeld3" type="text">
    <input name="berechne" type="button" value="Berechne" onClick="<?$ergeb=rechne(GROßE FRAGE); ÜBERGABE an value.textfeld3 auch GROßE FRAGE ;-) ?>">
    ...</form>
    Bin für jeden Tipp dankbar.

    lg
    Steffen

  • #2
    Dir ist eine wichtige Eigenschaft von PHP entgangen: PHP ist serverseitig, d.h. wird ausgeführt, bevor der HTML-Code an den Server gesendet wird. Schau dir mal an was im Quellcode oder hier steht:
    http://tut.php-q.net/kommunikation.html

    Du musst einen submit-Button verwenden der die Seite neu lädt, die Formular-Daten per $_GET oder $_POST (je nachdem wie die method deines Formulars gesetzt ist) abfangen und dann das Ergebnis in value="<?php print rechne(..); ?>" schreiben.

    Für so einfache Rechnungen kann man aber ruhig JavaScript benutzen, aber ich denke ja du machst das nur um PHP zu lernen...

    Kommentar


    • #3
      mmh naja den Submit-Button würde ich benötigen um die "berechneten" Daten dann an eine zweite php Datei zu versenden.

      Entnehme ich deine Antwort dann logischer Weise, dass es mit php nicht möglich ist innerhalb eines Form php-Funktionen aufzurufen die irgendetwas tun und wieder zurück geben ohne dass das formular per submit irgendwo hingesendet wird?

      Wenn dem so ist, dann geht das sicherlich nur mit javascript.

      Bei der Gelegenheit die Frage, kann man innerhalb eins forms <form></form> ein zweites form einlagern? <form><form></form></form>? Dann könnte es durchausmöglich sein mit 2 Submitbuttons zu arbeiten, wo die innere Form dann sich selbst per submit aufruft

      danke für die schnelle Antwort

      Kommentar


      • #4
        Hallo,

        nochmal: PHP ist serverseitig. D.h. es läuft durch, erstellt was es machen soll und das Ergebnis wird an den Browser gesendet. Wenn du jetzt noch eine Berechnung/Formular-Verarbeitung was auch immer mit PHP machen willst, musst du das PHP-Skript neu aufrufen. In deinem Fall MUSST du das Formular submitten, ansonsten kommst du an PHP-Funktionen nicht mehr heran.

        Das mit den beiden <form>-Tags geht so wie du es dir denkst nicht, es wird ja schließlich nicht nur alles zwischen den <form>-Tags </form> neu geladen, sondern der komplette Inhalt des Formulars wird mit der ausgewählten Methode ans Ziel (action) gesendet.

        Kommentar


        • #5
          Entnehme ich deine Antwort dann logischer Weise, dass es mit php nicht möglich ist innerhalb eines Form php-Funktionen aufzurufen die irgendetwas tun und wieder zurück geben ohne dass das formular per submit irgendwo hingesendet wird?
          Das siehst Du richtig.

          Das innere Formular benötigst Du nicht für die Auswertung per javascript.
          Code:
          <html>
          	<head>
          		<script type="text/javascript">
          			function rechne() {
          				i1 = document.getElementById("eingabe1");
          				i2 = document.getElementById("eingabe2");
          				o1 = document.getElementById("ergebnis");
          				if (i1==null || i2==null || o1==null) {
          					alert("Fehler in Dokumentstruktur");
          				}
          				else {
          					n1 = Number(i1.value); 
          					n2 = Number(i2.value);
          					// hier ggf noch auf NaN testen
          					v = n1 - n2;
          					o1.value = v;
          				}
          			}
          		</script>
          	</head>
          	<body>
          		<form>
          			
          
          
          				<input type="text" id="eingabe1" />
          				
          
          				<input type="text" id="eingabe2" />
          				
          
          				<input type="text" id="ergebnis" readonly="readonly" />
          			</p>
          		</form>
          		<button onclick="rechne()">Berechnung</button>
          	</body>
          </html>

          Kommentar

          Lädt...
          X