Re: Aufruf über URL um Filter zu setzen bei get - 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 hempelr (1976 Beiträge) am Mittwoch, 22.März.2006, 12:47.
    Re: Aufruf über URL um Filter zu setzen bei get

      so kompliziert ist das auch wieder nicht, wenigstens bei dem einen Filterkriterium.
      Also - erst mal funktioniert Such- Filter- und Ausgabbereichskriterien in der URL übergeben mit get definitiv n i c h t!
      Man muss mit Übergabe-Parametern arbeiten, sinnvollerweise mit anderem Namen als die der Feldvariablen.
      Und um Fehlfunktionen vorzubeugen, sollten diese Parameter dann mit Standardwerten vorbelegt werden.

      URL:
      $_link&range=0,5&ftitel=s
      

      Hiermit wird ans Template die Variable ftitel mit dem Wert s belegt übergeben.
      Das im Template vorm get auswerten bzw. vorbelegen (wenn bspw. nicht vorhanden):

      $ftitel  ||= "*";
      

      was soviel heist wie:
      wenn ftitel definiert und nicht leer diese benutzen, ansonsten "*" zuweisen.
      Im get nun einfach folgendes:

      get "Titel~=$ftitel", $db, "ergebnishash";
      
      nun werden entweder alle Datensätze, deren Wert im Feld Titel mit dem Übergabewert aus der URL angezeigt oder, wenn ftitel nicht in der URL übergeben wurde, alle Datensätze mit beliebigem Wert im Feld Titel (weil da aufgrund der Zeile zuvor ein Stern als Wert in der Var steht)

      Datumswerte kann man im get nur im internen Format vergleichen, ich bin mir nicht sicher, ob ein Vergleich auf die Funktion jetzt geht. Ich beleg da grundsätzlich Variablen, das ist vom Handling meiner Meinung nach einfacher und durchsichtiger, also in etwa so:

      $fdatumstart = datum(jetzt, "intern");
      $fdatumende = datum(jetzt+1,"intern");
      

      im get dann
      get "Titel~=$ftitel termin==$fdatumstart or termin=$fdatumende"...
      

      mit der Uhrzeit das hat so seinen Schleuder, weil Baseportal intern nicht nur die Uhrzeit sondern einen kompletten Datumswert abspeichert. Das als Datumsfeld zu nutzen ist nicht ganz trivial, man muss hier auf den 1.1.1920 mit der Uhrzeit vergleichen, meiner Meinung nach ist ein Textfeld da besser geeignet bzw. vom Handling her einfacher.

      Mit dem Ausgabebereich verhält es sich ähnlich, auch hier sind Zwischenvariablen sinnvoll, in etwa so:
      URL:
      $_link&range=0,5&ftitel=s&ra=0&ra_l=5
      

      wobei hier ra für Anfang des Bereiches und ra_l für Länge des Bereiches steht
      im Template dann zunächst auswerten / vorbelegen:

      $ra ||= "0";
      $ra_l ||= "5";
      

      was soviel bedeutet wie:
      wenn Var ra definiert und nicht leer, dann diesen Wert nehmen, ansonsten 0
      adäquat für ra_l

      im get dann:
      get "Titel~=$ftitel termin==$fdatumstart or termin=$fdatumende range=$ra,$ra_l"...
      

      Die Werte für $ra und $ra_l kann man dann für Blätterlinks noch berechnen (falls mehr DS vorhanden sind, als beim URL angegeben Ausgabebereich)
      Nicht vergessen, den alle Parameter dann in den Blätterlink zu übernehmen.
      Anschaun kannst du dir das evtl. auch unter
      http://baseportal.de/cgi-bin/baseportal.pl?show=/hempelr/predigten/predigt
      bzw.
      http://baseportal.de/cgi-bin/baseportal.pl?show=/hempelr/predigten/archiv

      Ist nicht besonders gut kommentiert, aber ein paar Verfahrensweisen sind schon ersichtlich - ausserdem sind die Templates nicht sehr kompliziert.
      Hoffe, das hilft dir weiter...


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von mk (966 Beiträge) am Dienstag, 21.März.2006, 14:16.
    Aufruf über URL um Filter zu setzen bei get

     Antworten

    Beitrag von mk (966 Beiträge) am Dienstag, 21.März.2006, 15:04.
    Re: Aufruf über URL um Filter zu setzen bei get

     Antworten

    Beitrag von Claus (4645 Beiträge) am Dienstag, 21.März.2006, 15:17.
    Re: Aufruf über URL um Filter zu setzen bei get

      Wenn ich Dein "get" mal frei "übersetze" steht da:

      Hole alle Datensätze und die mit den Bedingungen auch noch;-))

      Nimm mal das "Id=*" raus und probiere dann nochmal

      Gruß

      Claus

     Antworten

    Beitrag von mk (966 Beiträge) am Dienstag, 21.März.2006, 15:38.
    Re: Aufruf über URL um Filter zu setzen bei get

     Antworten

    Beitrag von mk (966 Beiträge) am Dienstag, 21.März.2006, 19:09.
    Re: Aufruf über URL um Filter zu setzen bei get

     Antworten

    Beitrag von Claus (4645 Beiträge) am Dienstag, 21.März.2006, 19:15.
    Re: Aufruf über URL um Filter zu setzen bei get

     Antworten

    Beitrag von mk (966 Beiträge) am Dienstag, 21.März.2006, 19:28.
    Re: Aufruf über URL um Filter zu setzen bei get

      danke das ist ja mächtig.
      Da verstehe ich doch zu wenig von perl.
      da ist doch loop einfacher wenn man es nutzen kann.

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Mittwoch, 22.März.2006, 12:47.
    Re: Aufruf über URL um Filter zu setzen bei get

      so kompliziert ist das auch wieder nicht, wenigstens bei dem einen Filterkriterium.
      Also - erst mal funktioniert Such- Filter- und Ausgabbereichskriterien in der URL übergeben mit get definitiv n i c h t!
      Man muss mit Übergabe-Parametern arbeiten, sinnvollerweise mit anderem Namen als die der Feldvariablen.
      Und um Fehlfunktionen vorzubeugen, sollten diese Parameter dann mit Standardwerten vorbelegt werden.

      URL:
      $_link&range=0,5&ftitel=s
      

      Hiermit wird ans Template die Variable ftitel mit dem Wert s belegt übergeben.
      Das im Template vorm get auswerten bzw. vorbelegen (wenn bspw. nicht vorhanden):

      $ftitel  ||= "*";
      

      was soviel heist wie:
      wenn ftitel definiert und nicht leer diese benutzen, ansonsten "*" zuweisen.
      Im get nun einfach folgendes:

      get "Titel~=$ftitel", $db, "ergebnishash";
      
      nun werden entweder alle Datensätze, deren Wert im Feld Titel mit dem Übergabewert aus der URL angezeigt oder, wenn ftitel nicht in der URL übergeben wurde, alle Datensätze mit beliebigem Wert im Feld Titel (weil da aufgrund der Zeile zuvor ein Stern als Wert in der Var steht)

      Datumswerte kann man im get nur im internen Format vergleichen, ich bin mir nicht sicher, ob ein Vergleich auf die Funktion jetzt geht. Ich beleg da grundsätzlich Variablen, das ist vom Handling meiner Meinung nach einfacher und durchsichtiger, also in etwa so:

      $fdatumstart = datum(jetzt, "intern");
      $fdatumende = datum(jetzt+1,"intern");
      

      im get dann
      get "Titel~=$ftitel termin==$fdatumstart or termin=$fdatumende"...
      

      mit der Uhrzeit das hat so seinen Schleuder, weil Baseportal intern nicht nur die Uhrzeit sondern einen kompletten Datumswert abspeichert. Das als Datumsfeld zu nutzen ist nicht ganz trivial, man muss hier auf den 1.1.1920 mit der Uhrzeit vergleichen, meiner Meinung nach ist ein Textfeld da besser geeignet bzw. vom Handling her einfacher.

      Mit dem Ausgabebereich verhält es sich ähnlich, auch hier sind Zwischenvariablen sinnvoll, in etwa so:
      URL:
      $_link&range=0,5&ftitel=s&ra=0&ra_l=5
      

      wobei hier ra für Anfang des Bereiches und ra_l für Länge des Bereiches steht
      im Template dann zunächst auswerten / vorbelegen:

      $ra ||= "0";
      $ra_l ||= "5";
      

      was soviel bedeutet wie:
      wenn Var ra definiert und nicht leer, dann diesen Wert nehmen, ansonsten 0
      adäquat für ra_l

      im get dann:
      get "Titel~=$ftitel termin==$fdatumstart or termin=$fdatumende range=$ra,$ra_l"...
      

      Die Werte für $ra und $ra_l kann man dann für Blätterlinks noch berechnen (falls mehr DS vorhanden sind, als beim URL angegeben Ausgabebereich)
      Nicht vergessen, den alle Parameter dann in den Blätterlink zu übernehmen.
      Anschaun kannst du dir das evtl. auch unter
      http://baseportal.de/cgi-bin/baseportal.pl?show=/hempelr/predigten/predigt
      bzw.
      http://baseportal.de/cgi-bin/baseportal.pl?show=/hempelr/predigten/archiv

      Ist nicht besonders gut kommentiert, aber ein paar Verfahrensweisen sind schon ersichtlich - ausserdem sind die Templates nicht sehr kompliziert.
      Hoffe, das hilft dir weiter...

     Antworten

    Beitrag von mk (966 Beiträge) am Mittwoch, 22.März.2006, 17:38.
    Re: Aufruf über URL um Filter zu setzen bei get

      @hempelr
      

      Da hste dich ja echt ins Zeug gelegt mit der Beschreibung.
      Wenn ich muß würde ich das nun wohl auch hinbekommen,
      Aber Ehrlich gesagt, gibt es kein Grund für mich dies für meinen Fall immer noch zumachen, da ich die Seite nun mit loop ausführe und da dies ja viel einfacher ist.

      Michael

     Antworten

    Beitrag von hempelr (1976 Beiträge) am Mittwoch, 22.März.2006, 19:01.
    ;-) n.t. Re: Aufruf über URL um Filter zu setzen bei get

      ;-)

     Antworten


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