Re: Zähler verschiedener Datensätze - 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 Claus S. (1671 Beiträge) am Mittwoch, 24.April.2002, 21:03.
    Re: Zähler verschiedener Datensätze

      danke sander,

      funzt jetzt fast ;-),
      allerdings noch das zahlen-sort-problem 1 - 10 - 11 - 12 - 2 - 3 - 31 - 32 etc.,
      obwohl in der datei die felder vom typ und sort auf zahl definiert sind.


    Ihre Antwort:

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

    Neuer Eintrag


 Alle Einträge zum Thema: Zur Liste 
    Beitrag von Toralf (101 Beiträge) am Mittwoch, 24.April.2002, 00:55.
    Zähler verschiedener Datensätze

      Hallo,

      ich versuche die Anzahl verschiedener Datensätze zu zählen.

      <perl>
      $merkmodell="";
      $erstersatz=1;
      $zaehler=0;
      get "Modell==* ","main";
      while (get_next("main"))
      {
       
      if ($erstersatz==1)
         {
             $merkmodell=$Modell;
         }
         if ($merkmodell ne $Modell)
         {
             out  $zaehler, " ",$merkmodell;
             $zaehler=0;
         }
         else
         {
             $zaehler++;
         }
      }
      

      out $zaehler, " ",$merkmodell;
      </perl>
      


      funktioniert aber leider nicht wie gewünscht!

     Antworten

    Beitrag von Jurenda (305 Beiträge) am Mittwoch, 24.April.2002, 06:31.
    Re: Zähler verschiedener Datensätze

      Probiers mal so:

      <perl>
      get "sort=Modell","main","main";
      $merkmodell=$Modell;
      $zaehler=0;
      while (get_next("main"))
      {
        if ($merkmodell ne $Modell)
        {
          out $zaehler, " ",$merkmodell;
          $merkmodell=$Modell;
          $zaehler=1;
        }
        else
        {
          $zaehler++;
        }
      }
      out $zaehler, " ",$merkmodell;
      </perl>
       
      

      Grüße Jurenda

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 24.April.2002, 08:56.
    Re: Zähler verschiedener Datensätze

      Es gibt was schnelleres:
      <perl>
      get "Modell==* ","main";
      while (get_next("main"))
      {
        $Anzahl{$Modell}++;
      } 
      

      foreach $Modell(keys %Anzahl)
      {
         out "$Modell - Anzahl: $Anzahl{$Modell}<br>";
      }  
      </perl>
       
      
      Sander

     Antworten

    Beitrag von Toralf (101 Beiträge) am Mittwoch, 24.April.2002, 10:46.
    Re: Zähler verschiedener Datensätze

      DAnke Sander!

      Nun möchte ich abernoch sortieren, dass die meisten oben in der Liste erscheinen.

     Antworten

    Beitrag von Fabian (52 Beiträge) am Mittwoch, 24.April.2002, 11:29.
    Re: Zähler verschiedener Datensätze - Zusatzfrage

      Hallo,
      prima Sache, aber wie mache ich es bei mehreren Feldern? Also ich möchte z.B. wissen, wieviel mal ein Merkmal gesetzt wurde, aber dieses Merkmal steht nicht nur in dem Feld Modell, sondern in den Feldern Modell1, Modell2 und Modell 3.
      Dankeschön !

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Mittwoch, 24.April.2002, 17:47.
    Re: Zähler verschiedener Datensätze - Zusatzfrage

      hallo,

      bei mehreren _gleichartigen_ feldern müsste es so gehen (zumindest hat es bei mir so geklappt):

      <perl>
      get "Modell_1==* ","main";
      while (get_next("main"))
      {
       
      $Anzahl{$Modell_1}++;
      $Anzahl{$Modell_2}++;
      $Anzahl{$Modell_3}++;
      

      }
       

      foreach $Modell_1(keys %Anzahl)
      {
      out "$Modell - Anzahl: $Anzahl{$Modell_1}<br>";
      } 
      </perl>
       
      

      nur das sortieren habe ich noch nicht hingekriegt :-(

      gruss

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 24.April.2002, 18:32.
    Re: Zähler verschiedener Datensätze

      So wird sortiert

      <perl>
      get "Modell==* ","main";
      while (get_next("main"))
      {
       
      $Anzahl{$Modell}++;
      } 
       
      
      %temp=%Anzahl;
      @sortiert=sort { $temp{$a} <=> $temp{$b} } keys %temp;

      foreach (@sortiert)
      {
      out "$_ - Anzahl: $Anzahl{$_}<br>";
      } 
      </perl>
       
      

      Sander

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Mittwoch, 24.April.2002, 19:18.
    Re: Zähler verschiedener Datensätze

      hallo sander,

      dein sortierbeispiel funzt, aber in meinem beispiel brauche ich die sortierung andersherum, d.h. der wert, der in $_ steht, soll sortiert werden.
      da ich leider die syntax aus deinem beispiel nicht verstehe, kann ich es mir nicht dementsprechend umbauen. vieeleicht kannst du es mal erklären.
      danke

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 24.April.2002, 19:44.
    Re: Zähler verschiedener Datensätze

      <perl>
      get "Modell==* ","main";
      while (get_next("main"))
      {
      $Anzahl{$Modell}++;
      } 
      

      %temp=%Anzahl;
      @sortiert=sort { $temp{$a} <=> $temp{$b} } keys %temp;
      @reversed=reverse @sortiert;
      foreach (@reversed)
      {
      out "$_ - Anzahl: $Anzahl{$_}<br>";
      } 
      </perl>
      

      %temp=%Anzahl;
      hier wird das array kopiert.

      @sortiert=sort { $temp{$a} <=> $temp{$b} } keys %temp;
      aus dem temp. array werden die keys als liste zusammengefasst und dabei nach der sort {} -bedingung sortiert. Dabei steht $a für den linken, $b für den rechten wert der values. Das ist praktisch ne kleine sub, die entweder 1 für grösser, 0 für = oder -1 für kleiner zurückliefert. Könnte man auch so schreiben (aus selfhtml):
      sub NummernSort {
       if($a < $b)
        { return -1; }
       elsif($a == $b)
        { return 0; }
       else
        { return 1; }
      }
      

      je nach rückgabe werden die Werte getauscht oder auch nicht.

      Sander

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 24.April.2002, 19:48.
    Re: Zähler verschiedener Datensätze

      achso, hab ich jetzt bei dir was falsch verstanden?

      Meintest du die sortierung der keys? weil in $_ steht ja nur der Schlüssel der hashelemente...

      Dann wäre das so:

      <perl>
      get "Modell==* ","main";
      while (get_next("main"))
      {
      $Anzahl{$Modell}++;
      } 
      foreach $Modell(sort (keys %Anzahl))
      {
      out "$Modell - Anzahl: $Anzahl{$Modell}<br>";
      } 
      </perl>
       
      

      Sander

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Mittwoch, 24.April.2002, 21:03.
    Re: Zähler verschiedener Datensätze

      danke sander,

      funzt jetzt fast ;-),
      allerdings noch das zahlen-sort-problem 1 - 10 - 11 - 12 - 2 - 3 - 31 - 32 etc.,
      obwohl in der datei die felder vom typ und sort auf zahl definiert sind.

     Antworten

    Beitrag von Sander (8133 Beiträge) am Mittwoch, 24.April.2002, 21:13.
    Re: Zähler verschiedener Datensätze

      nach welchem bsp sortierst du jetzt. poste mal ein bischen code...

      Sander

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Mittwoch, 24.April.2002, 22:21.
    Re: Zähler verschiedener Datensätze

      hier der code:

          <perl>
          #------------------------------------------------#
          #--SR         Ermitteln VK-Statistik             #
          #------------------------------------------------#
          sub do_vkstat
             {
              get "zahl_1==*","../acd/acvk";
              while (get_next("../acd/acvk"))
                {
                 $Anzahl{$zahl_1}++;
                 $Anzahl{$zahl_2}++;
                 $Anzahl{$zahl_3}++;
                 $Anzahl{$zahl_4}++;
                }
              &do_content_o("200","196","","","");         # Ausgabe Content-Section
              &do_headline("VK-Statistik","","","140");    # Ausgabe Content-Headline
      out <<EOF;
              <TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
              <TR><TD ALIGN="center">
                  <TABLE WIDTH='90%' BORDER=0>
                  <TR><TH CLASS='th1'>Gebiet</TH>
                      <TH CLASS='th1' COLSPAN=7>Verkäufe</TH></TR>
      EOF
                      foreach $zahl_1(sort (keys %Anzahl))
                        {
                         out "<TR BGCOLOR=" . ($_loop %2 ? "#A0A0A0" : "#E0E0E0") . ">\n";
                         out "<TD CLASS='b8' ALIGN='center'> $zahl_1 </TD>";
                         out "<TD CLASS='b8' ALIGN='center'> $Anzahl{$zahl_1} </TD>";
                         out "</TR>\n";
                        }
                   out "</TD></TR></TABLE>"; 
       
              out "<BR><BR><A CLASS='link3' HREF='javascript:window.close();'>[Schliessen]</A>\n";
              out "</TD></TR></TABLE>\n";
      
              &do_content_u; # Ausgabe Content-Section Unten        }     </perl>

     Antworten

    Beitrag von Claus S. (33 Beiträge) am Donnerstag, 25.April.2002, 10:46.
    @sander Re: Zähler verschiedener Datensätze

      hallo sander,

      hier der code:


      <perl>
       
      #------------------------------------------------#
      #--SR          Ermitteln VK-Statistik            #
      #------------------------------------------------#
      sub do_vkstat
             {
              get "zahl_1==*","../acd/acvk";
              while (get_next("../acd/acvk"))
                {
                 $Anzahl{$zahl_1}++;
                 $Anzahl{$zahl_2}++;
                 $Anzahl{$zahl_3}++;
                 $Anzahl{$zahl_4}++;
                }
              &do_content_o("200","196","","",""); # Ausgabe Content-Section
              &do_headline("VK-Statistik","","","140"); # Ausgabe Content-Headline
      out <<EOF;
      <TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
      <TR><TD ALIGN="center">
      <TABLE WIDTH='90%' BORDER=0>
      <TR><TH CLASS='th1'>Gebiet</TH>
      <TH CLASS='th1' COLSPAN=7>Verkäufe</TH></TR>
       
      EOF
      foreach $zahl_1(sort (keys %Anzahl))
                        {
                         out "<TR BGCOLOR=" . ($_loop %2 ? "#A0A0A0" : "#E0E0E0") . ">\n";
                         out "<TD CLASS='b8' ALIGN='center'> $zahl_1 </TD>";
                         out "<TD CLASS='b8' ALIGN='center'> $Anzahl{$zahl_1} </TD>";
                         out "</TR>\n";
                        }
                   out "</TD></TR></TABLE>"; 
       
              out "<BR><BR><A CLASS='link3' HREF='javascript:window.close();'>[Schliessen]</A>\n";
              out "</TD></TR></TABLE>\n";
      
              &do_content_u; # Ausgabe Content-Section Unten        } </perl>

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 25.April.2002, 11:11.
    Re: @sander Re: Zähler verschiedener Datensätze

      probier mal:

      foreach $zahl_1(sort {$a<=>$b}keys %Anzahl)
                        {
                         out "<TR BGCOLOR=" . ($_loop %2 ? "#A0A0A0" : "#E0E0E0") . ">\n";
                         out "<TD CLASS='b8' ALIGN='center'> $zahl_1 </TD>";
                         out "<TD CLASS='b8' ALIGN='center'> $Anzahl{$zahl_1} </TD>";
                         out "</TR>\n";
                        }
      

      Sander

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Donnerstag, 25.April.2002, 11:37.
    Re: @sander Re: Zähler verschiedener Datensätze

      hallo sander,

      prima, funzt bestens ;-)
      verstehe nur den code leider nicht: (sort {$a<=>$b}keys %Anzahl)

      und dann habe ich noch eine frage (nerv...)
      der code für die abwechselnde einfärbung der zellen out "<TR BGCOLOR=" . ($_loop %2 ? "#A0A0A0" : "#E0E0E0") . ">\n";
      funzt hier leider nicht. bisher hatte ich das auch nur bei 'get while get next' eingesetzt. funzt das bei einer foreach-schleife nicht?

      gruss claus

     Antworten

    Beitrag von Sander (8133 Beiträge) am Donnerstag, 25.April.2002, 11:58.
    Re: @sander Re: Zähler verschiedener Datensätze

      nein, da mußt du dir einen eigenen zähler setzen. $_loop wird ja nur bei get get_next oder loop von bp geliefert.

      $cnt=1;
      foreach $zahl_1(sort {$a<=>$b}keys %Anzahl)
                        {
                         out "<TR BGCOLOR=" . ($cnt %2 ? "#A0A0A0" : "#E0E0E0") . ">\n";
                         out "<TD CLASS='b8' ALIGN='center'> $zahl_1 </TD>";
                         out "<TD CLASS='b8' ALIGN='center'> $Anzahl{$zahl_1} </TD>";
                         out "</TR>\n";
                         $cnt++;
                        }
      

      Sander

     Antworten

    Beitrag von Claus S. (1671 Beiträge) am Donnerstag, 25.April.2002, 12:06.
    Re: @sander Re: Zähler verschiedener Datensätze

      o.k. danke

     Antworten

    Beitrag von Toralf (101 Beiträge) am Donnerstag, 25.April.2002, 00:04.
    Re: Zähler verschiedener Datensätze

      Danke Sander,

      so tut´s gut.

      Grüße

     Antworten


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