Re: Get-Abfrage in 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 Claus (4645 Beiträge) am Freitag, 26.August.2005, 12:48.
    Re: Get-Abfrage in Perl

      war mir auch entfallen, hatte das aber noch dunkel in Erinnerung;-)

      Musste meine private Bibliothek mit Anwendungen und Testläufen erst durchforsten, um das wiederzufinden (Alles noch etwas ungeordnet. Muß mir mal für jeden Befehl ein Dossier aus den einzelnen Varianten anlegen).

      Dürfte bei vielen Datensätzen die Laufzeit im Gegensatz zum maskieren bei get geringer halten, bin aber nicht sicher;-)


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Athletickris (21 Beiträge) am Donnerstag, 25.August.2005, 19:27.
    Get-Abfrage in Perl



      Habe folgenden Perl-Code:

      <loop code=perl>
      get "Ausrichter==$VereinsnameKurzform&Jahr==2005 sort=Datum", "Termine";
      while(get_next("Termine"))
      {
       out "<a href=$Ausschreibung>";
       out "KM " if $KM;
       out "$Name am $DatumText in $Ort</a><br>";
      }
      </loop>
      

      $VereinsnameKurzform wird per URL richtig übergeben. Inhalte sind Vereinsnamen wie

      LAZ Bruchköbel
      LG Offenbach
      LAZ Mühlheim

      usw. Also immer Vereinsnamen mit zwei Teilen. Nun möchte ich die Daten aus den Datensätzen der Datenbank "Termine" ausgeben lassen, bei denen das Datenfeld "Ausrichter" gleich $VereinsnameKurzform ist. Leider wird bei der Abfrage mit "==" nichts ausgegeben, obwohl eine Übereinstimmung besteht. Ich habe die Daten überprüft. Wenn ich mit "~=" abfrage, bekomme ich die richtigen Ergebnisse, allerdings werden dann zum Beispiel nicht nur die Ergebnisse für einen Verein (z.B. LAZ Bruchköbel), sondern alle Ergebnisse von Vereinen mit "LAZ" am Anfang. Und das will ich ja greade nicht.

      Wenn ich die gleiche Abfrage nicht mit dem Vereinsnamen, sondern nur mit dem Ortsnamen mache klappt es komischerweise mit "==".

      Ich weiß nicht weiter....

     Antworten

    Beitrag von Claus (4645 Beiträge) am Donnerstag, 25.August.2005, 19:45.
    Re: Get-Abfrage in Perl

      Eigentlich wollte ich auf so eine gequirlte Sch.... nicht mehr antworten, aber was Du da versuchst ist so hahnebüchend, daß man darauf einfach antworten muß;-)

      Dein "Quelltext":

      <loop code=perl>
      get "Ausrichter==$VereinsnameKurzform&Jahr==2005 sort=Datum", "Termine";
      while(get_next("Termine"))
      {
       out "<a href=$Ausschreibung>";
       out "KM " if $KM;
       out "$Name am $DatumText in $Ort</a><br>";
      }
      </loop>
      

      Das ist ein Parade-Beispiel dafür, daß man ohne lesen der Doku etc. genau da landet!!!!!

      loop und perl-Befehle in einer tollen Kombination:

      get fragt man so ab:
      <perl>
      get .........
      

      </perl>

      loop läuft nicht innerhalb von perl.

      Ich kann Dir nur empfehlen, hier mal einen intensiven Blick zu werfen:

      http://www.baseportal.de/baseportal/doku/wiki

      In diesem Sinne

      Gruß

      Claus

      PS: woanders kriegst Du, wenn überhaupt ein "rtfm"

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Donnerstag, 25.August.2005, 21:36.
    Re: Get-Abfrage in Perl

      > Eigentlich wollte ich auf so eine gequirlte Sch.... nicht mehr antworten...
      

      Ruuuuuhig, Brauner ,-) Du hilfst oft und vielen und das ist prima, aber dieser Tonfall ist unangebracht. Auch oder gerade wenn jemand einen Fehler macht, denn wenn alles richtig wäre, bräuchte er ja nicht fragen und etwas nicht zu wissen und danach zu fragen ist nie eine Schande ;-)

      Ja und in diesem Fall machst Du (auch) einen Fehler, denn: ;-)

      > loop läuft nicht innerhalb von perl.
      

      Aber perl innerhalb vomn loop, wie im geposteten Code:

       <loop code=perl>
       get ...
       ...
       </loop>
      

      ist erstmal völlig Ok. Hier wird die Datenbank mit dem gleichen Namen wie die Seite komplett durchlaufen und der Teil innen drin als Perl-Code interpretiert - d.h. für jeden Datensatz wird ein Datensatz aus einer anderen Datenbank geholt...

      Ob das so von athletickris gewollt war, ist eine andere Frage, so wie es aussieht, dürften Deine Lösungsvorschläge schon in die richtig Richtung gehen. Müsste athletickris aber mal genauer erklären, was genau passieren soll...

      Das eigentliche Problem ist übrigens das Leerzeichen, denn bei: ;-)

      get "Ausrichter==$VereinsnameKurzform&Jahr==2005 sort=Datum", "Termine";
      

      und z.b. $VereinsnameKurzform = "LAZ Bruchköbel" kommt als Abfrage raus:

      get "Ausrichter==LAZ Bruchköbel&Jahr==2005 sort=Datum", "Termine";
      

      d.h. es wird nach "LAZ" gesucht... Also Leerzeichen escapen:

      <perl>
      $VereinsnameKurzform=~ s/ /\\ /g;
      get "Ausrichter==$VereinsnameKurzform Jahr==2005 sort=Datum", "Termine";
      while(get_next("Termine"))
      {
       out "<a href=$Ausschreibung>";
       out "KM " if $KM;
       out "$Name am $DatumText in $Ort</a><br>";
      }
      </perl>
      

      oooooder die andere Abfrageform von "get" benutzen:

      <perl>
      get ["Datum", "==", "*", "&", "Ausrichter", "==", $VereinsnameKurzform, "&", "Jahr", "==", "2005"], "Termine";
      while(get_next("Termine"))
      {
       out "<a href=$Ausschreibung>";
       out "KM " if $KM;
       out "$Name am $DatumText in $Ort</a><br>";
      }
      </perl>
      

      Sollte schneller sein... ;-)

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 26.August.2005, 06:51.
    Re: Get-Abfrage in Perl

      Sorry, hast ja recht.

      > loop läuft nicht innerhalb von perl. 
      

      damit wollte ich nur verhindern, das er den ganzen Block vielleicht noch zusätzlich in
      <perl>
      <loop>
      get.....
      </loop>
      

      </perl>

      schreibt;-)

      So wie das da stand, war in meinen Augen die loop-Anweisung eh nur ein Ersatz für <perl> get ....</perl>

      Macht ja vielleicht Sinn, wenn man mit zwei Datenbanken arbeitet, aber in diesem Fall hätte loop die Dinge ebensogut auch gleich selbst erledigen können;-)

      Gruß

      Claus

      PS: Finde übbrigens get als Abfragemedium besser, aber das ist ja bekanntlich Geschmacksache;-)

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 26.August.2005, 12:15.
    Re: Get-Abfrage in Perl

      Jo, ich denke auch, dass er nur eine DB abfragen wollte, also insofern stimmt Dein Vorschlag schon ;-)

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 26.August.2005, 07:25.
    Re: Get-Abfrage in Perl

      ach ja, hatte ich vergessen, bei loop brauchste nix maskieren;-)

      hatte das gerade mal so getestet:

      <perl>
      $frage="Donald Duck";
      </perl>
      <loop db=adressen Name==$frage code=perl>
      

      out"$Name";

      </loop> 
      

      auch wenn ich get bevorzuge und daher Felder, Inhalte usw. entsprechend wähle, in diesem Fall würde loop Sinn machen;-)

      Gruß

      Claus

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 26.August.2005, 12:20.
    Re: Get-Abfrage in Perl

      Ah ja, stimmt, war mir garnich bewusst ;-)

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 26.August.2005, 12:48.
    Re: Get-Abfrage in Perl

      war mir auch entfallen, hatte das aber noch dunkel in Erinnerung;-)

      Musste meine private Bibliothek mit Anwendungen und Testläufen erst durchforsten, um das wiederzufinden (Alles noch etwas ungeordnet. Muß mir mal für jeden Befehl ein Dossier aus den einzelnen Varianten anlegen).

      Dürfte bei vielen Datensätzen die Laufzeit im Gegensatz zum maskieren bei get geringer halten, bin aber nicht sicher;-)

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 26.August.2005, 14:42.
    Re: Get-Abfrage in Perl

      Am Schnellsten ist:

      get ["Feld", "==", $Wert], "db";
      

     Antworten

    Beitrag von Claus (4645 Beiträge) am Freitag, 26.August.2005, 14:50.
    Re: Get-Abfrage in Perl

      Ist aber bei einer Suche( aus einem extra Template mit mehreren Suchfeldern) etwas kompliziert umzusetzen;-)

      denke mal, da ist loop bei solchen Feldinhalten (xxxx yyyyy) dann schneller.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Freitag, 26.August.2005, 18:41.
    Re: Get-Abfrage in Perl

      Die Erstellungszeit von get [...] ist länger, dafür ist es schneller in der Ausführung... Aber wir reden hier von Milli-, wenn nich Mikrosekunden, letztendlich nimmt sichs nichts ;-)

     Antworten

    Beitrag von Athletickris (21 Beiträge) am Samstag, 27.August.2005, 12:04.
    Re: Get-Abfrage in Perl

      Hallo,

      ihr braucht euch wegen mir nicht in die Wolle bekommen.

      Ich lese die DOKU seeeeeeeeeeeehr ausführlich. Nur leider ist die Doku meiner Meinung nach nicht so ausführlich das alle Möglichkeiten erklärt werden.

      Ist ja auch egal, dafür ist das Forum ja da. Und ich habe lange rumexperimentiert, bevor ich im Forum gefragt habe.

      Auf jeden Fall hat es mit

      <perl>
      get ["Datum", "==", "*", "&", "Ausrichter", "==", $VereinsnameKurzform, "&", "Jahr", "==", "2005"], "Termine";
      while(get_next("Termine"))
      {
       out "<a href=$Ausschreibung>";
       out "KM " if $KM;
       out "$Name am $DatumText in $Ort</a><br>";
      }
      </perl>
      

      wunderbar geklappt. Danke.

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Samstag, 27.August.2005, 19:55.
    Re: Get-Abfrage in Perl

      > ihr braucht euch wegen mir nicht in die Wolle bekommen.
      

      Tun/haben wir nicht ;-)

      > Ist ja auch egal, dafür ist das Forum ja da.
      

      Genau ;-)

     Antworten

    Beitrag von Claus (4645 Beiträge) am Donnerstag, 25.August.2005, 20:04.
    Re: Get-Abfrage in Perl

      Damit es nicht wieder heißt, ich bin nur am meckern;-)

      <perl>
      get "Ausrichter==$VereinsnameKurzform Jahr==2005 sort=Datum", "Termine";
      while(get_next("Termine"))
      {
       out "<a href=$Ausschreibung>";
       out "KM " if $KM;
       out "$Name am $DatumText in $Ort</a><br>";
      }
      </perl>
      


      ansonsten mache einen loop:

      <loop db=deine_db Ausrichter==$VereinsnameKurzform Jahr==2005 sort=Datum code=perl> 
      
       out "<a href=$Ausschreibung>";  out "KM " if $KM;  out "$Name am $DatumText in $Ort</a><br>"; </loop>


      Gruß

      claus

     Antworten


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