Beitrag von Tini (187 Beiträge) am Mittwoch, 28.Juli.2004, 09:48.
problem mit sortierung
hallo,
ich habe folgendes form was auch funktioniert.
ich möchte aber gerne die sortierung umgekehren.
momentan wird mir immer zuerst das untenstehendste
angezeigt.
ich möchte aber gerne zuerst, "Alle" und dann alphabetisch.
danke
tini
EOF
get "Auswahl==*", "auswahl_db", "erghash";
while(get_next("erghash"))
{
push @opAuswahl, $Auswahl if index("@opAuswahl", "$Auswahl")<0;
}
foreach (@opAuswahl)
{
$a_opAuswahl .= $opAuswahl eq $fauswahl ? "<option selected value=$_>$_" : "<option value=$_>$_";
}
out<<EOF;
<b>Bitte wählen Sie:</b>
<select name="fauswahl=">
<option value='*'>Alle
$a_opAuswahl
</select>
<input type="submit" value="suchen">
</form>
Antworten
Beitrag von hempelr (1976 Beiträge) am Mittwoch, 28.Juli.2004, 10:02.
Re: problem mit sortierung
Antworten
Beitrag von Tini (187 Beiträge) am Mittwoch, 28.Juli.2004, 16:32.
Re: problem mit sortierung
hallo ruben,
danke für deine schnelle hilfe, aber
ich habe mich vermutlich falsch ausgedrückt.
wenn ich das optionsfeld anklicke ist alles sortiert,
aber die auswahl, die zuerst im optionsfenster erscheint,
ist das letze, was ganz unten in der auswahl steht und nicht
das oberste, wie es sein sollte.
bsp:
dropdown-optionsfeld:
alle
ostern
pfingsten
weihnachten
im feld erscheint weihnachten (letzte pos.) und nicht
alle (erste pos.)
tini :-)
Antworten
Beitrag von horstees (229 Beiträge) am Mittwoch, 28.Juli.2004, 19:43.
Re: problem mit sortierung
Hallo tini,
mit dem code, den wir hier sehen konnten erzeugst Du
eindeutig zuerst
alle
dann entweder unsortiert hinter 'alle':
Ostern
Weihnachten
Pfingsten
o.ä.
oder mit sort (nach ruben) wieder hinter 'alle':
Ostern
Pfingsten
Weihnachten
Könnte es sein, dass die Auswahl vor dem ersten Klick - 'zuerst' -
in einem anderen Template erzeugt wird oder in einem anderen Zweig
des selben Templates, evtl. abhängig davon ob das Ding schon mal
gesendet wurde oder nicht?
horstees
Antworten
Beitrag von Tini (187 Beiträge) am Mittwoch, 28.Juli.2004, 21:31.
Re: problem mit sortierung
hallo horstees,
in der auflistung im dropdown ist die reihenfolge
ja richtig (egal ob mit oder ohne sort).
wenn ich ein "statisches" dropdown mache sieht das z.b.
so aus:
<select name="Jahreszeit~=">
<option value="">-alle-
<option>Frühling
<option>Sommer
<option>Herbst
<option>Winter
wird die seite angewählt, ist das feld im dropdownmenü,
welches ich sehe, ohne irgendwo zu klicken "-alle-".
bei meinem dropdown sieht man nicht "-alle-", sonder "Winter"
danke
tini
hier mal das ganze template:
-------------------------------------------
(html).........
<loop db=angebotstext code=perl>
out <<EOF;
<TR><TD><B>$Headline</B>
</FONT></P></TD></TR>
<TR><TD><P><br>$Text1<p><center>
<form action="http://..." method="post" enctype="multipart/form-data">
<input type=hidden name="htx=" value="/...">
EOF
get "Auswahl==*", "daten", "erghash";
while(get_next("erghash"))
{
push @opAuswahl, $Auswahl if index("@opAuswahl", "$Auswahl")<0;
}
foreach (sort @opAuswahl)
{
$a_opAuswahl .= $opAuswahl eq $fauswahl ? "<option selected value=$_>$_" : "<option value=$_>$_";
}
out<<EOF;
<b>Bitte wählen Sie:</b>
<select name="fauswahl=">
<option value='*'>Alle
$a_opAuswahl
</select>
<input type="submit" value="suchen">
</form>
</center>
</TD></TR>
...(html)
Antworten
Beitrag von horstees (229 Beiträge) am Mittwoch, 28.Juli.2004, 22:52.
Re: problem mit selected???
Guck noch mal an der Stelle:
{
$a_opAuswahl .= $opAuswahl eq $fauswahl ? "<option selected value=$_>$_" : "<option value=$_>$_";
}
Lass dir mal zwischenzeitlich den Wert von $opAuswahl ausgeben,
meiner Meinung nach ist der undefiniert.
Besser passt hier $_ , ...
Beim ersten Aufruf des templates ist auch $fauswahl leer.
Du fragst also, ob "" eq "" ?
wenn true dann <option selected value $_>$_
wenn false dann <option value $_>$_
Da das aber für jede deiner Abfragen true ist, sind alle selected, ausser
dem <option value=*>alle, weil diese ja ausserhalb der for-Schleife gebildet wird.
Ist eine option selected, so wird sie angezeigt.
Ich vermute mal, du siehst im HTML-Quelltext deines Templates sowas wie:
-----------------------------
<select name="fauswahl=">
<option value='*'>Alle
<option selected value=Frühling>Frühling
<option selected value=Sommer>Sommer
<option selected value=Herbst>Herbst
<option selected value=Winter>Winter
</select>
----------------------------------
Es dürfte aber im Normalfall nur eine Reihe selected sein,du verwendest ja kein <select name=..... muliple>
Falls meine Vermutungen zutreffen, bau mal sowas ein wie:
# $fauswahl ist nur def wenn gesendet wurde
if(!$fauswahl || $fauswahl eq alle )
{$selec = "selected"}
else{$selec = "";}
out...
<option $selec value='*'>alle
EOF
Ich hoffe es hilft
horstees
Antworten
Beitrag von hempelr (1976 Beiträge) am Donnerstag, 29.Juli.2004, 12:35.
Re: problem mit sortierung
oha - jetzt hab ich erst begriffen, was du erreichen willst....
Da ist das script ja richtig zu vereinfachen (du wills ja offensichtlich keinen vorausgewählten Eintrag haben bzw. immer "alles" vorausgewähl haben.
geht so:
---schnipp
get "Auswahl==*", "daten", "erghash";
while(get_next("erghash")) {
push @opAuswahl, $Auswahl if index("@opAuswahl", "$Auswahl")<0;
}
foreach my $opAuswahl(sort @opAuswahl){
# $a_opAuswahl .= $opAuswahl eq $fauswahl ? "<option selected value=$opAuswahl>$opAuswahl" : "<option value=$opAuswahl>$opAuswahl";
$a_opAuswahl .= "<option value=$opAuswahl>$opAuswahl";
}
my $sl = "selected" if $fauswahl eq "";
out<<EOF;
<b>Bitte wählen Sie:</b>
<select name="fauswahl=">
<option $sl value='*'>Alle
$a_opAuswahl
</select>
---schnapp
Hab mal die Zeile mit der automatischen Vorauswahl bei Vorhandensein und Gleichheit von $fauswahl korrigiert und auskommentiert, wenn du dann doch die im Datensatz vorhandene Auswahl vorausgewählt im Optionfeld haben willst, kasnnst du die Zeile wieder "scharf" machen und dafür die andere auskommentieren.
Musst nur beachten, dass das ganze nur funzt, wenn keine Leerzeichen in Auswahl stehen, sonst nimmt er nur alles vor dem Leerzeichen und die Vorauswahl geht dann auch nicht. Das muss man dann wieder entsprechend programmtechnisch lösen.
Hoffe, es hilft dir weiter
Ruben
Antworten
Beitrag von Tini (187 Beiträge) am Donnerstag, 29.Juli.2004, 14:56.
Re: problem mit sortierung
genau das war mein problem :-))
jetzt steht alles immer zuerst im auswahlfenster
und bei mehreren gleichen wird es nur 1x angezeigt.
danke!
tini
Antworten
Beitrag von horstees (229 Beiträge) am Donnerstag, 29.Juli.2004, 15:57.
Re: problem mit sortierung
Hallo tini,
werden deine dropdown-Listen mit zunehmender Anzahl von Datensätzen in der db angebotstext nicht immer länger, soll das so (warum?)?
Wenn das nicht sein soll, musst du du vor oder hinter der while(get_next("erghash")) - Schleife $a_opAuswahl = ""; setzen :-)
horstees
Antworten
Beitrag von Tini (187 Beiträge) am Donnerstag, 29.Juli.2004, 16:19.
Re: problem mit sortierung
hallo horstees,
eigentlich nicht!
in der auswahl sollen so max. 10 einträge sein, die so etwas
wie rubriken sein sollen.
z.b. gibt es die db-einträge
feb/märz/april mit der auswahl frühling
mai/juni/juli/august mit der auswahl sommer
sep/okt/ mit der auswahl herbst
nov/dez/jan mit der auswahl winter
dann stehen im dropdown 4 felder zur wahl und bekomme, wenn
ich z.b. frühling wähle eine tabellarische übersichtseite mit
den einträgen feb,märz und april.
ich hoffe, da nicht einen denkfehler zu haben.
tini
Antworten
Beitrag von horstees (229 Beiträge) am Donnerstag, 29.Juli.2004, 17:28.
Re: problem mit sortierung
Antworten
Beitrag von hempelr (1976 Beiträge) am Donnerstag, 29.Juli.2004, 20:14.
Re: problem mit sortierung
mhm, jetzt wo dus sagst - da ist was dran - ich habs auch nur so schnell hingekritzelt....
Das Loop hab ich hier gar nicht beachtet :-(
Da sollte dann ja als allerestes mal der get/get_next Zweig aus dem Loop raus, die Werteliste wird ja nur einmal benötigt.
Und mit dem Leeren von a_opAuswahl das ist dann auch richtig....ich tendiere aber dazu, das im loop als lokale Var einfach vorm forach zu deklarieren, da durch sind mögliche Probs mit Namensbereichüberschneidung vom Tisch (das hat mich schon manchen Tag gekostet, deshalb lieber soviel wie möglich lokal)
Also so wärs vielleicht besser:
--- schnipp
<perl>
get "Auswahl==*", "daten", "erghash";
while(get_next("erghash")) {
push @opAuswahl, $Auswahl if index("@opAuswahl", "$Auswahl")<0;
}
</perl>
<loop db=angebotstext code=perl>
out <<EOF;
<TR><TD><B>$Headline</B>
</FONT></P></TD></TR>
<TR><TD><P><br>$Text1<p><center>
<form action="http://..." method="post" enctype="multipart/form-data">
<input type=hidden name="htx=" value="/...">
EOF
my $a_opAuswahl;
foreach my $opAuswahl(sort @opAuswahl){
# $a_opAuswahl .= $opAuswahl eq $fauswahl ? "<option selected value=$opAuswahl>$opAuswahl" : "<option value=$opAuswahl>$opAuswahl";
$a_opAuswahl .= "<option value=$opAuswahl>$opAuswahl";
}
my $sl = "selected" if $fauswahl eq "";
out<<EOF;
<b>Bitte wählen Sie:</b>
<select name="fauswahl=">
<option $sl value='*'>Alle
$a_opAuswahl
</select>
<input type="submit" value="suchen">
</form>
</center>
</TD></TR>
EOF
</loop>
Antworten
Beitrag von horstees (229 Beiträge) am Donnerstag, 29.Juli.2004, 20:58.
Re: problem mit sortierung
Antworten
Beitrag von Tini (187 Beiträge) am Donnerstag, 29.Juli.2004, 22:01.
Re: problem mit sortierung
hallo horstees,
ja, ich mache ein loop durch die db.
die $headline und $text sind einmalig und haben
mit dem form nix zu tun.
ich bekomme ein dropdown mit allen auswahlinhalten.
ist eine auswahl doppelt, wird sie hier nicht angezeigt.
wähle ich im dropdown einen eintrag aus, werden mir
diese in einer "liste" (sep. template) angezeigt.
sind unter dem ausgewählten eintrag mehrere db-einträge,
werden diese alle in der "liste" angezeigt.
ich habe das alles nur aus dem forum gebastelt, deshalb
lese ich zwar deine einträge mit ruben, verstehen ist
aber was anderes :-)
tini
Antworten
Beitrag von horstees (229 Beiträge) am Donnerstag, 29.Juli.2004, 22:32.
Re: problem mit sortierung
Antworten
Beitrag von Tini (187 Beiträge) am Donnerstag, 29.Juli.2004, 22:54.
Re: problem mit sortierung
hallo horstees,
das loop brauche ich schon.
headline, text1, bild1, etc., also die ganze
umschreibung kommt aus der einen db und die
inhalte des dropdown aus einer ganz anderen.
tini
Antworten
Beitrag von horstees (229 Beiträge) am Donnerstag, 29.Juli.2004, 23:19.
Re: problem mit sortierung
<das loop brauche ich schon.
<headline, text1, bild1, etc., also die ganze
<umschreibung kommt aus der einen db
Hat die denn nur einen Datensatz???
horstees
Antworten
Beitrag von Tini (187 Beiträge) am Freitag, 30.Juli.2004, 09:05.
Re: problem mit sortierung
ja :-)
die seite sollte von 2 pers. administrierbar sein.
beschreibungstext und bilder = 1 db (1 eintrag)
inhalt der auswahl-einträge = 2. db (x einträge)
tini
Antworten
Beitrag von horstees (229 Beiträge) am Freitag, 30.Juli.2004, 10:01.
Re: problem mit sortierung
:-)
Alles klar.
Die letzten Überlegungen von oben sind NUR DANN notwendig, wenn sich in 'db 1' MEHRERE Datensätze befinden, dann nämlich würde die dropdown-Anzeige immer länger werden.
:-)
horstees
Antworten