From 3e70d85f8333594598055eb4a41828e3ff935039 Mon Sep 17 00:00:00 2001 From: Banana Date: Mon, 16 Jul 2012 15:19:24 +0200 Subject: [PATCH] new js and mysql snippets --- MySQL/select-until.sql | 59 +++++++++++++++++++++++++ javascript/tabellenzeilen-ausblenden.js | 13 ++++++ javascript/tabellenzeilen-new-remove.js | 21 +++++++++ 3 files changed, 93 insertions(+) create mode 100644 MySQL/select-until.sql create mode 100644 javascript/tabellenzeilen-ausblenden.js create mode 100644 javascript/tabellenzeilen-new-remove.js diff --git a/MySQL/select-until.sql b/MySQL/select-until.sql new file mode 100644 index 0000000..341f1f0 --- /dev/null +++ b/MySQL/select-until.sql @@ -0,0 +1,59 @@ +/* +Nun es gibt keinen SELECT UNTIL Befehl in MySQL. Nein es soll jediglich nur die Möglichkeit erläutert wie man so was realisieren kann. + +Hier nun mein Beispiel bzw. das "Problem". +Man stelle sich folgende Tabelle vor: + +customerId|punkte|preis|wert|geld +1|20|431|22|849 +2|51|732|8|469 +3|57|24|886|75 +4|2|47|8|27 +Wenn man nun eine Übersicht möchte die zeigt welcher Kunde (identifiziert anhand der customerId), sotiert nach Punkten auf welchem Platz ist. + +Nun da genügt folgender SQL Befehl: +*/ + +SELECT * FROM `customerTable` ORDER BY `punkte` DESC + +/* +Dies erstellt ja eine Übersicht von allen in dieser Tabelle. Man kann auch noch ein Limit einbauen, aber es werden immer alle angezeigt. + +Der Platz in der Liste wird anhand der Sortiertung bzw. dem ORDER BY festgelegt und zeigt sich erster nach dem auslesen und anzeigen der Daten. +Somit wäre Kunde 3 an erster Stelle bzw. Platz. Dies kann für den Kunden sehr von Intresse sein. Man möchte ja wissen ob man besser ist als die anderen. + +Wenn man nun also das Ergbnis darstellt muss man die Positionsnummer manuell davorschreiben. +Ist bei einer Übersicht ja auch keine Problem. Einfach eine Schleife die alle Ergebnisse der Abfrage durchgeht und dabei eine aufsteigende Nummer pro Eintrag mit anzeigen/ausgeben. + + + +Nun hat ja fast jede Übersicht auch einen Detailansicht auf der mehr Informationen angezeigt werden die auf der Übersicht nicht vorhanden sind. + +Auf der Detailseite soll aber auch die Position nach einem bestimmten Kriterium angezeigt werden. + +Ok, SQL Abfrage machen und durchnummerieren und dann die Nummer für diese Detailseite eines bestimmten Kunden anzeigen. + +Hmm aber warum das Selbe tun wie auf der Übersichtsseite ? +Warum nochmals alle Abfragen nur um eine Information zu bekommen ? +Warum gefahr laufen den Arbeitspeicher zuzumüllen ? + +Wenn man eine Anwendung entwickelt, sollte man immer beachten, dass diese auch unter "last" funktioniert und man immer genug Daten zum testen hat. + +Denn wenn mal so eine Tabelle über 1000 oder sogar Millionen Einträge hat, was dann ? +Da wird so eine SQl Abfrage ein wenig länger dauern und irgendwann sagt, PHP "no memory" etc. + +Nun möchte man ja nur die Position wissen. Also werden eigentlich die Daten/Zeilen die nach der gewünschten customerId nicht mehr benötigt. + +Dies lässt sich mit folger Abfrage erledigen: +*/ + +SELECT count(*) AS rank +FROM `table` +WHERE active = 1 +AND punkte > +(SELECT punkte FROM `table` WHERE customerId = 88) +/* +Wir zählen als wie viele Einträge größer als der Kunde ist. Zu dem Ergebnis muss man da nur noch +1 machen und schon hat man die Position in der Liste wie auf der Übersicht. + +So einfach und man hat nur die Daten die man braucht und kann jeder Zeit die Bedingungen ändern. +*/ \ No newline at end of file diff --git a/javascript/tabellenzeilen-ausblenden.js b/javascript/tabellenzeilen-ausblenden.js new file mode 100644 index 0000000..2395ca4 --- /dev/null +++ b/javascript/tabellenzeilen-ausblenden.js @@ -0,0 +1,13 @@ +/* +Wenn man dynamisch mit Javascript Tabellenzeilen ein und ausblenden will sollte man dies wie folgt tun: +*/ + +// ausblenden +document.getElementById('row_1').style.display = 'none'; + +// anzeigen +document.getElementById('row_1').style.display = ''; + +/* +Wie man sieht wird einfach die display Eigenschaft verändert. Das besondere dabei ist, dass zum Anzeigen die Eigenschaft leer gesetzt wird und damit dem Browser überlassen wird was er nimmt. +*/ \ No newline at end of file diff --git a/javascript/tabellenzeilen-new-remove.js b/javascript/tabellenzeilen-new-remove.js new file mode 100644 index 0000000..9838aff --- /dev/null +++ b/javascript/tabellenzeilen-new-remove.js @@ -0,0 +1,21 @@ +/* +Javascript bietet auch eine Funktion mit der man dynamisch Tabellen Zeilen hinzufügen und entfernen kann. + +Hier mal ein Beispiel wie man eine Zeile hinzufügt: +*/ + +function addNewRow() { + tableObj = document.getElementById('tableCol'); + // add new row at the end + row = tableObj.insertRow(-1); + + var x=row.insertCell(0); + x.innerHTML="cell1"; + + var z=row.insertCell(1); + z.innerHTML="cell2"; +} + +/* +Diese Funktion legt an der tabelle mit der ID "tableCol" eine Neue Reihe am Ende ( das -1 bei .insertRow ) an. Dies kann beliebig oft wiederholt werden. +*/ \ No newline at end of file -- 2.39.5