php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 17.12.2008, 12:25  
Erfahrener Benutzer
 
Benutzerbild von Ramona86
 
Registriert seit: 11.07.2008
Beiträge: 121
PHP-Kenntnisse:
Anfänger
Ramona86 wird schon bald berühmt werdenRamona86 wird schon bald berühmt werden
Standard Sortierung von Datenbankinhalten

Hallo zusammen,

es geht um die Sortierung einer Spalte in einer MySQL-Datenbank des Typs Text mit Inhalten, die wie folgt aussehen:

DN 15
DN 25
DN 40
DN 50
DN 100
DN 200

In dieser Reihenfolge sollte es eigentlich sortiert sein, leider sortiert er die Spalte aber bei angabe von ORDER BY nennweite ASC so:

DN 100
DN 15
DN 200
DN 25
DN 40
DN 50

Mir ist klar, warum er das macht, aber noch nicht ganz wie ich das verhindern/ändern kann.
Ich hatte mir schon überlegt "DN " vorne abzuschneiden und den Rest als Typ INT in die Datenbank zu speichern.
Leider sehen nicht alle Datensatze so aus, weshalb der Typ Text undbedingt bleiben muss.

Meine erste Idee war die Eingabe mit regulären Ausdrücken zu bearbeiten, damit ich z.B. aus "DN 15" --> "DN 015" mache, wodurch dann ja wieder richtig sortiert werden würde.
Dann müsste ich eben bei der Ausgabe die Null wieder wegnehmen.

Meine Frage ist jetzt eigentlich nur:
Ist das so die beste und richtige Methode?
Oder denke ich zu umständlich und es lässt sich viel einfacher lösen?
Wenn ja wie? (Brauche nur einen Denkanstoß)

Ich hoffe ich habe mich verständlich ausgedrückt.

Vielen Dank schonmal im Voraus.

Grüße
Ramona
Ramona86 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 17.12.2008, 12:34  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Hallo.

Nein du musst nicht beim Typ Text bleiben. Werden die Daten in ein Textformularfeld eingegeben?

Wenn ja dann trenne beim eintragen den Post String einfach mit explode auf und trage die Werte in die zwei Felder ein. Eines was den Textstring DN oder was auch immer enthält und eines was den Zahlenwert enthält.

Dann beim auslesen sortierst du mit Order By intspalte ASC und setzt bei der Ausgabe einfach den dazu enthaltenen Text davor und schon müsste das hin hauen.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 17.12.2008, 12:48  
Erfahrener Benutzer
 
Benutzerbild von Ramona86
 
Registriert seit: 11.07.2008
Beiträge: 121
PHP-Kenntnisse:
Anfänger
Ramona86 wird schon bald berühmt werdenRamona86 wird schon bald berühmt werden
Standard

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Nein du musst nicht beim Typ Text bleiben.
Hallo litter,

ich hätte es vielleicht nochmal genau an Beispielen erläutern sollen...
Außer der Form z.B. "DN 15" kann in derselben Spalte auch noch z.B. so etwas stehen: 2 1/2" (" steht für Zoll) je nachdem, ob es eine Ausführung nach DIN oder ANSI ist.
Deshalb denke ich müsste ich doch beim Typ TEXT bleiben, oder?

Dank schonmal.

Ramona
Ramona86 ist offline  
Alt 17.12.2008, 12:54  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Nein auch dann nicht,aber du musst dann bei der Ausgabe etwas bearbeiten.

Du müsstest zum Beispiel wenn du diese Angabe eintragen willst das so machen.

Anstatt 1/2 schreibe 05 rein,dann wird das als int gewertet und du kannst sortieren. Nache der Sortierung musst du dann die Ausgabe so formatieren wie du es brauchst. Ich kenne nun nein Projekt und Auftragslage nicht,aber das wäre ein Ansatz,kann sein das es einfache rund eleganter geht,aber so würde ich das machen.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 17.12.2008, 18:15  
Neuer Benutzer
 
Registriert seit: 15.12.2008
Beiträge: 6
void befindet sich auf einem aufstrebenden Ast
Standard

was auch geht, speicher die werte wie gehabt als text, füge aber noch 2 spalten in der tabelle hinzu, mit z.b "norm" und "werte", in das eine schreibst du strings, din, ansi oder was auch immer und in werte den entsprechenden dazugehörigen wert. damit kannst du dann auch intern rechnen.

gruss void
void ist offline  
Alt 17.12.2008, 18:53  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Zitat:
Zitat von void Beitrag anzeigen
was auch geht, speicher die werte wie gehabt als text, füge aber noch 2 spalten in der tabelle hinzu, mit z.b "norm" und "werte", in das eine schreibst du strings, din, ansi oder was auch immer und in werte den entsprechenden dazugehörigen wert. damit kannst du dann auch intern rechnen.

gruss void
Und das geht mit meiner Variante nicht? Nichts anderes habe ich geschrieben.
Wozu aber bitte die Werte weiter als Text speichern und extra 2 Felder? Das ist m.A.n Sinnlos.
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 18.12.2008, 09:49  
Neuer Benutzer
 
Registriert seit: 15.12.2008
Beiträge: 6
void befindet sich auf einem aufstrebenden Ast
Standard ?

Zitat:
Zitat von litterauspirna Beitrag anzeigen
Und das geht mit meiner Variante nicht? Nichts anderes habe ich geschrieben.
Wozu aber bitte die Werte weiter als Text speichern und extra 2 Felder? Das ist m.A.n Sinnlos.
warum so agressiv ? ich sagte wenn "mann/frau" es braucht, "kann" man es sowohl so oder so speichern oder tabellen erweitern etc..ob es einen sinn hat, kann nur der programmierer entscheiden und erzähl jetzt nicht, das es nicht viele wege nach rom gibt beim koden. ich habe deine variante nicht kritisiert, wohl nur überflogen und damit nicht richtig gewürdigt. tut mir leid
void()
void ist offline  
Alt 18.12.2008, 10:31  
Erfahrener Benutzer
 
Benutzerbild von litterauspirna
 
Registriert seit: 24.04.2008
Beiträge: 3.172
PHP-Kenntnisse:
Anfänger
litterauspirna sorgt für eine eindrucksvolle Atmosphärelitterauspirna sorgt für eine eindrucksvolle Atmosphäre
litterauspirna eine Nachricht über ICQ schicken
Standard

Um Himmels Willen void ich bin nicht aggressiv,nicht hier. Nein wenn es so rüber kam dann entschuldige war nicht meine Absicht. Beim coden gibt es natürlich viele Wege die zum Ziel führen (was will ich zum Teufel in Rom ).

Nein letztenendes kommt sie um gewisse Formatierungen etc. sowieso nicht drum rum, bei dem was sie vorhat. Weil mit einem solchen Wert 1/2 kann man nun mal nicht sortieren sinnvoll. Also muss man sichenen Weg schaffen es zu einem Wert zu formatieren mit dem man sinnvoll sortieren kann und bei der Ausgabe dann kann man das wieder rückformatieren zu dem Wert wie er ausgegben und angezeigt werden soll. Um diese Sache kommt sich rum, nicht bei ihrem beschrieben Problem.

Ich sagte deshalb das deine Variante Sinnlos ist das eine Feld als Text beizubehalten und zwei zusätzliche Felder anzulegen, weil in das eine Feld trägt sie den Datensatz so ein, aber sie muss trotzdem auflösen um am Ende vernüftig nach int Werten sortieren zu können. Also deshalb gleich zwei Felder, dann den String aus dem Postfeld auflösen und in das eine Feld was nicht für die Sortierung zuständig ist den Texteil reinschreiben und in den anderen Teil des Strings den formatierten oder gewandelten int Wert rein schreiben.

Hoffe das ist jetzt besser und weniger aggressiv beschrieben.

Außerdem was erlauben du dir, meinen Post nicht zu würdigen so eine Frechheit aber auch . Nimms locker alles nur Spaß.

mfg der litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
litterauspirna ist offline  
Alt 18.12.2008, 11:15  
Erfahrener Benutzer
 
Registriert seit: 04.07.2003
Beiträge: 359
PHP-Kenntnisse:
Fortgeschritten
Sirke befindet sich auf einem aufstrebenden Ast
Standard

Wenn ich das Richtig verstanden habe, handelt es sich bei diesen "DN ??" oder "ANSI ??" um irgendwelche Bauteile oder ähnliches mit bestimmten Kenngrößen! Daher würde ich das ganze in zwei Spalten in einer Tabelle ablegen: 1. Name (String), 2. Größe (Float)

Damit kann man die Einträge anhand von Größe sortieren, sodass sogar Angaben in Zentimeter und Zoll sinnvoll sortiert werden. Zum Eintragen muss man lediglich den Zahlenwert in irgendeiner Weise extrahieren und in eine einheitliche Einheit umrechnen. Umrechnungen in verschiedene Einheiten sind bei der Ausgabe ebenfalls möglich.
Sirke ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Sortierung LDAP mit php Pillemon PHP Tipps 2008 5 30.09.2008 10:49
sortierung brian johnson Datenbanken 6 05.05.2008 19:53
Sortierung eines Arrays nach ANZAHL Werte simsalabim PHP Tipps 2008 5 06.11.2007 13:44
Sortierung eines Arrays vollkommenegal PHP-Fortgeschrittene 5 14.07.2007 21:12
Sortierung nach punkten und Tordifferenz xXx PHP Tipps 2006 12 08.04.2006 16:28
Eigene Sortierung bei der SQL-Abfrage Datenbanken 14 09.02.2006 10:53
mySQL : deutsche Sortierung malabarista PHP Tipps 2007 7 18.12.2005 13:22
SQL sortierung fehlerhaft... Datenbanken 12 08.12.2005 13:29
[Erledigt] varchar zur php timestamp sortierung geeignet? Datenbanken 4 14.07.2005 17:13
MySQL abfrage mit berechneter Sortierung Dragon26mFR Datenbanken 5 08.05.2005 14:01
Sortierung der Ausgabe PHP-Fortgeschrittene 3 08.10.2004 09:22
Sortierung der NULL-Inhalte Datenbanken 3 28.09.2004 22:16
[Erledigt] sortierung vom user aus Datenbanken 10 23.09.2004 18:02
Gleiche Abfrage, unterschiedliche sortierung juhuwoorps Datenbanken 2 05.09.2004 00:51

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php 015 die 0 wegnehmen explode

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:35 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum