Array Sortieren

  • Guten Tag,


    ich habe in meiner DB eine Spalte "Reaction". Dort können nur Nummern stehen wie (17, 23 etc.).


    Jetzt wollte ich alle ausgegeben und den Wert der mehrmals vorhanden ist absteigend sortieren.


    z.b


    17

    23

    23

    23

    17


    ZU


    23

    23

    23

    17

    17

  • Warum willst du das mit Array-Funktionen machen, wenn das die Datenbank schon kann?

    Alles unter dem Strich ist eine Signatur!


    Die Deutsche Rechtschreibung ist Freeware, sprich, du darfst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen!


    Zitat von Dieter Nuhr: "Wenn man keine Ahnung hat, einfach mal Fresse halten". Wie recht er doch hat...

  • Hey,


    weist du was in der Variable $row steht?


    Code
    1. $row = $artikel->fetch(PDO::FETCH_ASSOC);

    Mit diesem Code holst du nur 1 Datensatz aus der Datenbank. Das heißt, dass $row['reaction'] bereits ein String ist. Da es ein String ist kann die Funktion dies nicht sortieren und gibt ein False zurück-


    Du wolltest bestimmt mehrere Datensätze aus der Datenbank holen ? Dann verwende die Funktion fetchAll().


    Das Sortieren kannst du auch der Datenbank überlassen, wie m.scatello erwähnt hat. Schau dir dazu das ORDER BY Schlüsselwort an.


    Grüße,

    Stef

  • Warum willst du das mit Array-Funktionen machen, wenn das die Datenbank schon kann?


    Sorry hab mich nicht richtig ausgedrückt. Ich wollte nicht nach der höchsten Zahl sortieren sondern ich wollte Sortieren wie oft die Nummer 23 oder 17 gibts.


    könnte auch so aussehen.


    17

    17

    17

    23


    z.b es gibt 3 mal die zahl 17 und 1x 23. Order by sortiert nach der höhsten Zahl runter bis zur kleinsten. Möchte aber die Anzahl der Zahlen zählen wie oft die gleiche Zahl vorhanden ist

  • Auch das kann die DB bereits, siehe https://www.db-fiddle.com/f/8AdEjiMqrDCicaKoXu6sm8/0


    Top, sowas hab ich gebraucht, jedoch brauch ich auch den wert z.b 17.


    Nun komm ich gar nicht mehr weiter. Ich wollte es so machen wie unten beschrieben aber hab gemerkt das es doch nicht so funktioniert:


    Code
    1. Beitrag_id | Zahl (Reaction) | Bild
    2. 1 | 5 | lachsmylie.png
    3. 1 | 5 | lachsmylie.png
    4. 1 | 6 | wütender-smylie.png

    Das, wenn die Zahl öfter gibt, das jeweilige Bild auch angezeigt wird. Wie bei facebook gibt es auch so ne Reaction Like System. Wenn 20 LachSmylies vorhanden sind und 10 Wütende Smylies dann wird zuerst der Lachsmylie angezeigt.


    Jetzt wollte ich das auch machen aber habe gemerkt das geht doch etwas anders als ich es mir gedacht habe.


    Ich habe jetzt z.b wie Arne schon geholfen hat die Anzahl der jeweiligen Reactions gezählt wie oft die gleiche Zahl vorhanden ist.


    Wie kann ich die jetzt orten das die mit den höchster anzahl auch als erstes angezeigt wird und die mit den zweit-höchsten anzahl auch als zweites angezeigt wird usw?


    hätte eine methode die aber sehr aufwendig und unsauber ist.


    z.b mache 5 sql statements z.b where reaction = 1 bis 5.


    Dann zähl ich welche reaction am häufigsten exisitert. Dann mach ich eine Abfrage

    Das würde dann über 20-30 Ifabfragen kosten. Kann man es nicht so aufwendig machen´?

  • order by Counts desc

    Alles unter dem Strich ist eine Signatur!


    Die Deutsche Rechtschreibung ist Freeware, sprich, du darfst sie kostenlos nutzen. Allerdings ist sie nicht Open Source, d.h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen!


    Zitat von Dieter Nuhr: "Wenn man keine Ahnung hat, einfach mal Fresse halten". Wie recht er doch hat...

    Dieser Beitrag wurde bereits 1 Mal editiert, zuletzt von m.scatello ()