Frage Sortierung

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

udgesbou

Neues Mitglied
13 September 2017
24
0
1
27
#1
Grüß euch,
ich bin es mal wieder :)

Und zwar möchte ich gerne, dass auf einer Seite etwas automatisch nach oben sortiert wird, wenn ein Betrag davor steht. Es ist nicht wichtig, dass nach der Höhe der Beträge sortiert wird, sondern nur dass die Kunden vor denen ein Betrag steht oben und alle weiteren Kunden darunter stehen.

Zur Klarstellung, es geht um eine Bediensoftware, die ihr hier erreicht. Benutzername: Forum ist auch gleich das Passwort.
Dort habe ich unter "Theke" bereits zwei Bestellungen getätigt, nun möchte ich, dass diese beiden ganz oben stehen und alle anderen darunter, damit man sich quasi immer das Scrollen spart, da die Liste ja doch ganz schön lang ist.

Ich hoffe ihr wisst was ich meine und könnt mir helfen, bei Fragen stehe ich natürlich jederzeit zu Verfügung.
Anbei die waiter.html

Grüße
 

Anhänge

m.scatello

Aktives Mitglied
15 Februar 2017
792
79
28
#2
Ich tippe mal auf ein "order by" bei der DB-Abfrage würde helfen. Ist aber nur geraten, da ich auf keinen Fall die Zip-Datei downloade und dann die relevante Stelle suchen werde.
 

m.scatello

Aktives Mitglied
15 Februar 2017
792
79
28
#8
Das Problem, so wie es aussieht, liegt darin, dass du wohl ein CMS oder sonstwas einsetzt und dass da kein reiner PHP-Quellcode ist, den man sich ansehen kann.
 

basti1012

Aktives Mitglied
26 November 2017
646
54
28
37
Minden
chat.sebastian1012.bplaced.net
#11
Mit Javascript läst sich das ja eigentlich leicht umsetzten .Php wohl auch .
Du schreibst was von bediensoftware .Ist das sowas wie bei mc donalds wo die Leute an kasse stehen und die bestellungen abarbeiten? Soll die Seite auch Online verfügbar sein? Man muss dann ja auch bedenken das man dann mit Javascript vorsichtig sein sollte weil das ist leicht manipulirbar.
 

udgesbou

Neues Mitglied
13 September 2017
24
0
1
27
#12
Ja so in der Art. Bestellungen können von so gut wie jedem Gerät erfasst werden.
Online verfügbar ist es nicht, das ganze ist in der Echtanwendung nur lokal, sprich der Sicherheitsaspekt ist nicht so wichtig.

Der Link im ersten Beitrag führt nur zur Testumgebung ;)


Grüße
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
1.149
244
63
65
#13
Das Voranstellen ist weniger das Problem, das macht diese Funktion:
Code:
function arrangeitems() {
        var cont = $("#tablepanelcontent");
        var items = cont.find(".tableelement").get().reverse();
        items.forEach(function(item, idx) {
            var open = $(item).find(".tableopen");
            if (open.length > 0) {
                console.log(open.text());
                cont.prepend($(item));
            }
        });
}
Trage diese Funktion in Zeile 28 ein, so dass es so aussieht:
Code:
    <link rel="stylesheet" href="php/3rdparty/jqueryui1-12-0/jquery-ui.min.css" />
    <script src="php/3rdparty/jquery-2.2.4.min.js"></script>
    <script src="php/3rdparty/jqueryui1-12-0/jquery-ui.min.js"></script>
   <script src="elements/tablemap.js"></script>
   <script src="elements/grouping.js"></script>
   <script src="utilities.js"></script>
   <script src="receiptutils.js"></script>
  <script>
function arrangeitems() {
        var cont = $("#tablepanelcontent");
        var items = cont.find(".tableelement").get().reverse();
        items.forEach(function(item, idx) {
            var open = $(item).find(".tableopen");
            if (open.length > 0) {
                console.log(open.text());
                cont.prepend($(item));
            }
        });
}
   <script>
function sendNewOrders(b){var a=getTableid();if(neworders.lengt
Dann suche diesen Code in dem langen, kryptischen Javascript darunter (Zeile 30):
Code:
$("#tablepanelcontent").html(a)}else{$("#tablepanelcontent").html("")
und ergänze darin den Aufruf der obigen Funktion:
Code:
$("#tablepanelcontent").html(a);arrangeitems();}else{$("#tablepanelcontent").html("")
Wenn das man klappt ...
Die Funktion habe ich mit Userskript getestet, aber den Aufruf konnte ich nicht testen.
Lade es auf jeden Fall auf deine Testseite hoch, damit man es untersuchen kann, wenn es nicht funktioniert.
 

udgesbou

Neues Mitglied
13 September 2017
24
0
1
27
#14
Danke dir schonmal. Nur finde ich nicht, wo ich das genau eintragen soll.
Die Zeile 28 ist bei mir eine "}"?
Auch finde ich die Scriptkonstelation so in meiner "waiter.html" nicht.

Grüße
 

udgesbou

Neues Mitglied
13 September 2017
24
0
1
27
#16
Ich habe das ganze hoffentlich richtig in die waiterdesktop.php eingefügt.
Allerdings funktioniert das glaube ich nicht so wie gewollt oder?

Die Desktopoberfläche wird aber sowieso so gut wie nie genutzt, aber vom Verfahren her ist das ja das gleiche.

Grüße
 

Sempervivum

Senior HTML'ler
18 Oktober 2016
1.149
244
63
65
#17
Ups, da ist mir selber ein Fehler unterlaufen, da fehlt ein </script>. So müsste es richtig sein:
Code:
    <link rel="stylesheet" href="php/3rdparty/jqueryui1-12-0/jquery-ui.min.css" />
    <script src="php/3rdparty/jquery-2.2.4.min.js"></script>
    <script src="php/3rdparty/jqueryui1-12-0/jquery-ui.min.js"></script>
   <script src="elements/tablemap.js"></script>
   <script src="elements/grouping.js"></script>
   <script src="utilities.js"></script>
   <script src="receiptutils.js"></script>
  <script>
function arrangeitems() {
        var cont = $("#tablepanelcontent");
        var items = cont.find(".tableelement").get().reverse();
        items.forEach(function(item, idx) {
            var open = $(item).find(".tableopen");
            if (open.length > 0) {
                console.log(open.text());
                cont.prepend($(item));
            }
        });
}
</script>
   <script>
function sendNewOrders(b){var a=getTableid();if(neworders.lengt
 

udgesbou

Neues Mitglied
13 September 2017
24
0
1
27
#18
Habe jetzt zusammen mit dem Entwickler eine leitere Möglichkeit gefunden.
In der Datei roomtables.php habe ich im Bereich:
PHP:
$sql = "SELECT %resttables%.id as id,%resttables%.tableno as name,%resttables%.sorting as sorting,IFNULL(SUM(IF(%queue%.ordertime is not null AND %queue%.paidtime is null AND %queue%.isclosed is null,%queue%.price,0.00)),0.00) as pricesum FROM %resttables% ";
            $sql .= " LEFT OUTER JOIN %queue% ON %queue%.tablenr=%resttables%.id WHERE %resttables%.removed is null AND active='1' AND ";
            $sql .= " %resttables%.roomid=? GROUP BY %resttables%.id,name ORDER BY pricesum DESC, %resttables%.sorting";
das ganze um "ORDER BY pricesum" ergänzt. Jetzt wird alles wie gewünscht sortiert.

Allerdings hätte ich das ganze gerne nur für "Theke", bei "Stube" und "Außen" soll alles normal sortiert werden.
Gibt es da vielleicht eine Möglichkeit, dass die Sortierung nur für "Theke" greift?


Grüße
 

m.scatello

Aktives Mitglied
15 Februar 2017
792
79
28
#19
Gibt es da vielleicht eine Möglichkeit, dass die Sortierung nur für "Theke" greift?
Ja. Und damit wäre deine Frage korrekt beantwortet. :p

Du musst doch wissen, ob es sich gerade um Theke, Stube, etc. handelt. Also kannst du doch auch die SQL-Abfrage entsprechend steuer.

PHP:
if ($blub == "Theke")
   $sql = "Select .....";
else
  $sql = "Select.....";