Re: include im perl - 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 richard (1187 Beiträge) am Sonntag, 2.April.2006, 21:42.
    Re: include im perl

      Innerhalb von Perl mußt Du wahrscheinlich mit handfestem Perl, z.b. Modulen arbeiten.

      Vielleicht gehts aber auch so:

      <perl>
      get "Id==$Id", "datenbank";
      if($_amount_query < 1) {
      out <<EOF;
      <html> bla bla bla
      EOF
      </perl>
      

      <include src=template_mit_codebloecken code==1>

      <perl>
      out <<EOF;
      </hmtl>
      EOF
      </perl>
      


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Thomas H. (180 Beiträge) am Sonntag, 2.April.2006, 18:52.
    include im perl

      Hi,
      mal wieder ein Syntaxproblem.
      In dem folgenden Teil soll von einem ausgelagerten Template,
      in dem sich verschiedene Codeblöcke befinden ein bestimmter Block geladen werden:

      <perl>
      get "Id==$Id", "datenbank";
      if($_amount_query < 1) { 
      out <<EOF;
      <html> bla bla bla </hmtl>
      EOF
      include "template_mit_codebloecken code==1";
      out <<EOF;
      </html>
      EOF
      </perl>
      


      Es kommt aber eine Fehlermeldung. Seite existiert nicht oder sowas.
      Es nehme an, die Schreibweise mit dem code==1

      include "template_mit_codebloecken code==1";
      

      ist falsch.
      Oder?

      Gruß
      Thomas

     Antworten

    Beitrag von richard (1187 Beiträge) am Sonntag, 2.April.2006, 20:15.
    Re: include im perl

      Laß das code==1 weg. Include lädt meines Wissens ganze Dateien und keine Teile davon.

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Sonntag, 2.April.2006, 20:31.
    Re: include im perl

      Ne, ne das geht schon.

      Außerhalb von Perl, mit

      <include src=template_mit_codebloecken code==1>
      

      geht´s ja. Aber das kann ich hier nicht verwenden.

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Sonntag, 2.April.2006, 21:00.
    Re: include im perl

      Als Zusatzinfo:
      Im template_mit_codebloecken steht dann z.B:


      <perl>
      if($code eq "1")
      {
      out <<EOF;
      <html>
      
      bla bla bal
      EOF
      } 
      </perl>
      

     Antworten

    Beitrag von richard (1187 Beiträge) am Sonntag, 2.April.2006, 21:03.
    Re: include im perl

      Entweder mußt Du für jeden Deiner Codeblöcke eine eigene Datei erstellen oder wahrscheinlich besser, Du schreibst Deine Codeblöcke als Unterfunktionen. Die kannst Du alle zusammen in einer Datei speichern. Mit dem include der Datei stehen diese Unterfunktinoen dann in dem Template zur Verfügung und können je nach Bedarf aufgerufen werden.

     Antworten

    Beitrag von richard (1187 Beiträge) am Sonntag, 2.April.2006, 21:08.
    Re: include im perl

      Oder:
      Du kannst mal versuchen das <perl> wegzulassen.

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Sonntag, 2.April.2006, 21:14.
    Re: include im perl

      Genau das mit den Codeblöcken will ja machen :-)
      D.h. so mache ich es schon seit einiger Zeit.

      Wie schon gesagt, mit:

      <include src=template_mit_codebloecken code==1>
      

      funktioniert das Prinzip ja auch.
      Aber wenn ich das so.....

      <perl>
      get "Id==$Id", "datenbank";
      if($_amount_query < 1) { 
      out <<EOF;
      <html> bla bla bla
      <include src=template_mit_codebloecken code==1>
      </hmtl>
      EOF
      </perl>
      

      ...in das Script setze wird überhaupt nichts
      includiert.

     Antworten

    Beitrag von richard (1187 Beiträge) am Sonntag, 2.April.2006, 21:42.
    Re: include im perl

      Innerhalb von Perl mußt Du wahrscheinlich mit handfestem Perl, z.b. Modulen arbeiten.

      Vielleicht gehts aber auch so:

      <perl>
      get "Id==$Id", "datenbank";
      if($_amount_query < 1) {
      out <<EOF;
      <html> bla bla bla
      EOF
      </perl>
      

      <include src=template_mit_codebloecken code==1>

      <perl>
      out <<EOF;
      </hmtl>
      EOF
      </perl>
      

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Sonntag, 2.April.2006, 21:52.
    Re: include im perl

      Nee. leider nicht.
      Zwischen
      out <<EOF; und EOF darf ( soweit ich weiß), kein Perl.
      

      Habe gerade nochmal ein einen Test gemacht und den zu includierenden
      Block in eine separate Datei geschrieben...

      <perl>
      get "Id==$Id", "datenbank";
      if($_amount_query < 1) { 
      out <<EOF;
      <html> bla bla bla
      EOF
      include "Block1";
      out <<EOF;
      </hmtl>
      EOF
      </perl>
      

      ...dann geht´s auch. Es liegt also, wie ich schon vermutet habe,
      am code==1. Dafür gibt´s eventuell eine andere Variante.

      Ich befürchte aber das gerade da der Haken liegt. Die Datei, welche includiert wird enthält ja Perl Code. Und genau den würde ich ja ausschließen wenn ich ihn zwischen out <<EOF; und EOF setze.
      Jetzt sitze ich in der Zwickmühle.

     Antworten

    Beitrag von richard (1187 Beiträge) am Sonntag, 2.April.2006, 22:28.
    Re: include im perl

       Zwischen
      
       out <<EOF; und EOF darf ( soweit ich weiß), kein Perl.

      Hab ich ja nicht vorgeschlagen. Ich dachte daran, den Perl-Block (nach EOF) zu schließen, dann Deine Datei einzulesen und danach einen neuen Perl-Block (und <<EOF) aufzumachen.



      Aber zu Deinem code==1. Wenn ich das jetzt richtig verstanden habe, willst Du mit diesem Ausdruck eine Variable setzen, die dann innerhalb der eingebundenen Datei ausgewertet werden soll. Dann setz diese Variable doch vor dem Aufruf der Datei innerhalb des Perl und ruf die Datei dann ohne Zusatz auf.

       $code=1;
       include "einzubindende_Datei_ohne_code==1";
      

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Sonntag, 2.April.2006, 23:01.
    Re: include im perl

      Habe ich ausprobiert. Kommt aber auch wieder die gleiche
      Fehlermeldung. Seite kann nicht aufgerufen werden.
      Ich habe jetzt hier nochmal zusammengefaßt und vereinfacht das Prinzip.
      Vielleicht gibts auch ein Übermittlungsproblem.
      Danke für die Geduld.:-)


      Das ist das Template in das die externen Blöcke eingebunden werden soll:

      <perl>
      get "Id==$Id", "datenbank";
      #######################################################################
      # Prüfung der Objektnummer / Falls -Falsch- wird der folgende Block (1) erzeugt
      #######################################################################
      if($_amount_query < 1) { 
      out <<EOF;
      <html>
      <head>
      
      Html Quelltext der ausgegeben wird wenn die Objektnummer falsch ist
      </head>
      <body>
      EOF
      $code=menu;
      include "blockarchiv==1";
      out <<EOF;
      </body>
      </html>
      EOF
      #######################################################################
      # / Falls -Richtig- wird der folgende Block (2) erzeugt
      #######################################################################
      } else {
      out <<EOF;
      <html>
      
      Html Quelltext der ausgegeben wird wenn die Objektnummer falsch ist
      </html>
      EOF
      include "blockarchiv==2";
      out <<EOF;
      }
      </perl>
      






      Und das ist das Template blockarchiv.
      Hier sind die verschiedenen Blöcke enthalten:


      <perl>
      if($code eq "1")
      {
      out <<EOF;
      <html>
      
      html Quelltext...
      </html>
      EOF
      } 
      

      if($code eq "2")
      {
      out <<EOF;
      <html>
      
      html Quelltext...
      </html>
      EOF
      } 
      </perl>
      
      usw....




      Diese Blöcke werden übrigens auch von anderen Templates benutzt.
      Und in diesen Templates kann ich die Dateien problemlos so aufrufen,
      aber nur wenn es so notiert ist:
      <perl>
      
      Perl Code..
      </perl>
      <include src=admin_003_blockarchiv code==1>
      

     Antworten

    Beitrag von richard (1187 Beiträge) am Sonntag, 2.April.2006, 23:36.
    Re: include im perl

      Zur Klärung. Wenn Du statt

       include "blockarchiv==2";
      

      das:

       $code = "2";
       include "blockarchiv";
      

      eingibst (wenn -if($code eq "2") ... - aufgerufen werden soll), funktioniert es also nicht,

       include "blockarchiv";  (bei nur einem einzubindenden Block)
      

      funktioniert aber?

      Gehe jetzt erstmal ins Bett, schaue aber morgen spätestens am Abend mal wieder rein. Vielleicht hat bis dahin ja auch jemand die Lösung.

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Sonntag, 2.April.2006, 23:47.
    Endlich :-)) Es läuft.

      Es funktioniert !

      $code = "2";
      include "blockarchiv";
      

      Das war die Lösung !
      Nach 4 Stunden hat bei mir devintiv die Konzentration
      nachgelassen.

      Danke für die Hilfe.
      Jetzt ist tatsächlich Bett angesagt. Langt für heute.

      Viele Grüße
      Thomas

     Antworten

    Beitrag von Pouraga (1396 Beiträge) am Montag, 3.April.2006, 15:36.
    Re: Endlich :-)) Es läuft.

      Schön das es funktioniert, aber ich möcht nur mal klugscheissen das der Ansatz mir irgendwie verkehrt herum vokommt.

      statt


      ------template_mit_codebloecken------
      if (code==1){
      out ...;
      }elsif (code == 2){
      out ....;
      }elsif (code == 3){
      out ....;
      }
      ------template in dem eingebunden wird------
       $code=1;  include "template_mit_codebloecken";  $code=2;  include "template_mit_codebloecken";  $code=3;  include "template_mit_codebloecken";
      ----------------


      würde ich doch lieber

      ------template_mit_codebloecken------
      sub code1{
      out ...;
      }
      sub code2{
      out ....;
      }
      sub code3{
      out ....;
      }
      ------template in dem eingebunden wird------
       include "template_mit_codebloecken";  &code1();  &code2();  &code3();
      ----------------


      machen, das ist übersichtlicher und es wird nicht ständig immer alles immer wieder eingebunden von dem dann nur ein kleiner teil gebraucht wird.


      ps: Passt zwar nicht wirklich hier her ist aber ein ganz nettes undokumentiertes feature wie ich finde
      $inhalt = include "template";
      

      Alles was im template ge "out"et wird , wird nicht ausgeben sondern steht in $inhalt

     Antworten

    Beitrag von Thomas H. (180 Beiträge) am Montag, 3.April.2006, 16:19.
    Re: Endlich :-)) Es läuft.

      Werde ich mal in Ruhe testen.
      Müßte eigentlich auch so gehen. Wäre tatsächlich einfacher.

      Wobei natürlich die Frage ist
      ob es dann auch funktioniert wenn in den Templates,
      in denen kein Perl vorkommt, und ich es so einbinde....

      <include src=template_mit_codebloecken code==1>
      


      ...dann auch noch funktioniert.
      Mit der jetzigen Variante geht es zumindet bei beiden Möglichkeiten.

      ( Werde es herausfinden. )

      Viele Grüße
      Thomas

     Antworten


     
 Liste der Einträge von 19051 bis 19201: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.08s by baseportal.de
Erstellen Sie Ihre eigene Web-Datenbank - kostenlos!