Re: problem mit sortierung - 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 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


    Ihre Antwort:

    Name: EMail: EMail bei Antwort? WWW:
    Titel:
    Text:

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    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


      <form action="http:/">
      

      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

      wenn ichs richtig verstanden habe, brauchst du nur die Liste im foreach zu sortieren, in etwa so:
      .....
      foreach ( sort @opAuswahl )
      {
      $a_opAuswahl .= $opAuswahl eq $fauswahl ? "<option selected value=$_>$_" : "<option value=$_>$_";
      }
      
      .....
      Ruben

     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>
      EOF
      </loop>
      
      ...(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

      Der Denkfehler kann auch beimir liegen :-)

      Ich sehe jetzt folgendes:
      Du machst ein loop durch die db "angebotstext".

      Das erzeugt dir pro gefundenem Datensatz jeweils

      eine headline
      einen text1
      ein dropdown mit optionen aus der db "daten"
      einen submit-button

      usw.
      usw.

      $a_opauswahl wird doch aber immer wieder durch den .= verlängert:
      

      $a_opAuswahl .= "<option ..................";

      DAS wundert mich.

      Aber wenns funktioniert, dann isses ja gut.

      horstees

     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

      Hallo Ruben,

      ja, dann doch alles, was mit der Gestaltung des Formulars zu tun hat in 'ne sub, is ja sowieso immer das gleiche:

      <perl>
      

      sub mache_formular()

      {
      get.......
      while
      push
      

      out<<EOF;

      <form>
      

      ...
      ...
      ...

      </form>
      

      EOF

      }
      </perl>
      

      <loop...............>

      <tr>...$headline.........
      <tr>...$text1.........
      <tr>...&mache_formular()....
      
      ...
      </loop>

      wär das nix? :-)

      horstees

     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

      hallo tini,

      also dann sind headline und text1 KEINE Feldnamen in der Datenbank "angebotstext"?
      Die werden dann irgendwo vor dem loop einmalig definiert, evtl. so??:

      $headline = "Esst mehr Butterbrote!";
      $text1    = "Mit Butterbroten kann man der Familie zu allen Jahreszeiten
      
      eine Freude machen.";


      Wenn das so ist brauchst du das

      <loop db=..............> 
      
      ...
      ...
      ...
      </loop>
      

      hier überhaupt nicht.

      horstees

     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


     
 Liste der ersten 150 Einträge:Einklappen Zur Eingabe 
 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!