Re: Loop innerhalb von 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 Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 17:55.
    Re: Loop innerhalb von Perl

      geht nicht :-)

      loop wird vom Programm umgesetzt, aber davor <perl> auch schon. Ein Programm kann sich ja nicht selbst nochmal aufrufen. Die perllösung zu loop heißt:

      get;
      while (get_next("dbname"))
      {
      out...
      }
      

      Sander


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Oliver (172 Beiträge) am Donnerstag, 31.Mai.2001, 17:41.
    Loop innerhalb von Perl

      Hallo,

      diesmal habe ich das Problem, dass ich irgendwie mit Loop innerhalb von Perl nicht klar komme. Ich bekomme ständig Fehlermeldungen.

      Was muss ich da beachten?

      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 17:55.
    Re: Loop innerhalb von Perl

      geht nicht :-)

      loop wird vom Programm umgesetzt, aber davor <perl> auch schon. Ein Programm kann sich ja nicht selbst nochmal aufrufen. Die perllösung zu loop heißt:

      get;
      while (get_next("dbname"))
      {
      out...
      }
      

      Sander

     Antworten

    Beitrag von Oliver (172 Beiträge) am Donnerstag, 31.Mai.2001, 18:25.
    Re: Loop innerhalb von Perl

      Und wie sieht diese Loop-Lösung in Perl aus?

      <table border="0" width="100%" cellspacing="1">
                <tr>
                  <td width="100%" bgcolor="#FFCC00" align="center"><font face="Verdana" size="2"><b>User</b></font></td>
                </tr>
                
                <loop db=link sort=Nr Rubrik==User>
                
                <tr>
                  <td width="100%" bgcolor="#FFFFFF"><font face="Verdana" size="1"><a href="http://$Link" target="$target">$Name</a></font></td>
                </tr>
                
                </loop>
                
              </table>
      

      Danke !!

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 18:54.
    Re: Loop innerhalb von Perl

      <perl>
      out <<EOF;
      <table border="0" width="100%" cellspacing="1">
      <tr>
      <td width="100%" bgcolor="#FFCC00" align="center"><font face="Verdana" size="2"><b>User</b></font></td>
      </tr>
      EOF
      

      get "Rubrik==User sort=Nr","link";
      while (get_next("link"))
      {
      out <<EOF;
      <tr><td width="100%" bgcolor="#FFFFFF"><font face="Verdana" size="1"><a href="http://$Link" target="$target">$Name</a></font></td>
      </tr>
      EOF
      }
      out "</table>";
      </perl>
       
      
      Sander

     Antworten

    Beitrag von Oliver (172 Beiträge) am Donnerstag, 31.Mai.2001, 22:13.
    Re: Loop innerhalb von Perl

      Super danke, im Prinzip funktioniert es... wieder etwas, was ich in die Tipps-Datenbank stellen kann ;-)

      Nur leider ist das Ergebnis in diesem Fall für mich nicht ganz befriedigend.

      Und zwar werden in der Variablen "$Link" - wie der Name schon sagt - Links innerhalb der Homepage ausgegeben. Ich will dabei die Navigation über die Datenbank steuern, indem ich zentral neue Links einbaue, ohne jedes mal die einzelnen Webseiten ändern zu müssen. Im Prinzip funktioniert das auch so.
      Allerdings enthalten in meinem Beispiel die Links weitere Variablen, die auf andere Datenbanken zurückgreifen.

      Beispiel:
      http://baseportal.de/cgi-bin/baseportal.pl?htx=/verwitwet/user/register&namerein=$namerein&sid=$sid
      Diese Variablen werden aber nicht gefüllt!?!

      Gibt es da vielleicht auch eine Lösung?

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 22:27.
    Re: Loop innerhalb von Perl

      hmm, $namerein und $sid werden doch sowieso schon übergeben, durch das Vorgängertemplate.
      also reicht ein

      out "<a href=$link&namerein=$namerein&sid=$sid>$linkname</a>";
      

      Sander

     Antworten

    Beitrag von Oliver (172 Beiträge) am Donnerstag, 31.Mai.2001, 22:46.
    Re: Loop innerhalb von Perl

      Jou, so geht's natürlich. Dass ich da nicht selber draufgekommen bin.

      Aber grundsätzlich geht es wohl nicht, dass ich eine Variable mit anspreche. In diesem Fall habe ich nämlich einen Link, in dem auch noch der Username vorkommen soll. Ich meine, dass man das auch weglassen kann. Aber nur Interesse halber. Geht so etwas?

      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 31.Mai.2001, 23:16.
    Re: Loop innerhalb von Perl

      wenn es mit den Feldern nicht zu überschneidungen kommt wie zb: aus db 1 wird die Id gebraucht, aus db 2 ein name, dabei wird bei Abfrage der 2ten db die Id der ersten überschrieben weil das Feld genauso heißt.
      praktisch könntest du sowas bauen:

      get "Id==1","navi"; #Aufruf aus der 1ten db
      get "Id==6","user"; #würdest du nun die Id des ersten brauchen, wäre sie mit 6 überschrieben
      

      Lösung:

      get "Id==1","navi";
      $idgesichert=$_id;
      get "Id==6","user";
      

      out "Id aus 1: $idgesichert, Id aus 2: $_id";

      Ergebnis:

      Id aus 1: 1, Id aus 2: 6

      du kannst auch eine andere db mit get in while (get_next())
      aufrufen. Nur immer darauf achten, das die Variablen, die du brauchst nicht überschrieben bzw umbenannt werden.

      In deinem Beispiel wäre es in etwa so:

      get "Rubrik==User sort=Nr","link";
      while (get_next("link"))
      {
      get "User==...","dbname";
      out <<EOF;
      <tr><td width="100%" bgcolor="#FFFFFF"><font face="Verdana" size="1"><a href="http://$Link&User=$User" target="$target">$Name</a></font></td>
      </tr>
       
      EOF
      }
      out "</table>";
      

      So, ich geh jetzt schlafen.

      Sander

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 1.Juni.2001, 02:21.
    Re: Loop innerhalb von Perl

      Alle Werte aus einer Abfrage werden automatisch im Hash %db gesichert, also:

      get "Id==1","navi";
      get "Id==6","user";
      

      out "Id aus 1: $navi{Id}[0], Id aus 2: $_id = $user{Id}[0]";

      ein eigenes sichern ist nicht notwendig... macht man 2 abfragen auf dieselbe db geht das auch:

      get "Id==1","navi","abfrage1";
      get "Id==6","navi";
      

      out "Id aus 1: $abfrage1{Id}[0]";

      äh, moment mir fällt grade ein, dass das mit %db erst ab der beta geht, oder? weiss es grad selber nich...

     Antworten

    Beitrag von Oliver (172 Beiträge) am Freitag, 1.Juni.2001, 09:43.
    Re: Loop innerhalb von Perl

      Guten morgen Sander,
      guten morgen Christoph,

      ein wenig kann ich es nachvollziehen, aber ein wenig ist mir das auch noch zu hoch... ;-)

      In meinem Fall habe ich den Usernamen eigentlich ja schon über das Einloggen in der Variablen "$namerein" gespeichert. Meine Idee war jetzt, in einem der Linkdatensätze mit dieser Variablen zu arbeiten. D.h. es werden z.B. nacheinander über get_next folgende Datensätze aufgerufen:

      db=link

      $Name -------------------> $Link
      Suchen --------------------> www.baseportal...htx..search
      Alles ----------------------> www.baseportal...htx..alles
      Profil $namerein ändern -> www.baseportal...htx..change
      
      u.s.w.

      Nur die Variable "$namerein" wird nicht gefüllt. Sie bleibt als Text stehen. Ich glaube aber, dass diese mit deiner Lösung nicht gefüllt wird, oder?

      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Freitag, 1.Juni.2001, 13:49.
    Re: Loop innerhalb von Perl

      erklär mal bitte genauer, woher soll der user kommen,
      Das ist die Ausgabe "Profil $namerein ändern", wie ist der Quelltext? Und eventuell ein Beispiellink?

      Sander

     Antworten

    Beitrag von Oliver (172 Beiträge) am Freitag, 1.Juni.2001, 19:20.
    Re: Loop innerhalb von Perl

      Also, in meiner Community kann ich überall den Login-Namen über $namerein auswerfen.

      Wenn sich also "Heini" eingeloggt hat, kann da z.B. folgender Begrüßungstext stehen:

      "Willkommen $namerein in unserer Community" - was für Heini dann so aussieht:
      "Willkommen Heini in unserer Community"

      So habe ich mir nun gedacht, wenn ich die Navigationsleiste über bp generieren lasse, könnte ich diese Variable auch bei einem Link einbauen.

      Die Datenbank zur Navigationsleiste hat folgende Felder:
      Nr, Name, Link, target

      entsprechend habe ich die Felder gefüllt z.B. mit:
      1, Suche, www.baseportal....htx...search, _self
      2, Alles, www.baseportal....htx...Alles, _self
      ...
      6, Profil $namerein ändern, www.baseportal....htx...change, _self
      ...

      D.h. nur bei dem Link Nr. 6 soll der Login-Name erscheinen.

      Tut er aber nicht.
      Anstelle:
      > Suche
      > Alles
      
      ...
      > Profil Heini ändern
      ...

      sieht er so aus:
      > Suche
      > Alles
      
      ...
      > Profil $namerein ändern
      ...

      Der Quelltext sieht so aus, wie du oben vorgeschlagen hast.

      Ist das jetzt genauer erklärt?

      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Samstag, 2.Juni.2001, 02:54.
    Re: Loop innerhalb von Perl

      Ne, das geht nicht, weil $namerein als Text und inhalt der Variable $Name gewertet wird.

      Sander

     Antworten

    Beitrag von fb (406 Beiträge) am Sonntag, 3.Juni.2001, 05:17.
    Re: Loop innerhalb von Perl

      Ich misch mich mla auf die gefahr hin, daß ichs garnicht verstehe, ein :-)

      Wenn Du eine Navigation mit hilfe von Perl progst kannst Du den Usernamen übergeben.

      Dazu muss aber dann die Navigation beim aufruf jeder Seite die Parameter (variablen) verarbeiten soll neu aufgebaut werden, denn nur so kann die Navigation auch reagieren.

      Ein lösungsansatz könnte sein das Du die Navigation als <include> einbaust.
      Dann kannst Du auch Var übergeben.

      Auf der seite dann etwa so:

      <html>
      
      ...
      ...
      ...
      <table>
      <include src=Navigation&namerein=$namerein>
      </table>
      
      ...
      Datenbankinhalt ausgeben
      <perl> oder <loop> oder <do actin=.. > oder was auch immer
      
      ...
      </html>

      Und sowas müsste dann im include (Navigation) template stehen:

      <tr><td>
      <a href="$Link&namerein=$namerein" target="$target">$Name</a>
      </td></tr>
      

      ungefähr Klar?

      Auf diese weise hast Du $namerein in allen Templates zur verfügung.

      fb

     Antworten

    Beitrag von Oliver (172 Beiträge) am Sonntag, 3.Juni.2001, 12:13.
    Re: Loop innerhalb von Perl

      Danke, ich werd's mal ausprobieren.

      Allerdings muss ich dabei dann für jeden Navigationsbereich eingene Templates anlegen und diese anpassen, wenn ich den Bereich erweitern muss. Dies wollte ich eigentlich mit der Datenbank umgehen.

      Trotzdem, ich werde es mal testen.

      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Sonntag, 3.Juni.2001, 14:08.
    Re: Loop innerhalb von Perl

      Mir ist jetzt noch was eingefallen um den Namen bei "profil ändern" hizubekommen.

      Als inhalt des $linkname gibts du "Profil Name ändern" ein.
      dann
      while (get_next(...))
      {
      $linkname =~ s/Name/$namerein/;  #sucht nach Name und ersetzt ihn mit $namerein
      out <<EOF;
      
      ...
      EOF
      }
      

      Sander

     Antworten

    Beitrag von Oliver (172 Beiträge) am Montag, 4.Juni.2001, 16:57.
    Re: Loop innerhalb von Perl

      Danke, ich werd's mal ausprobieren.

      Oliver ;-)

     Antworten


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