php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.04.2006, 11:12  
Benutzer
 
Registriert seit: 21.06.2005
Beiträge: 30
SolcoDerman
Standard String sortieren und lfd Nr +1

Hallo,

habe hier so einen String zur Verfügung

1000-022-026-06-004

wobei 004 eine lfd. Nr. ist.
diese Daten stehen in einer DB und ich muss eine Fkt. etc. finden die mir die lfd.Nr. automatisch nach oben zählt.

Also:
in einem Array befinden sich verschiedene solcher Strings:
1000-022-026-06-001
1010-022-026-06-002
1150-022-026-06-004

und jetzt muss z.Bsp. der String hinzugefügt werden,wobei alles bekannt ist ausser die lfd.Nr.
1410-022-026-06-???

in diesem Bsp. muss das die 005 werden, nicht die 003,denn die kann gelöscht wurden sein.
Der String ist immer gleich lang.

Kann mir wer helfen!

Gruss
SolcoDerman ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 24.04.2006, 11:20  
Gast
 
Beiträge: n/a
Standard

Der Aufbau ist schon Käse, die laufende Nummer gehört nicht in den String. Benutze eine ID-Spalte mit auto_increment, dann erledigt MYSQL das für dich von alleine.

Gruß
phpfan
 
Alt 24.04.2006, 11:57  
Benutzer
 
Registriert seit: 21.06.2005
Beiträge: 30
SolcoDerman
Standard

Nein,

eine id-Spalte hat jede meiner 4 Tabellen.

ok, dann so.
diese Nummer ist eine Lehrgangsnummer und darf nur einmal pro Jahr vorhanden sein.
1000-steht für den Inhalt des Lgs
022 - ist das Haus
026 - ist der Raum
06 - das Jahr
004 - die lfd Nr für das Jahr 06 hier.
SolcoDerman ist offline  
Alt 24.04.2006, 12:03  
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 252
PHP-Kenntnisse:
Fortgeschritten
stefanjann
Standard

Ich üb mich jetzt mal in Hellsehen, weil die Fragestellung ist nicht eindeutig oder ausreichend:

Mal angenommen deine DB ist MySQL (wobei es in MySQL jetzt weniger Arrays gibt)_

Der MySQL-Befehl MAX() sollte dir helfen. Der ermittelt dir immer den höhsten Wert. Und mit RIGHT() kannst du von der rechten Seite aus eine bestimmte Anzahl an Zeichen aus einem String herausnehmen:

Code:
SELECT MAX(RIGHT(`feld_mit_Ifd`,3))+1 AS nexter FROM `mytable` LIMIT 1;
Ansonsten beschreib dein Problem etwas genauer!

Gruß,
Stefan
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 24.04.2006, 12:14  
Benutzer
 
Registriert seit: 21.06.2005
Beiträge: 30
SolcoDerman
Standard

also, dann genauer:

die Spalte in der tabelle sieht so aus:

1000-022-026-05-001
1810-022-026-05-002
1150-022-026-05-004
1000-022-026-06-001
1810-022-026-06-002
1150-022-026-06-004
1050-022-026-06-006
1020-022-026-06-007

ich muss jetzt für das Jahr 06 die nächste lfd.Nr ermitteln,
es muss also 008 herauskommen.

ist das so genauer??
SolcoDerman ist offline  
Alt 24.04.2006, 12:50  
Erfahrener Benutzer
 
Benutzerbild von stefanjann
 
Registriert seit: 02.08.2005
Beiträge: 252
PHP-Kenntnisse:
Fortgeschritten
stefanjann
Standard

Hast du meinen Code mal ausprobiert?
__________________
SELECT * benutze ich nur um den Post kurz zu halten.
stefanjann ist offline  
Alt 24.04.2006, 13:00  
Benutzer
 
Registriert seit: 21.06.2005
Beiträge: 30
SolcoDerman
Standard

Ja,hab ich,
wie ich mir gedacht habe, kommt bei folgender Annahme

1000-022-026-05-001
1810-022-026-05-002
1150-022-026-05-004
1050-022-026-05-006
1020-022-026-05-007
1000-022-026-06-001
1810-022-026-06-002
1150-022-026-06-004
1050-022-026-06-???

nicht wie erwartet 005 raus, sondern 008 (007 aus dem jahr 05)
es muss aber für das Jahr 06 005 rauskommen.
SolcoDerman ist offline  
Alt 24.04.2006, 13:46  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von phpfan
Der Aufbau ist schon Käse, die laufende Nummer gehört nicht in den String. Benutze eine ID-Spalte mit auto_increment, dann erledigt MYSQL das für dich von alleine.
Zitat:
Zitat von SolcoDerman
Nein
Warum einfach Nein sagen - das ist die "richtigste" Lösung.
In eine Zelle gehören atomare Daten.

Jetzt noch rumdoktorn und verschlimmbessern macht dir das System mit der Zeit kaputt!

Wenn du den Vorschlag mit MAX(RIGHT()) benutzen willst, muss eben in die WHERE-Bedingung LIKE '????-???-???-06-???' oder ähnlich "performantes"
Zergling-new ist offline  
Alt 24.04.2006, 13:48  
Erfahrener Benutzer
 
Registriert seit: 05.07.2004
Beiträge: 1.476
DiBo33
Standard

Warum man das Ganze nicht auf 5 Felder aufteilt, was Vernünftiger wäre, wird mir immer ein Rätsel bleiben

Haupsache DBMS mit Excel verwechseln

Code:
SELECT 
  SUBSTRING(deinfeld, 14, 2) jahr, 
  RIGHT(CONCAT('000', MAX(RIGHT(deinfeld, 3)) + 1), 3) maxnr
FROM deinetabelle 
WHERE SUBSTRING(deinfeld, 14, 2) = '06'
GROUP BY jahr
DiBo33 ist offline  
Alt 24.04.2006, 13:59  
Benutzer
 
Registriert seit: 21.06.2005
Beiträge: 30
SolcoDerman
Standard

Es liegt mir fern, euch zu sagen das Ihr falsch liegt, im Gegenteil Ihr habt sicherlich recht.

aber die lfd Nr beginnt jedes Jahr von 001 bis 00x
Ich habe auch schon darüber nach gedacht diesen gesamten String flexibel zusammenzusetzen,also immer wenn ich ihnbenötige, dann über joins zusammenzusetzen.

Gruss
SolcoDerman 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
Event abfangen Ambience JavaScript, Ajax und mehr 4 30.08.2007 14:36
String auslesen Shaira PHP Tipps 2006 11 01.12.2006 17:52
solved: Sortieren von Dateiname A Hoppe PHP-Fortgeschrittene 3 14.11.2006 08:04
string speziell sortieren ruferp PHP Tipps 2006 5 31.05.2006 15:49
Multidimensionales Array nach String sortieren ssm PHP Tipps 2006 12 29.03.2006 15:38
string in array sortieren... Dave Waterstone PHP Tipps 2005-2 4 07.09.2005 08:06
In allen Spalten nach String suchen Jacks Rache Datenbanken 0 05.08.2005 20:15
In allen Tabellen nach String suchen Jacks Rache Datenbanken 0 05.08.2005 11:18
String in allen Spalten suchen Jacks Rache Datenbanken 0 05.08.2005 09:43
Alle Spalten nach String durchsuchen Jacks Rache Datenbanken 0 05.08.2005 09:41
where string von einer funktion zu anderen transportieren PHP Tipps 2005 5 03.03.2005 16:29
php code als string umwandeln PHP Tipps 2005 8 23.02.2005 18:03
String auf bestimmte Breite (Pixel) kuerzen... mudo PHP-Fortgeschrittene 25 28.01.2005 19:07
[Erledigt] String mit Leerzeichen auffüllen HTML, Usability und Barrierefreiheit 2 27.10.2004 18:47
bekomme string nicht in mysql-tabelle PHP Tipps 2004 6 26.07.2004 11:35

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
substr( deinfeld , 1 ,1 ) was bedeuten 1, 1, \ 1\ nummer, mysql string sortieren, nach lfd. nummern sortieren, mysql string feld mit nummern sortieren, php string sortieren, php sort strings, php string mit fortlaufender nummer, lfdnr sortieren, $i lfdnr php, php lfd, http://www.php.de/php-tipps-2006/39377-string-sortieren-und-lfd-nr-1-a.html, excel \string sortieren\

Alle Zeitangaben in WEZ +2. Es ist jetzt 14:53 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.