MaschaS: Berechnung in Perl

ich übergebe Eingabefelder die innerhalb der index.html als Formular dargestellt werden an ein Perl-Modul weiter, um dort diese EingabeWerte zu berechnen. Das Perl-Modul wird als CGI-Script aufgerufen, die Datei steht auf dem Webserber im cgi-Verzeichnis. Die Berechnungen werden korrekt ausgeführt, auch die Ergebnisausgabe (mit print). Bis hier hin alles ok!
Allerdings erfolgt die Ergebnis-Ausgabe immer in einem separaten Browserfenster und dass versuche ich zu ändern. Soll heissen: das Ergebnis der Berechnung soll auch innerhalb des Formulars, in denen die Eingabefelder eingegeben werden, in ein dafür vorgesehenes Feld ausgegeben werden.
Als Alternative, wenn dies vielleicht mit den Mitteln HTML und PERL nicht möglich ist, dies in ein Popup-Fenster zu stellen, damit könnte ich auch leben.
Weiss hier jemand von euch einen Rat, wäre sehr dankbar für Unterstützung.

Danke und Gruss
Maschas

  1. ich übergebe Eingabefelder die innerhalb der index.html als Formular dargestellt werden an ein Perl-Modul weiter, um dort diese EingabeWerte zu berechnen. Das Perl-Modul wird als CGI-Script aufgerufen,

    Sorry diese Aussage macht keinen Sinn.
    Eine .pm-Datei wird via use oder require eingebunden, wird aber niemals von Perl als mainscript geparst

    die Datei steht auf dem Webserber im cgi-Verzeichnis. Die Berechnungen werden korrekt ausgeführt, auch die Ergebnisausgabe (mit print). Bis hier hin alles ok!
    Allerdings erfolgt die Ergebnis-Ausgabe immer in einem separaten Browserfenster und dass versuche ich zu ändern.

    Dies passiert, wenn du im HTML ein target Attribut in <form> oder <a> verwendest.
    Einfach zu reparieren.

    Soll heissen: das Ergebnis der Berechnung soll auch innerhalb des Formulars, in denen die Eingabefelder eingegeben werden, in ein dafür vorgesehenes Feld ausgegeben werden.

    Dann gebe mittels Perl das Formular aus und trage die neuen Werte in die Felder ein, indem die die value-Attribute entsprechend belegst.

    Als Alternative, wenn dies vielleicht mit den Mitteln HTML und PERL nicht möglich ist, dies in ein Popup-Fenster zu stellen, damit könnte ich auch leben.

    Perl hat nichts damit zu tun, wo im Browser die Ausgabe stattfindet.
    Offensichtlich ist ein Themewechsel nach HTML angebracht.

    Weiss hier jemand von euch einen Rat, wäre sehr dankbar für Unterstützung.

    Entferne das falsche target-Attribut.

    mfg Beat

    --
    ><o(((°>           ><o(((°>
       <°)))o><                     ><o(((°>o
    Der Valigator leibt diese Fische
    1. Hallo Beat, erst mal danke für deine antwort, allerdings

      ich habe gar kein target-Attribut in der html-datei drin??
      die Übergabe der Variableninhalte erfolgt durch:
      <form action="/cgi-bin/bmi.cgi" method="post" accept-charset="ISO-8859-1">
      und die Ausgabe der Variablen durch print innerhalb des cgi,s:

      ausgabe des angegebenen gewichts

      print "Gewicht: $gewicht         Kg";
      print "<br>"; # zeilenumbruch  (Auszug aus meiner cgi)

      mfg maschas

      ich übergebe Eingabefelder die innerhalb der index.html als Formular dargestellt werden an ein Perl-Modul weiter, um dort diese EingabeWerte zu berechnen. Das Perl-Modul wird als CGI-Script aufgerufen,

      Sorry diese Aussage macht keinen Sinn.
      Eine .pm-Datei wird via use oder require eingebunden, wird aber niemals von Perl als mainscript geparst

      die Datei steht auf dem Webserber im cgi-Verzeichnis. Die Berechnungen werden korrekt ausgeführt, auch die Ergebnisausgabe (mit print). Bis hier hin alles ok!
      Allerdings erfolgt die Ergebnis-Ausgabe immer in einem separaten Browserfenster und dass versuche ich zu ändern.

      Dies passiert, wenn du im HTML ein target Attribut in <form> oder <a> verwendest.
      Einfach zu reparieren.

      Soll heissen: das Ergebnis der Berechnung soll auch innerhalb des Formulars, in denen die Eingabefelder eingegeben werden, in ein dafür vorgesehenes Feld ausgegeben werden.

      Dann gebe mittels Perl das Formular aus und trage die neuen Werte in die Felder ein, indem die die value-Attribute entsprechend belegst.

      Als Alternative, wenn dies vielleicht mit den Mitteln HTML und PERL nicht möglich ist, dies in ein Popup-Fenster zu stellen, damit könnte ich auch leben.

      Perl hat nichts damit zu tun, wo im Browser die Ausgabe stattfindet.
      Offensichtlich ist ein Themewechsel nach HTML angebracht.

      Weiss hier jemand von euch einen Rat, wäre sehr dankbar für Unterstützung.

      Entferne das falsche target-Attribut.

      mfg Beat

      1. Mahlzeit Maschas,

        ich habe gar kein target-Attribut in der html-datei drin??

        Aber irgendwer bzw. irgendwas hat Deinem Browser gesagt, dass er die Ausgabe des Formularziels in einem neuen/anderen Fenster/Frame darstellen soll - möglicherweise durch eine entsprechende <http://de.selfhtml.org/html/kopfdaten/basis.htm#zielfenster@title=<base>>-Angabe?

        Wie sieht der relevante HTML-Quellcode aus?

        und die Ausgabe der Variablen durch print innerhalb des cgi,s:

        ausgabe des angegebenen gewichts

        print "Gewicht: $gewicht         Kg";
        print "<br>"; # zeilenumbruch  (Auszug aus meiner cgi)

        Ich schätze, Beat meinte die Ausgabe der verarbeiteten Daten in einer Art Affenformular.

        mfg maschas

        ich übergebe Eingabefelder die innerhalb der index.html als Formular dargestellt werden an ein Perl-Modul weiter, um dort diese EingabeWerte zu berechnen. Das Perl-Modul wird als CGI-Script aufgerufen,

        TOFU mag hier übrigens niemand so wirklich ...

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. Hi EKKi,

          hier der html-Code dazu:
          ist nur ein kleines Ding, aber für mich mit grosser Wirkung, bin kein Entwickler!

          <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                 "http://www.w3.org/TR/html4/loose.dtd">
          <html>
          <head>
          <!-- title>BMI Rechner</title-->
          <meta http-equiv="content-type" content="text/html;
                    charset=ISO-8859-1">  <!--Angabe zur Zeichenkodierung -->
          </head>
          <body>

          <!-- h1>BMI</h1-- >

          <form action="/cgi-bin/bmi.cgi" method="post" accept-charset="ISO-8859-1">

          <table border="0" cellpadding="0" cellspacing="4">
              <tr>
          <td align="left">Bitte geben Sie hier Ihre Daten ein:</td><tr>

          	<p>  <tr>  
          

          </p>
             <tr><td align="left">Gewicht in kg:</td>
             <td><input name="gewicht" type="text" size="20" maxlength="20"></td>
              </tr>
              <tr>
             <td align="left">Gr&ouml;&szlig;e in cm:</td>
             <td><input name="groesse" type="text" size="20" maxlength="20"></td>
              </tr>
              <tr>
                <!td align="left"></td>
                <td><input name="löschen" type="reset" value="Werte zurücksetzen"></td>
                <td><input name="berechnen" type="submit" value="BMI berechnen"></td>
             </tr>
             </table>

          </form>
          </body>
          </html>

          Und dazu das perl-modul:

          #!/usr/bin/perl -T
          use CGI qw(:standard); # CGI.pm einbinden
          use strict;
          use CGI::Carp qw(fatalsToBrowser);

          html header aus CGI.pm

          print "Content-type: text/html\n\n";

          übernahme des gewichts aus html form

          my $gewicht = param('gewicht');

          übernahme der grösse aus html form

          my $groesse = param('groesse');

          variable für umrechnung von cm zu meter

          my $a;

          variable für größen multiplikation

          my $b;

          variable für bmi

          my $bmi;

          umrechnung von cm zu meter

          $a = $groesse / 100;

          ausgabe des angegebenen gewichts

          print "Gewicht: $gewicht Kg";
          print "<br>"; # zeilenumbruch

          ausgabe der angegebenen groesse

          print "Gr&ouml;&szlig;e: $a m";
          print "<br>"; # zeilenumbruch

          multiplikation der groesse zu groesse^2  und bmi-berechnung

          $b = $a * $a;
          $bmi = $gewicht / $b;

          print "BMI: $bmi";

          berechnung und ausgabe des bmi wertes

          print "BMI: ", $gewicht / $b;

          print "<br>"; # zeilenumbruch
          print "<br>"; # zeilenumbruch

          backlink

          print '<a href="/diaetprogramme-gesundes-abnehmen-ernaehrung/gewichtstabellen/bmi-rechner/index.html">zur&uuml;ck</a>';
          print "<br>"; # zeilenumbruch
          print '<a href="/diaetprogramme-gesundes-abnehmen-ernaehrung/gewichtstabellen/bmi-tabellen">BMI-Tabelle</a>';

          kannste mal reinschauen, super
          MFG
          Maschas

          Mahlzeit Maschas,

          ich habe gar kein target-Attribut in der html-datei drin??

          Aber irgendwer bzw. irgendwas hat Deinem Browser gesagt, dass er die Ausgabe des Formularziels in einem neuen/anderen Fenster/Frame darstellen soll - möglicherweise durch eine entsprechende <http://de.selfhtml.org/html/kopfdaten/basis.htm#zielfenster@title=<base>>-Angabe?

          Wie sieht der relevante HTML-Quellcode aus?

          und die Ausgabe der Variablen durch print innerhalb des cgi,s:

          ausgabe des angegebenen gewichts

          print "Gewicht: $gewicht         Kg";
          print "<br>"; # zeilenumbruch  (Auszug aus meiner cgi)

          Ich schätze, Beat meinte die Ausgabe der verarbeiteten Daten in einer Art Affenformular.

          mfg maschas

          ich übergebe Eingabefelder die innerhalb der index.html als Formular dargestellt werden an ein Perl-Modul weiter, um dort diese EingabeWerte zu berechnen. Das Perl-Modul wird als CGI-Script aufgerufen,

          TOFU mag hier übrigens niemand so wirklich ...

          MfG,
          EKKi

          1. Mahlzeit Maschas,

            hier der html-Code dazu:

            Also aus dem Code wird nicht ersichtlich, wieso irgendein Browser die Antwort des Formular-verarbeitenden Skripts in einem neuen Fenster/Tab darstellen sollte. Hast Du das vielleicht in Deinem Browsers so konfiguriert?

            ist nur ein kleines Ding, aber für mich mit grosser Wirkung, bin kein Entwickler!

            Ähm ... wenn Du nicht der Entwickler bist, was genau willst Du dann an dem Verhalten ändern?

            Und dazu das perl-modul:

            Das an dieser Stelle vollkommen irrelevant ist.

            TOFU mag hier übrigens niemand so wirklich ...

            Was genau hast Du daran eigentlich nicht verstanden?

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Hi Ekki,

              Also aus dem Code wird nicht ersichtlich, wieso irgendein Browser die Antwort des Formular-verarbeitenden Skripts in einem neuen Fenster/Tab darstellen sollte. Hast Du das vielleicht in Deinem Browsers so konfiguriert?

              nein

              Ähm ... wenn Du nicht der Entwickler bist, was genau willst Du dann an dem Verhalten ändern?

              ich hab die Site erstellt, bin aber kein Entwickler (beruflich betrachtet - mehr ein nebenjob)
              schau doch mal unter: http://www.4beauty-balance.de/diaetprogramme-gesundes-abnehmen-ernaehrung/gewichtstabellen/bmi-rechner/index.html dann wirds wahrscheinlich deutlich, was ich will.

              Das an dieser Stelle vollkommen irrelevant ist.

              das modul steht im cgi-bin verzeichnis, hab es nur angehängt, ob evtl. da ein fehler ersichtlich ist

              TOFU mag hier übrigens niemand so wirklich ...

              danke für den hinweis, war mir nicht bekannt.

              MfG,
              maschas

              1. schau doch mal unter: http://www.4beauty-balance.de/diaetprogramme-gesundes-abnehmen-ernaehrung/gewichtstabellen/bmi-rechner/index.html dann wirds wahrscheinlich deutlich, was ich will.

                Du willst deine
                Fehler korrigieren!

                mfg Beat

                --
                ><o(((°>           ><o(((°>
                   <°)))o><                     ><o(((°>o
                Der Valigator leibt diese Fische
                1. schau doch mal unter: http://www.4beauty-balance.de/diaetprogramme-gesundes-abnehmen-ernaehrung/gewichtstabellen/bmi-rechner/index.html dann wirds wahrscheinlich deutlich, was ich will.

                  Du willst deine
                  Fehler korrigieren!

                  »»» zum testen der website echt gut, danke für den link, meinem ziel bin ich dadurch aber nicht näher gekommen. sei,s drum - ich versuch es jetzt mit php

                  mfg Maschas

                  mfg Beat

              2. Mahlzeit maschas,

                schau doch mal unter: http://www.4beauty-balance.de/diaetprogramme-gesundes-abnehmen-ernaehrung/gewichtstabellen/bmi-rechner/index.html dann wirds wahrscheinlich deutlich, was ich will.

                Die 21 Errors, 1 warning(s) solltest Du dringend beheben. Schau Dir dabei insbesondere die Zeilen 82, 83 und folgende an ... irgendwie stoppelst Du da offenbar ein vollständiges HTML-Dokument (inkl. Dokumenttyp-Deklaration) in ein anderes vollständiges HTML-Dokument (inkl. Dokumenttyp-Deklaration) - das *kann* nichts Vernünftiges geben. Du kannst nicht ernsthaft erwarten, dass alle Browser das Gleiche raten, wenn Du ihnen invaliden Code vorsetzt ...

                MfG,
                EKKi

                --
                sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
              3. @@maschas:

                nuqneH

                TOFU mag hier übrigens niemand so wirklich ...

                danke für den hinweis, war mir nicht bekannt.

                Und lass bitte die Zeichen '»» ' vor dem zitierten Text, auf den du dich beziehst. Dein Text sollte sie nicht davor haben. Nur so ist nachvollziehbar, was du zitiert hast und was von dir stammt.

                Qapla'

                --
                Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
                (Mark Twain)