moun38: DropDown

hallo
Ich habe ein TXT-File mit verschiedenen Records. Nun möchte ich einzelne Attribute, welche mit einem Doppelpunkt getrennt sind in einem DropDown-Menü anzeigen lassen. Das ganze versuche ich mit Perl zu schreiben.
Ich danke Euch für Eure Hilfe
moun38

Ps. das Perl-Script wird von der gleichen Seite aufgerufen, wie danach das DropDown-Menü gefüllt werden sollte.

mein Script bisher:

Setze Variable

$clientOut = "putoraout.dat";

#-------------------------------------------------------------#

SubFuc Öffne und Schreibe File

#-------------------------------------------------------------#
open (fileOut, $clientOut);
$line = <fileOut>;
close (fileOut);

@pairs = split(/::/, $line);  
print "Content-type: text/html\n\n";	  
foreach $line (@pairs){  

print "$line";
}

  1. Hi,

    ich schätze wenn du "das ganze versuchst ich mit Perl zu schreiben", dann wirst du wohl am Script weitertippen müssen, anstatt es einfach in den Forum zu posten und zu erwarten, daß es jemand für dich schreibt.
    Hier stellt man gezielte Fragen, wenn man nicht weiterkommt. Wir helfen gerne, wir sind aber keine Programmiermaschinen, die nichts besseres mit ihrer Freizeit anfangen können, als Scriptchen für irgendwelche Leute zu schreiben, die selber nicht die Geduld und die Motivation haben es selber zu lernen.

    schönen tach noch
    Cruz

    hallo
    Ich habe ein TXT-File mit verschiedenen Records. Nun möchte ich einzelne Attribute, welche mit einem Doppelpunkt getrennt sind in einem DropDown-Menü anzeigen lassen. Das ganze versuche ich mit Perl zu schreiben.
    Ich danke Euch für Eure Hilfe
    moun38

    Ps. das Perl-Script wird von der gleichen Seite aufgerufen, wie danach das DropDown-Menü gefüllt werden sollte.

    mein Script bisher:

    Setze Variable

    $clientOut = "putoraout.dat";

    #-------------------------------------------------------------#

    SubFuc Öffne und Schreibe File

    #-------------------------------------------------------------#

    »»  open (fileOut, $clientOut);
    »»  $line = <fileOut>;
    »»  close (fileOut);
    »»  
    »»  @pairs = split(/::/, $line);
    »»  print "Content-type: text/html\n\n";
    »»  foreach $line (@pairs){

    print "$line";

    »»  }

    1. hallo
      Da hast du mich falsch verstanden, es ist nur ein kleiner Auszug aus dem Perl-Script und wahrscheinlich fehlt in diesem Teil 1-2 Zeile Code um mein Problem zu lösen.

      Nochmals meine "gezielte Frage":

      Ich habe im HTML ein DropDown-Menü mit dem Namen "SelectFahrzeuge". Dazu habe ich auf Unixebene ein TXT-File mit verschiedenen Records. Die einzelnen Attribute eines Record wird getrennt durch ein Doppelpunkt (":"). Das zweite Attribut bezeichnet den Fahrzeugtyp, welchen ich im DropDown-Menü anzeigen möchte (von jedem Record).

      Nun versuche ich schon seit längerem, diese Daten via PERL in das DropDown-Element anzuzeigen.

      ...und lieber Cruz, meine Art ist es schon, es zuerst selbst herauszufinden, nur nach 3 Tagen ohne Erfolg, versuchte ich mal diese Möglichkeit...

  2. Hallo,

    eine kleine Hilfestellung (zu mehr fehlt mir die Zeit):

    »»  open (fileOut, $clientOut);
    »»  $line = <fileOut>;
            ^
    Wenn Du es so machst bekommst Du nur die erste Zeile aus der Datei bis zum Zeilenumbruch auf die o.g. variable.

    Machs besser so:
    @lines = <fileOut>; # die ganze Datei auf einen Rutsch
    oder halt die Datei zeilenweise einlesen und bei der Gelegenheit gleich splitten...

    Viele Grüße, Rolf

  3. Hallo!

    Hab Dein Problem nicht ganz verstanden. Kannst Du nochmal einen Auszug aus der Textdatei posten, und das, was am Ende rauskommen soll (also die SELECT-Box)?

    So long

    1. hallo Calocybe
      ---------------------------------------------------------------------
      Kannst Du nochmal einen Auszug aus der Textdatei posten, und das, was am Ende rauskommen soll (also die SELECT-Box)?
      ---------------------------------------------------------------------
      Also das TXT-File hat folgendens Format:

      Fiat:rot:1970::Fiat:gelb:1980:Fiat:grün:1981:Fiat:blau:1990
      usw.

      • Zwei Doppelpunkte makiert ein neuer Record
          (hier sind es 4 Records)
      • Ein Doppelpunkt makiert ein neues Attribut
          (pro Record sind es 3 Attribute)

      Nun möchte ich in meiner HTML-Page dem User die Möglichkeit via DropDown-Menü geben, eine Farbe auszuwählen.
      Das TXT-File liegt UNIX-Ebene und lese es mit PERL
      Also das zusammenspiel PERL-HTML ist mir unklar, habe sogar schon gesehen, dass man HTML in einem PERL-Script programmiert.

      Besten Dank für Deine Hilfe
      moun38

      1. Hi,

        Also das TXT-File hat folgendens Format:
        Fiat:rot:1970::Fiat:gelb:1980:Fiat:grün:1981:Fiat:blau:1990
        usw.

        liegt Dein Problem darin, diese Datei mit Perl zu interpretieren, oder darin, als Ergebnis korrekten HTML-Code zu produzieren?

        Nun möchte ich in meiner HTML-Page dem User die Möglichkeit via DropDown-Menü geben, eine Farbe auszuwählen.
        Das TXT-File liegt UNIX-Ebene und lese es mit PERL

        ... oder auf die Datei zuzugreifen?

        Also das zusammenspiel PERL-HTML ist mir unklar,

        ... oder überhaupt den entsprechenden Aktivierungsmechanismus für Perl zu finden (der heißt CGI)?

        habe sogar schon gesehen, dass man HTML in einem PERL-Script programmiert.

        Nicht nur "sogar", sondern das ist der normale Weg, wenn Du ein HTML-Dokument aufgrund von serverbasierten Informationen dynamisch generieren mußt. (Nicht, daß HTML dann "programmiert" würde, ich würde das "generiert" nennen - selbst ein Formular in HTML ist für mich noch kein "Programm".)

        Besten Dank für Deine Hilfe

        Deinem Posting ist irgendwie nicht zu entnehmen, in welchen von zahlreichen möglichen Bereichen Dein Problem angesiedelt ist.

        mfG - Michael

        1. hallo
          ---------------------------------------------------------------------

          liegt Dein Problem darin, diese Datei mit Perl zu interpretieren, oder darin, als Ergebnis korrekten HTML-Code zu produzieren?

          ---------------------------------------------------------------------

          auf Perl Ebene habe ich die Werte in den entsprechenden Variablen. Also mein Problem ist es den Inhalt der Variable:
          @Farbe = ('rot','gelb','grün','blau');
          welche in Perl so gefüllt ist, irgendwie auf meiner HTML-Seite anhand eines DropDown-Menü anzuzeigen.

          Der Aufruf des Perl-Script ist mir klar
          Das lesen der TXT-Datei mit Perl ist mir klar
          Das herausfiltern der gewünschten Werte auf Perl-Ebene ist mir klar

          ..Nur, wie bringe ich den Array @Farbe auf meine HTML-Seite?
          muss ich irgenwie von Perl aus die HTML-Variablen ansprechen oder muss ich von meiner HTML-Seite den Array @Farbe ansprechen? ...und wie?
          besten Dank für Eure Hilfe
          moun38

          1. Hi,

            ..Nur, wie bringe ich den Array @Farbe auf meine HTML-Seite?
            muss ich irgenwie von Perl aus die HTML-Variablen ansprechen oder muss ich von meiner HTML-Seite den Array @Farbe ansprechen? ...und wie?

            Weder noch. Sondern Du mußt Dein HTML-Dokument durch ein Perl-Skript erzeugen lassen.
            Je nachdem, was genau Du erreichen willst, reicht es möglicherweise, nur Teile des Dokuments zu generieren und diese Generierung (den Aufruf eines Perl-Skriptes via CGI) über den SSI-Mechanismus einzubinden; der "intellektuell einfache" (nicht unbedingt der optimale) Weg ist es aber, das komplette HTML-Dokument mit "print"-Befehlen durch ein Perl-Skript (welches wiederum über die CGI-Schnittstelle aufgerufen wird) zu erzeugen.
            Eine weitere Möglichkeit würde darin bestehen, daß Dein Perl-Skript selbst SSI "macht", d. h. daß Du ein statisches HTML-Dokument mit entsprechend markierten Einfügungsstellen besitzt und aus diesem plus Deinen dropdown-Listen ein vollständiges HTML-Dokument nach stdout ausgeben kannst.

            So, jetzt hast Du erst mal genug Fachbegriffe zum Blättern in SelfHTML und für die Archivsuche ...

            mfG - Michael

            1. hallo Michael
              besten Dank für Deine Antwort. Die erste Hürde habe ich nun überwunden, indem ich schlussendlich doch eine Frage formulieren konnte, welche eine mir eine genügende Antwort gab (war nich so einfach)

              bis dann
              mfg
              moun38

      2. Also das TXT-File hat folgendens Format:
        Fiat:rot:1970::Fiat:gelb:1980:Fiat:grün:1981:Fiat:blau:1990

        Es stehen also wirklich die gesamten Daten in einer einzige Zeile? Na jeder wie er mag.

        Ich weiss war immer noch nicht, was genau rauskommen soll, aber ich schlage Dir einfach mal folgendes vor:

        #!/path/to/your/perl -w

        use strict;

        use vars qw/$filename @records/

        $filename = "putoraout.dat";

        open(FILE, "<$filename") or die("Can't open $filename for reading because $!");
            @records = split('::', <FILE>);
            close(FILE);

        @pairs = split(/::/, $line);

        print "Content-type: text/html\n\n",
              "<HTML><BODY><FORM>\n",
              "<SELECT>\n";

        for (@records) {
                my ($brand, $colour, $year) = split(':', $_, 3);
                print qq(<OPTION VALUE="$colour">$brand, $colour, $year</OPTION>\n);
            }

        print "</FORM></BODY></HTML>\n";

        Das anzupassen schaffst Du sicher selber.
        Der Ausdruck qq(...) in der for-Schleife ist gleichbedeutend mit "...", da die " aber schon innerhalb verwendet werden, habe ich eben diese Delimiter gewaehlt.

        So long