Perl Code aus Datenbank laden geht nicht - baseportal Forum - Web-Anwendungen einfach, schnell, leistungsfähig!
baseportal
English - Deutsch "Es gibt keine dummen Fragen - jeder hat einmal angefangen"

 baseportal-ForumDie aktuellsten 10, 30, 50, 100 Einträge anzeigen.  

 
 Ausgewählter Eintrag: Zur Liste 
    Beitrag von mk (966 Beiträge) am Sonntag, 5.Oktober.2008, 20:02. WWW: vokabeltrainer-online.net
    Perl Code aus Datenbank laden geht nicht

      Hallo,

      ich habe eine Datenbank angelegt wo Programmcodes abgelegt werden um dann per Zufall dies auszuführen.
      Was als reiner HTML Code ist, geht auch,
      aber perl Code wird nicht ausgeführt.
      Wie geht es richtig?
      Hier ein Teil der Ausgabeseite:
      <perl>
      get "sort=?", "wechsel";
       while(get_next "wechsel")
       {
      out "<br>$Titel";
      out <<EOF;
      <table width="100%">
        <tr>
          <td align="center">
      EOF
      out "$inhalt";
      out "</td></tr></table>";
      }
      </perl>
      
      so sieht es dann aus:
      http://kochhome.de/cgi-bin/baseportal.pl?htx=/vokabeltrainer/wechsel_inhalt

      Michael


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von mk (966 Beiträge) am Sonntag, 5.Oktober.2008, 20:02. WWW: vokabeltrainer-online.net
    Perl Code aus Datenbank laden geht nicht

      Hallo,

      ich habe eine Datenbank angelegt wo Programmcodes abgelegt werden um dann per Zufall dies auszuführen.
      Was als reiner HTML Code ist, geht auch,
      aber perl Code wird nicht ausgeführt.
      Wie geht es richtig?
      Hier ein Teil der Ausgabeseite:
      <perl>
      get "sort=?", "wechsel";
       while(get_next "wechsel")
       {
      out "<br>$Titel";
      out <<EOF;
      <table width="100%">
        <tr>
          <td align="center">
      EOF
      out "$inhalt";
      out "</td></tr></table>";
      }
      </perl>
      
      so sieht es dann aus:
      http://kochhome.de/cgi-bin/baseportal.pl?htx=/vokabeltrainer/wechsel_inhalt

      Michael

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Sonntag, 5.Oktober.2008, 23:10.
    Re: Perl Code aus Datenbank laden geht nicht

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Freitag, 10.Oktober.2008, 18:46.
    Re: Perl Code aus Datenbank laden geht nicht

      ganz einfach:

      get "filterfeld==$filterwert range=0,1", $dbname, $ergebnishash;
      $percode = $feldvariablenname_mit_perlcode
      eval $perlcode;
      


      Da wird dann einfach der Code abgearbeitet, im Datenbankfeld aber bitte keine <perl>- Tags einfügen sondern nur den "blanken" Perlcode.

      Die Variante mit dem "nackten" eval und direkten Ausgaben ist nicht sehr flexibel, die Ausgabe erfolgt dann immer dort, wo das eval steht.
      Sinnvoller fine ich, dass der code seine Ausgaben (also alles was HTML-Text ist) in eine Variable schreibt, und dann kann man diesen HTML-Schnipsel wie einen Baustein beliebig platziert und beliebig oft zur Scriptlaufzeit verwenden.

      Da kann man dann u.a. folgendes machen:

      ---schnipp dein DB-Feldinhalt
      # Modularisierte Ausgabe für HTML-Bausteine zur beliebigen Weiterverwendung
      my $out; # Geltungsbereich für Rückgabevariable
      get "sort=?", "wechsel";
       while(get_next "wechsel")
       {
      $out = "<br>$Titel";
      $out ."<<EOF;
      <table width="100%">
        <tr>
          <td align="center">
      EOF
      $out .= "$inhalt";
      $out .= "</td></tr></table>";
      }
      return $out;
      
      ---schnapp dein DB-Feldinhalt

      Im Hauptscript legst du dir eine Art "variabler" Subroutine an, auf alle Fälle bevor der Inhalt ausgegeben werden soll:

      ---schnipp
      get "filterfeld==$filterwert range=0,1", $dbname, $ergebnishash; # hier holen wir den Quelltext aus der Datenbank
      # und dann bauen wir eine Subroutine mit dem Namen des Filterwertes und dem Quelltext für diesen Wert aus der DB
      if ($_amount_query > 0){ # dient der Vermeidung von Fehlermeldungen falls kein DS vorhanden ist
      eval sub $filterwert { $feldvariablenname_mit_perlcode}; 
      }
      
      ...
      ---schnapp
      irgendwo, wo du dann gern die Ausgabe stehen haben möchtest, kannst du dann eifnach nochmal in ne Variable das Ergebnis dieser Subroutine Speichern und entweder gleich ausgeben oder dann später innerhalb der Hauptasugabe (falls die von den Perl-Manipulationen getrennt erfolgt) in etwa so:

      ---schnipp
      $modulhtml = &filterwert;
      
      ...
      out <<EOF;
      irgendwas und sonstwas
      nochmehr zeugs
      $modulhtml
      
      weiteres zeugs
      und anderes Zeugs
      EOF
      
      ---schnipp

      Und der Clou an der Sache ist, dass das ganze per Parameter in Links gesteuert werden kann, wenn nämlich bspw. der Filterwert für den Quelltext-Datensatz im Link oder Formular mitgegeben wird.

      Hoffe, dass es dir hilft und dir oder auch anderen das ganze etwas Anregung zum Ausprobieren gegeben hat...

     Antworten

    Beitrag von mk (966 Beiträge) am Sonntag, 19.Oktober.2008, 20:05. WWW: vokabeltrainer-online.net
    Re: Re: Perl Code aus Datenbank laden geht nicht

      @Ruben
      
      einfach ist was anderes.
      ich hab es jetzt versucht, bin nur mit der Syntax nicht so vertraut.
      Es kommt eine Fehler in Zeile 9

      <perl>
      $dbname="wechsel" ;
      # Code von hempelr
      get "filterfeld==$filterwert range=0,1", $dbname, $ergebnishash; # hier holen wir den Quelltext aus der Datenbank
      # und dann bauen wir eine Subroutine mit dem Namen des Filterwertes und dem Quelltext für diesen Wert aus der DB
      if ($_amount_query > 0)
      {
      #dient der Vermeidung von Fehlermeldungen falls kein DS vorhanden ist
      eval sub $filterwert 
      {$feldvariablenname_mit_perlcode};}
      $modulhtml = &filterwert;
      

      out <<EOF;
      <table border="$TaR" bgcolor="#$TaH" bordercolorlight="#$TaRF" bordercolordark="#$TaRF" cellspacing="0" cellpadding="0" width="100%">
        <tr>
          <td align="center">
      EOF
      out "$modulhtml";
      out "</td></tr></table>";
      }
      </perl>
      

      Michael

     Antworten


     
 Liste der Einträge von 10050 bis 10200:Einklappen Zur Eingabe 
Neueste Einträge << 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | Neuere Einträge < Zur Eingabe  > Ältere Einträge | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 >> Älteste Einträge


Zurück zur Homepage

© baseportal.de. Alle Rechte vorbehalten. Nutzungsbedingungen



powered in 0.09s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!