PHPGangsta - Der praktische PHP Blog

PHP Blog von PHPGangsta


Archive for März, 2015

Ein altes Navigationsmenu sortieren

with 12 comments

Ich habe eine kleine Programmieraufgabe für euch.

Ich habe ein altes Projekt, in dem ich folgende Navigationsstruktur in der Datenbank habe:

menuidparentidtitlelevelsortid
13Wurm 1.1210
26Vogel 2.1230
30Tiger 1110
46Hund 2.2240
53Katze 1.2211
60Pferd 2120
71Baer 1.1.130
83Schwein 1.3212
94Esel 2.2.130

Nun möchte ich diese Menüpunkte sortiert ausgeben, und zwar in der folgenden Reihenfolge:

Tiger 1
  Wurm 1.1
    Baer 1.1.1
  Katze 1.2
  Schwein 1.3
Pferd 2
  Vogel 2.1
  Hund 2.2
    Esel 2.2.1

Die Sortierreihenfolge muss anhand der menuid, parentid, level und sortid berechnet werden. Eine parentid verweist auf den Elternknoten, sprich er ist darunter einzusortieren. Zwei Einträge mit der selben parentid sind nach der Spalte sortid zu sortieren.

Der Wurm ist ein Kindknoten vom Tiger, der Bär ist ein Kindknoten vom Wurm. Die Katze ist auch ein Kindknoten vom Tiger, hat aber die höhere sortid, muss also nach dem Wurm einsortiert werden.

Es ist ein altes Projekt mit dieser Struktur, und die Frage ist wie man das am einfachsten und schnellsten sortiert?

Geht das ganze mit einem SQL-Query? Das wäre natürlich die beste Lösung, aber mir ist kein solcher Query eingefallen der das Problem lösen könnte.

Also muss es in PHP sortiert werden. Ich habe das ganze in ein PHP-Array gepackt und hier für euch zum Spielen bereitgestellt:

http://3v4l.org/PTuRc

Dort könnt ihr an dem Algorithmus arbeiten, sodass aus dem Ursprungs-Array das Ziel-Array wird. Nachdem ihr „eval()“ gedrückt habt könnt ihr einfach die URL hier in die Kommentare packen, nach jedem Druck auf „eval()“ wird das ganze gespeichert und versioniert.

Ich bin gespannt auf eure Lösungen!

Written by Michael Kliewe

März 11th, 2015 at 10:58 pm

Posted in PHP

Tagged with ,

Erstaunlich langsam beim Kopieren einer Datei auf ein NFS-Share

with 6 comments

Heute mal etwas skurriles. Eigentlich eine Alltagsaufgabe, die man mit einem 2-Zeiler lösen kann, aber ich bin doch erstaunt über das Problem und die Lösung. Es geht darum, eine Datei auf einem NFS-Share abzulegen, das vorher per PUT zum Webserver hochgeladen wurde. Wahrscheinlich hat man das selbe Problem auch wenn die Datei per POST-Formular hochgeladen wurde.

Folgender Aufruf lädt eine Datei via PUT auf einen Webserver:

curl -T 100mb.test http://localhost/put.php

Mein einfaches Testscript, das die Datei auf das NFS-Share legen soll, sieht so aus:

Weiterlesen »

Written by Michael Kliewe

März 3rd, 2015 at 10:46 am