Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 10:45.
get mit zwei auswahlkriterien
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 10.Mai.2005, 10:49.
Re: get mit zwei auswahlkriterien
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
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
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Dienstag, 10.Mai.2005, 11:43.
Re: get mit zwei auswahlkriterien
Antworten
Beitrag von Oliver ;-) (500 Beiträge) am Dienstag, 10.Mai.2005, 11:57.
Re: get mit zwei auswahlkriterien
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
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
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
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
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
Antworten
Beitrag von Christoph Bergmann (8110 Beiträge) am Mittwoch, 11.Mai.2005, 00:46.
Re: Problem gelöst... glaub ich
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
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
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
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