Ankündigung

Einklappen
Keine Ankündigung bisher.

aus Datenbank die größte Zahl auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • aus Datenbank die größte Zahl auslesen

    Hallo,

    ich möchte aus der Datenbank die größte Zahl auslesen. In der Datenbank steht in etwa so etwas:
    Code:
    1
    1.1
    1.2
    2
    3
    3.1
    3.2
    4
    Mich möchte aber nur angezeigt bekommen:
    Code:
    1.2
    3.2
    4
    Irgendwie fehlt mir noch ein Weg, wie man es machen könnte. Ich hätte jetzt gedacht, den Punkt mit explode() erkennen, dann die Werte im Array zählen und den letzten Wert des Arrays ausgeben. Aber wie prüfen, was der größte Wert ist?

    Kann mir jemand helfen?


  • #2
    AW: aus Datenbank die größte Zahl auslesen

    ich möchte dir jetzt nichts vorkauen, nur ein paar hinweise:

    explode ist ein weg, dann müsstest du es nur richtig sortieren.

    ne andere möglichkeit wäre zu sortieren, nach zahlen zu filtern und dann nochmal sortieren.

    hinweise für beide: verwende temporäre werte....
    AC/DC Fanpage www.ifyouwantblood.de
    Nein zur Zensur im Internet und anderswo - Anonymous

    Kommentar


    • #3
      AW: aus Datenbank die größte Zahl auslesen

      Ich habe ein Scriptbeispiel gefunden:
      PHP-Code:
      <?php
      $max_outputs
      =5// Wie viele Ausgeben
      $sortierwerte='1;8;3;2;8;22;12'//Zu sortierende Werte
      $sortierarray=array();
      $sortierarray=explode(';',$sortierwerte); // Werte in ein Array lesen
      arsort($sortierarray); // in absteigender Reihenfolge sortieren
      //$sortierarray=asort($sortierarray); // in aufsteigender Reihenfolge sortieren
      while(list(,$val) = each($sortierarray)){
          
      $i++;
          echo 
      $val "<br>"// Sortierte Werte ausgeben
          // Wenn maximale Ausgabe erreicht, dann raus aus der Schleife 
          
      if($i>=$max_outputs) exit; 
      }
      ?>
      Weiterhin gefällt mir http://www.php.net/manual/de/function.asort.php asort sehr gut.

      Bin ich auf dem richtigen Weg?

      Weiterhin hatte ich schon angefangen:
      PHP-Code:
                   $sql "SELECT * FROM inhalt ORDER BY reihenf,datum DESC";
                  
      $result mysql_query($sql) or die(mysql_error());
                   while (
      $row mysql_fetch_assoc($result)) {
                       
      $zerlegen_reihenf explode("."$row['reihenf']);
                  
      $count_reihen count($zerlegen_reihenf);
              echo 
      "<option value=\"" $row['reihenf'] . "\">";
                       for (
      $i 1$i $count_reihen$i++) {
                  echo 
      "&nbsp;";
                       }
                       for (
      $o 0$o $count_reihen 1$o++) {
                           echo 
      $zerlegen_reihenf[$o] . ".";
                       }
                       echo 
      substr($row['reihenf'], -1) + 1;
                       echo 
      $row['ueberschrift'] . "</option>\n";
                   } 
      Zuletzt geändert von mi-schi; 27.10.2007, 20:26.

      Kommentar


      • #4
        AW: aus Datenbank die größte Zahl auslesen

        noch ein hinweis: arrays erleichtern das leben.
        AC/DC Fanpage www.ifyouwantblood.de
        Nein zur Zensur im Internet und anderswo - Anonymous

        Kommentar


        • #5
          AW: aus Datenbank die größte Zahl auslesen

          Mein Fortschritt:
          Code:
                       $sql = "SELECT * FROM inhalt ORDER BY reihenf,datum DESC";
                      $result = mysql_query($sql) or die(mysql_error());
                       while ($row = mysql_fetch_assoc($result)) {
                  $alle_zahlen[] = $row['reihenf'];
                       }
                       $count_zahlen = count($alle_zahlen);
                       for ($i = 0; $i < $count_zahlen; $i++) {
                         $teil_zahl = explode(".", $alle_zahlen[$i]);
                         $count_zahl = count($teil_zahl);
          }
          Die höhste Zahl dann in etwa so ausgeben:
          Code:
           $fruits = array("d"=>"Zitrone", "a"=>"Orange", "b"=>"Banane", "c"=>"Apfel");
          arsort ($fruits);
          foreach ($fruits as $key => $val) {
              echo "$key = $val\n";
          }
          Wie kann ich jetzt aber die "1" von der "1.1", "1.2" oder "1.1.1" trennen und in ein Array schreiben?

          Kommentar


          • #6
            AW: aus Datenbank die größte Zahl auslesen

            tjaa die explode variante erfordert mehr einsatz.....

            Wie kann ich jetzt aber die "1" von der "1.1", "1.2" oder "1.1.1" trennen und in ein Array schreiben?
            gegenfrage: unterschied?

            PHP-Code:
            echo count(explode('.','1')); 
            PHP-Code:
            echo count(explode('.','1.1')); 
            tipp um alle 1.x von 2.x zu trennen:

            PHP-Code:
            Array($key=>$value); 
            sorry, aber du hast meinen quältag erwischt
            AC/DC Fanpage www.ifyouwantblood.de
            Nein zur Zensur im Internet und anderswo - Anonymous

            Kommentar


            • #7
              AW: aus Datenbank die größte Zahl auslesen

              Ich habe das jetzt schon hinbekommen:
              Code:
                           $sql = "SELECT * FROM inhalt ORDER BY reihenf,datum DESC";
                  	    $result = mysql_query($sql) or die(mysql_error());
                           while ($row = mysql_fetch_assoc($result)) {
              		$alle_zahlen[] = $row['reihenf'];
                           }
                           $count_zahlen = count($alle_zahlen);
                           for ($i = 0; $i < $count_zahlen; $i++) {
                             $count_zahl = count(explode(".", $alle_zahlen[$i]));
              		echo $count_zahl."-".$alle_zahlen[$i]."<br />";
                           }
              Nur wie kann ich jetzt das so in ein array speichern. Mit array_push geht es ja nicht.

              EDIT: Irgendwie habe ich auch das Gefühl, das ich mich hier im Kreis drehe. Array auslesen, in Array wieder einfügen....

              Kommentar


              • #8
                AW: aus Datenbank die größte Zahl auslesen

                najaa genug gequält, meine tipps sind zu vage und langsam gehen mir die ideen aus....

                dafür gibts aber keine doku *lach*....folgendes sortiert dir das $array mit einem filter.... benötigt alles als float! musst du also 1.1.1 parsen, musst das geschickter machen (also um das 2. level zu sortieren das 1. "1." löschen und neu sortieren...)

                nicht ergibig getestet, und wenn du mehr spalten benötigst, musst du dafür aber selbst sorgen....

                PHP-Code:
                <pre>
                <?php

                error_reporting
                (E_ALL|E_STRICT);

                $array=Array(
                        
                0.1,
                        
                0.2,
                        
                1,
                        
                1.1,
                        
                1.2,
                        
                2,
                        
                3,
                        
                3.2,
                        
                3.1,
                        
                4,
                       );

                $float_filter=new float_filter;
                $float_filter->sorting=SORT_DESC;
                $float_filter->float_array=$array;

                print_r($float_filter->apply());

                class 
                float_filter
                {
                    private 
                $float_array=Array();
                    private 
                $sorting=SORT_DESC;

                    public function 
                apply()
                    {
                                          
                sort($this->float_array,SORT_NUMERIC);
                 
                        
                $array_count=count($this->float_array)-1;

                        
                $return=Array();
                        
                $temp_array=Array();

                        foreach(
                $this->float_array as $key=>$value)
                        {
                            
                $temp_value=floor($value);
                            if(!isset(
                $temp_array[$temp_value]))
                            {
                                
                $temp_array[$temp_value]=Array($value);
                                if(isset(
                $last_value)) $return[]=$this->filter($temp_array[$last_value]);
                            }
                            else 
                $temp_array[$temp_value][]=$value;

                            
                $last_value=$temp_value;
                        }

                        
                $return[]=$this->filter($temp_array[$last_value]);
                        return 
                $return;
                    }

                    public function 
                filter(array $array)
                    {
                        if(
                $this->sorting===SORT_DESCrsort($array,SORT_NUMERIC);
                            else 
                sort($array,SORT_NUMERIC);

                        return 
                array_shift($array);
                    }

                    public function 
                __set($name,$value)
                    {
                        if(
                $name==='float_array')
                        {
                            if(!
                is_array($value)) throw new Exception('float_get_filtert::$float_array must be an array!');

                            
                $this->float_array=$value;
                        }
                        elseif(
                $name==='sorting')
                        {
                            if(
                $value!==SORT_ASC && $value!==SORT_DESC) throw new Exception('float_get_filtert::$filter must be SORT_ASC or SORT_DESC');

                            
                $this->sorting=$value;
                        }
                    }

                    public function 
                __get($name)
                    {
                        if(isset(
                $this->$name)) return $this->$name;
                    }
                }

                ?>
                Zuletzt geändert von Brian; 27.10.2007, 22:18.
                AC/DC Fanpage www.ifyouwantblood.de
                Nein zur Zensur im Internet und anderswo - Anonymous

                Kommentar


                • #9
                  AW: aus Datenbank die größte Zahl auslesen

                  Puh, das verstehe ich doch gleich mal nicht, ist ja riesig....
                  EDIT:
                  Funktioniert leider nicht:
                  Fatal error: Class 'float_filter' not found in D:\xampp\htdocs\c\functions.php on line 243
                  Zuletzt geändert von mi-schi; 27.10.2007, 22:10.

                  Kommentar


                  • #10
                    AW: aus Datenbank die größte Zahl auslesen

                    Zitat von mi-schi Beitrag anzeigen
                    Puh, das verstehe ich doch gleich mal nicht, ist ja riesig....
                    EDIT:
                    Funktioniert leider nicht:
                    doch> http://www.ifyouwantblood.de/rest/test.php5

                    ist nur für php5....
                    AC/DC Fanpage www.ifyouwantblood.de
                    Nein zur Zensur im Internet und anderswo - Anonymous

                    Kommentar


                    • #11
                      AW: aus Datenbank die größte Zahl auslesen

                      Hmm, ich probiere noch ein wenig mit meinem explode herum. Vielleicht schaffe ich es ja auch. Kannst du die Seite noch ein wenig online lassen?

                      Kommentar


                      • #12
                        AW: aus Datenbank die größte Zahl auslesen

                        Zitat von mi-schi Beitrag anzeigen
                        Puh, das verstehe ich doch gleich mal nicht, ist ja riesig....
                        lol

                        Hmm, ich probiere noch ein wenig mit meinem explode herum. Vielleicht schaffe ich es ja auch. Kannst du die Seite noch ein wenig online lassen?
                        ]

                        klar



                        also vergiss erstmal __set($name,$value) und __get($name), sind nur meine schönheitskorrekturen....

                        die wichstigste function ist apply()

                        PHP-Code:
                        public function apply() 
                            { 
                                
                        sort($this->float_array,SORT_NUMERIC); 

                                
                        $return=Array(); 
                                
                        $temp_array=Array(); 

                                foreach(
                        $this->float_array as $key=>$value
                                { 
                                    
                        $temp_value=floor($value); 
                                    if(!isset(
                        $temp_array[$temp_value])) 
                                    { 
                                        
                        $temp_array[$temp_value]=Array($value); 
                                        if(isset(
                        $last_value)) $return[]=$this->filter($temp_array[$last_value]); 
                                    } 
                                    else 
                        $temp_array[$temp_value][]=$value

                                    
                        $last_value=$temp_value
                                } 

                                
                        $return[]=$this->filter($temp_array[$last_value]); 
                                return 
                        $return
                            } 
                        wie du siehst gehen wir das array einfach mit foreach durch.

                        das erste was wir tun, ist die float nummer abzurunden und in $temp_value zu speicher:

                        PHP-Code:
                        $temp_value=floor($value); 
                        damit bekommen wir zum beispeil von 1.1 die nummer 1 zurück. dies ist unsere kategorie zahl (wir wollen ja die höchste zahl einer kategorie!)

                        als nächste überprüfen wir, ob es die kategorie schon gibt, wenn nicht legen wir sie an:

                        PHP-Code:
                         if(!isset($temp_array[$temp_value])) 
                                    { 
                                        
                        $temp_array[$temp_value]=Array($value); 
                        so und nun kommt die kategorisierung und die filterung. wir wissen hier, dass die kategorie die vorher dran war, beendet ist, deswegen können wir diese kategorie mittels float_filter::filter() auswerten und $return hinzufügen:

                        PHP-Code:
                         if(isset($last_value)) $return[]=$this->filter($temp_array[$last_value]); 
                                    } 
                        nachfolgender else zweig wird ausgeführt, wenn die kategorie bereits existiert:

                        PHP-Code:
                         else $temp_array[$temp_value][]=$value
                        da wir nicht wissen, wann die foreach schleife aufhört, müssen wir am ende das letzte array in $temp_array außerhalb filtern und $return hinzufügen....

                        PHP-Code:
                                $return[]=$this->filter($temp_array[$last_value]); 
                                return 
                        $return
                        filter() dürfte klar sein oder?

                        gruß

                        p.s. hatte am anfang von apply() ein sort($this->float_array); vergessen (habs korrigiert)
                        Zuletzt geändert von Brian; 27.10.2007, 22:26.
                        AC/DC Fanpage www.ifyouwantblood.de
                        Nein zur Zensur im Internet und anderswo - Anonymous

                        Kommentar


                        • #13
                          AW: aus Datenbank die größte Zahl auslesen

                          Du Brian, mir fallen gleich die Augen raus. Ich mache morgen weiter.
                          Bis jetzt bin ich bei mir soweit gekommen:
                          Code:
                                       $sql = "SELECT * FROM inhalt ORDER BY reihenf,datum DESC";
                                      $result = mysql_query($sql) or die(mysql_error());
                                       while ($row = mysql_fetch_assoc($result)) {
                                  $alle_zahlen[] = $row['reihenf'];
                                       }
                                   $count_zahlen = count($alle_zahlen);
                                       for ($i = 0; $i < $count_zahlen; $i++) {
                                         $teil_zahl = explode(".", $alle_zahlen[$i]);
                                         $count_zahl = count($teil_zahl);
                                           if ($count_zahl == 2 && $teil_zahl['0'] == 1) {
                                            $za[] = $alle_zahlen[$i];
                                           }
                                       }
                                       echo array_pop($za);
                          Ich denke mal, dass zwei Schleifen um
                          Code:
                                           if ($count_zahl == 2 && $teil_zahl['0'] == 1) {
                                            $za[] = $alle_zahlen[$i];
                                           }
                          ausrechen, um die Werte 2 und 1 noch dynamisch zu machen....


                          Edit (autom. Beitragszusammenführung):

                          Hallo, also ich verstehe dein Script nicht Ich weiß nicht mal, wie ich die Funktion überhaupt in Gang setze.
                          Das:
                          $float_filter=new float_filter;

                          $float_filter->sorting=SORT_DESC;

                          $float_filter->float_array=$array;



                          print_r($float_filter->apply());
                          Verstehe ich auch nicht.
                          Was bedeutet das public vor function? Bei mir gibt es da, wenn es alleine steht eine Fehlermeldung.
                          Dann verstehe ich nicht das:
                          throw new Exception
                          Und den Pfeil: -> kenne ich nicht, ich weiß nicht, was der macht....
                          Zuletzt geändert von mi-schi; 28.10.2007, 11:20. Grund: Antwort auf eigenen Beitrag innerhalb von 24 Stunden!

                          Kommentar

                          homepage-forum.de - Hilfe für Webmaster! Statistiken

                          Einklappen

                          Themen: 56.735   Beiträge: 429.423   Mitglieder: 28.490   Aktive Mitglieder: 42
                          Willkommen an unser neuestes Mitglied, KoaLa13bfp.

                          Online-Benutzer

                          Einklappen

                          245 Benutzer sind jetzt online. Registrierte Benutzer: 4, Gäste: 241.

                          Mit 3.502 Benutzern waren am 23.01.2020 um 18:20 die meisten Benutzer gleichzeitig online.

                          Die neuesten Themen

                          Einklappen

                          Die neuesten Beiträge

                          Einklappen

                          Lädt...
                          X