Re: get mit zwei auswahlkriterien - 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 Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Mai.2005, 11:43.
    Re: get mit zwei auswahlkriterien

      get "Name==Hans | Name==Stefan";
      

      oder

      get "Name==Hans or Name==Stefan";
      

      geht übrigens genauso, getestet ;-)


    Antworten

 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 10:45.
    get mit zwei auswahlkriterien

      Hallo Zusammen,

      vielleicht habe ich ein Brett vorm Kopf, aber irgendwie komme ich nicht darauf.

      Ich habe eine Datenbank, bei dem ein Feld drei verschiedene Werte haben kann. Beispiel: Apfel, Birne und Kirsche.

      Nun will ich alle Datensätze haben in denen Apfel oder Birne vorkommt. Wie rufe ich die mit get auf?

      get "Obst==Apfel ?? Birne","Datenbank";
      

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 10.Mai.2005, 10:49.
    Re: get mit zwei auswahlkriterien

      get "Obst==Apfel | Obst==Birne","Datenbank";
      

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 11:01.
    Re: get mit zwei auswahlkriterien

      Hallo Sander,

      das dachte ich auch, aber irgendwie wird immer nur die zweite Auswahl (also in dem Fall Birne) geholt. Wenn ich Birne zuerst nenne, wird mir Apfel angezeigt...?

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 10.Mai.2005, 11:03.
    Re: get mit zwei auswahlkriterien

      is ja komisch...
      probier mal so
      get ["Obst","==","Apfel","or","Obst","==","Birne"],"Datenbank";
      

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 11:10.
    Re: get mit zwei auswahlkriterien

      wie baue ich denn da noch sort und range ein?

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Mai.2005, 11:20.
    Re: get mit zwei auswahlkriterien

      get "Obst==Apfel|Obst==Birne","Datenbank";
       
      
      so müsste es gehen...

     Antworten

    Beitrag von Oliver ;-) (439 Beiträge) am Dienstag, 10.Mai.2005, 11:26.
    Re: get mit zwei auswahlkriterien

      nöö, es kommt nur Birne...

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Mai.2005, 11:42.
    Re: get mit zwei auswahlkriterien

      Hinter Apfel ein Leerzeichen zufällig?

      Bei mir klappt das:

      <perl>
      get "Name==Hans|Name==Stefan";
      while(get_next)
      {
      out "$Name<br>";
      }
      </perl>
      

      wirft aus:

      Hans
      Stefan

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Mai.2005, 11:43.
    Re: get mit zwei auswahlkriterien

      get "Name==Hans | Name==Stefan";
      

      oder

      get "Name==Hans or Name==Stefan";
      

      geht übrigens genauso, getestet ;-)

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 11:57.
    Re: get mit zwei auswahlkriterien

      bei mir sieht es so aus:

      get "Status==offen|Status==geschlossen sort=- range=0,$range","datenbank";
      

      Es wird mir nur geschlossen angezeigt. Auch mit "or" ändert sich das nicht...

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Mai.2005, 12:16.
    Re: get mit zwei auswahlkriterien

      Wie sieht der Rest von Deinem Code aus? Und welchen Wert hat $range?

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 12:55.
    Re: get mit zwei auswahlkriterien

      Was in $range steht hängt natürlich vom user ab, der darauf zugreift.

      Könnte z.B. $range=15; sein.

      Ansonsten wird einfach der Inhalt der datenbank ausgegeben:

      get "Status==offen|Status==geschlossen sort=- range=0,$range","datenbank";
      
      ..
      while (get_next("datenbank"))
      {
      
      ...
      if ($Status eq "offen")
      {
      $Textkurz = substr($Text,0,100);
      }else
      {
      $Textkurz = "Um den Beitrag zu lesen, ist ein Login erforderlich!";
      }
      $datum=datum($Datum,"Tag0.Monat0.Jahr, Stunde:Minute");
      out "<tr><td>$datum</td><td><a href=\"http://...\" title=\"$Textkurz\">$Titel</a></td><td>$Name</td><td>$Forum</td></tr>";
      }
      
      ...

      Eigentlich nichts Besonderes. Funktioniert soweit ja auch... bis auf die beiden Kriterien, die aufgerufen werden sollen.

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 14:50.
    Re: get mit zwei auswahlkriterien

      Merkwürdig ist:

      get "Status==offen|Status==geschlossen... => geschlossen
      get "Status==geschlossen|Status==offen... => offen
      

      Irgendwie wird nur das zweite Kritierum genommen...

     Antworten

    Beitrag von Friesecke (245 Beiträge) am Dienstag, 10.Mai.2005, 16:41.
    Re: get mit zwei auswahlkriterien

      Hallo Oliver,

      könnte schon o.k. sein.

      Was machst Du denn - nur den get, also nur einen Satz holen ?

      Dann mach doch mal while_next - also alle Sätze.

      Und die Variable $range würde ich ersetzen durch eine andere, weil das
      Array schon den Namen range hat.
      (Wenn das woanders auch geht, bei bp muß das nicht gehen)

      Die Frage ist, wie die ODER-Suche funktioniert.
      Kann nämlich so sein :

      1. Durchlauf alle mit letztem Kriterium finden,
      2. Durchlauf alle mit vorletztem Kriterium finden, etc

      Bei der Ausgabe von nur einem Satz kriegst Du dann Dein Ergebnis.

      Gruß
      Friesecke

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 17:21.
    Re: get mit zwei auswahlkriterien

      Hallo Friesecke,

      ich nutze im Template nicht die Variable $range sondern $zahl. Müsste aber den gleichen Effekt haben.

      Es sollen so viele DS geholt werden, wie $zahl vorgibt.

      In der Datenbank sind mehrere Hundert Datensätze, die im Feld "Status" mit offen, geschlossen oder intern bezeichnet sind. Die Sätze mit dem Status offen oder geschlossen sollen ausgegeben werden. Insofern finde ich

      get "Status==offen|Status==geschlossen sort=- range=0,$zahl","datenbank";
      

      while (get_next(datenbank))
      {
      out...
      }
      

      logisch. Funktioniert aber leider nicht (bei mir)...

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Tina (259 Beiträge) am Dienstag, 10.Mai.2005, 18:14. WWW: ZERGportal.de
    Re: get mit zwei auswahlkriterien

      hast du die Sortierung von 'Status' gesetzt und wenn ja, auf Zahl oder Text?

      Das muß immer funktionieren; ich setzt das in zig Templates ein ;-)

      Grüße
      Tina

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 20:03.
    Re: get mit zwei auswahlkriterien

      die Sortierung steht auf Text...

     Antworten

    Beitrag von Friesecke (245 Beiträge) am Dienstag, 10.Mai.2005, 19:10.
    Re: get mit zwei auswahlkriterien

      Hallo Oliver,

      dann überprüf mal $zahl bzw. setz die Größe mal fest auf x mit x größer als Anzahl Datensätze pro Status, also
      wenn geschlossen = 12 Datensätze, offen = 15 Datensätze, dann setz zahl mal auf größer 15.

      Dann mußt Du bei jeder Deiner beiden Varianten Datensätze von beiden Statusvarianten haben.

      Du könntest natürlich auch alle Sätze mit Status ne intern holen,
      aber wir wollen ja dieses Problem klären, oder ?

      Und sag mal nicht nur : funktioniert nicht, sondern sag, was Du erhälst.

      Gruß
      Friesecke

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 20:15.
    Re: get mit zwei auswahlkriterien

      Hallo Friesecke,

      den ersten Teil deines Beitrages habe ich nicht verstanden.

      "Status ne intern" funktioniert leider auch nicht. Dann kommen alle x Datensätze, unabhängig vom Feld Status.

      Ich habe doch gesagt, was ich erhalte:

      get "Status==offen|Status==geschlossen... => x Datensätze mit Status geschlossen
      get "Status==geschlossen|Status==offen... => x Datensätze mit Status offen
      

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Friesecke (245 Beiträge) am Dienstag, 10.Mai.2005, 20:57.
    Re: get mit zwei auswahlkriterien

      Hallo Oliver,

      da muß man zu viel raten. ( wie groß ist x, wie groß die range, hakt es an ner Blätterfunktion, usw.)

      Was Du schreibst, kann völlig in Ordnung sein.

      status ne intern funktioniert auch nicht ?

      Hast Du die Abfrage nicht richtig eingebaut oder wieso soll das nicht funktionieren ? Ich schreib oftmals nur Denkanstöße, in exakte Syntax wirst Du das doch selbst umsetzen können, oder ?

      Und warum baust Du nicht ne Testabfrage ein, die Dir Deine Fragen beantwortet ?

      Gruß
      Friesecke

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 21:48.
    Re: get mit zwei auswahlkriterien

      Hallo Friesecke,

      range liegt in dem Fall zwischen 10 und 20.

      "Status ne intern" funktioniert nicht - "Status<>intern" dagegen schon

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 10.Mai.2005, 19:52.
    Re: get mit zwei auswahlkriterien

      nich, das du ein last; in der schleife stehen hast... ;-)

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 20:18.
    Re: get mit zwei auswahlkriterien

      nöö is nicht drin...

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 20:51.
    Problem gelöst... glaub ich

      mit sort=- funktioniert es nicht - mit sort=-Id klappt es...

      Wie kann man eigentlich die Ausführungszeit verkürzen? Für den Aufruf von 15 Datensätzen werden etwa 0,20 Sekunden benötigt.

      get "Status==offen|Status==geschlossen sort=-Id range=0,$zahl","datenbank";
      

      while (get_next("datenbank"))
      {
      
      ...
      }
      Ausführung 0.20

      aber

      get "sort=-Id range=0,$zahl","datenbank";
      

      while (get_next("datenbank"))
      {
      if ($Status eq "offen" || $Status eq "geschlossen")
      {
      
      ...
      }
      }
      
      Ausführung 0.05 !!

      Leider werden in letzterem Fall nicht $zahl an Datensätzen ausgegeben!

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Mai.2005, 21:57.
    Re: Problem gelöst... glaub ich

      So'n bisschen drückst Du Dich aber schon davor, die Tips auch auszuprobieren ,-)

      Wenn $zahl zu klein ist, wirst Du nur Einträge mit Status "offen" zu sehen kriegen, das ist (u.a.) der Punkt. Wie siehts denn ohne range und ohne Schleifeninnenteile aus, also:

      get "Status==offen|Status==geschlossen","datenbank";
      while(get_next)
      {
        out "Status=$Status - weitere Felder...<br>";
      }
      

      Klappt das? (Muss ;-) )

      Wg. Zeiten:

      Das "sort" kostet viel Zeit, versuch mal:

      get "Id==*|Status==offen|Status==geschlossen","datenbank";
      

      ;-)

     Antworten

    Beitrag von Sander (8133 Beiträge) am Dienstag, 10.Mai.2005, 23:39.
    Re: Problem gelöst... glaub ich

      get "Id==*|Status==offen|Status==geschlossen","datenbank";
      

      holt dir jeden DS, da müsste ne &-Verknüpfung mit klammern ran, die gibts ja leider nich

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 11.Mai.2005, 00:46.
    Re: Problem gelöst... glaub ich

      Achso nich aufgepasst:

      get "Id==* Status==offen|Status==geschlossen","datenbank";
      

      müsste stimmen ;-) (Wer braucht schon Klammern ;-) )

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Mittwoch, 11.Mai.2005, 08:41.
    Re: Problem gelöst... glaub ich

      Guten Morgen,

      das ist schneller als mit sort. Allerdings will ich die letzten $range Einträge haben. Auf diese Weise erhalte ich die ersten...

      Gibt es denn eine resourcenschonende Möglichkeit, die letzten zu erhalten?

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 11.Mai.2005, 13:33.
    Re: Problem gelöst... glaub ich

      Ja:

      get "Id==* Status==offen|Status==geschlossen sort=- range=0,100","datenbank";
      

      "sort" ist nur "böse", wenn es Felder sortieren muss, ein "sort=-" dreht die Sache nur um.

      Möglich ist auch:

      get "Id==* Status==offen|Status==geschlossen range=-100,100","datenbank";
      

      was Dir die letzten 100 gibt, aber in der ursprünglichen Reihenfolge.

      Wie sind denn hier die Zeiten bei Dir? Würd mich mal interessieren ;-)

      Und: Klappt nun alles?

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Mittwoch, 11.Mai.2005, 14:03.
    Re: Problem gelöst... glaub ich

      Sieht so aus:

      get "Id==* Status==offen|Status==geschlossen range=-$zahl,$zahl","datenbank"; => Ausführung 0.02
      

      get "sort=-Id Status==offen|Status==geschlossen range=0,$zahl","datenbank"; => Ausführung 0.21

      Die erste Version kommt aber nicht in Frage, da ich die Anzeige in umgekehrter Reihenfolge brauche.

      sort=- funktioniert nicht zusammen mit "Status==offen|Status==geschlossen"

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 11.Mai.2005, 15:24.
    Re: Problem gelöst... glaub ich

      > get "Id==* Status==offen|Status==geschlossen range=-$zahl,$zahl","datenbank"; => Ausführung 0.02
      

      Prima, so (schnell) muss es sein ;-)

      > sort=- funktioniert nicht zusammen mit "Status==offen|Status==geschlossen"
      

      Muss es ;-)

      Also nochmal:

      get "Id==* Status==offen|Status==geschlossen sort=- range=0,100","datenbank";
      

      Was kommt da z.b. raus?

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Mittwoch, 11.Mai.2005, 16:00.
    Re: Problem gelöst... glaub ich

      OK, du hast mich (zum Teil) überzeugt...

      Es werden zunächst alle Einträge mit Status "geschlossen" und anschließend die Einträge mit "offen" ausgegeben. Ausführung 0.06

      Id 20 - geschlossen
      Id 18 - geschlossen
      Id 17 - geschlossen
      Id 14 - geschlossen
      Id 13 - geschlossen
      Id 10 - geschlossen
      ...
      Id 21 - offen
      Id 16 - offen
      Id 15 - offen
      Id 12 - offen
      Id 11 - offen
      Id 9 - offen
      ...

      Das hilft mir aber nicht weiter, weil ich die letzten $range Einträge haben möchte:

      Id 21 - offen
      Id 20 - geschlossen
      Id 18 - geschlossen
      Id 17 - geschlossen
      Id 16 - offen
      Id 15 - offen
      Id 14 - geschlossen
      Id 13 - geschlossen
      Id 12 - offen
      Id 11 - offen
      Id 10 - geschlossen
      Id 9 - offen
      ...

      Und das bekomme ich wohl nur mit sort=-Id hin, oder?

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 11.Mai.2005, 17:48.
    Re: Problem gelöst... glaub ich

      Mmh, ja, doch stimmt leider (und Sander hat hier: http://baseportal.de/baseportal/baseportal/forum&wcheck=1&Pos=11455.0000001 natürlich recht ;-) ).

      Am Schnellsten sollte dann tatsächlich sein (hängt aber von der Anzahl der Einträge ab ;-)):

      get "sort=- range=0,$zahl","datenbank";
      while (get_next("datenbank"))
      {
        if ($Status eq "offen" || $Status eq "geschlossen")
        {
          ...
        }
      }
      

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Mittwoch, 11.Mai.2005, 18:12.
    Re: Problem gelöst... glaub ich

      ok, dann muss ich doch mit sort=-Id arbeiten.

      Mit deiner Variante werden ja zwar $zahl Einträge geholt, aber nur geschlossen und offen angezeigt, so dass dann tatsächlich weniger als $zahl ausgegeben werden.

      Grüße
      Oliver ;-)

     Antworten

    Beitrag von Oliver ;-) (500 Beiträge) am Mittwoch, 11.Mai.2005, 22:14.
    Re: Problem gelöst... glaub ich

      tja, das war's... ;-)

      get "Id==* sort=- Status<>intern range=0,$zahl","datenbank"; => Ausführung 0.03
      

      Danke

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 11.Mai.2005, 20:57.
    Re: Problem gelöst... glaub ich

      und wie ist es, wenn du wirklich status<>3ter_zustand machst?

     Antworten


     
 Liste der Einträge von 24525 bis 24600: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!