ERLEDIGT
NEIN
NEIN
ANTWORTEN
7
7
ZUGRIFFE
618
618
EMPFEHLEN
-
Hallo,
ich habe in meiner DB eine Spalte "L_ID", die Werte von "rva00001" bis "rva99999" annehmen kann. nun möchte ich einen freien Wert suchen. Wie stelle ich das am Geschicktesten an?
Bsp.:
L_ID |
-------------|
rva00001|
rva00002|
rva00003|
rva00005|
rva00006|
rva00567|
-------------|
Hier soll nun das Ergebnis rva00004 geliefert werden.
-
30.03.04 13:29 #2Ist ungetestet, sollte aber gehen...PHP-Code:
$sql = "SELECT L_ID FROM table";
$result = mysql_query($sql);
$temp = 1;
while ($query = mysql_fetch_row($result)) {
if (substr($query[0], 3, strlen($query[0])-3) > $temp) {
$frei = "rva" . $temp;
break;
}
else {
$temp++;
}
}
MfG AqUaSoN!C
o Wie man richtig Fragen stellt o
o Nicht in Problemen sondern in Lösungen denken! o
o Es gibt 2 Dinge, die sind unendlich: das Universum und die menschliche Dummheit. Aber beim Universum bin ich mir noch nicht ganz sicher. o
> Meine Linksammlung > http://linksys.aquasonic.ch
> Mein Wiki > http://wiki.aquasonic.ch
-
Danke, aber das ergebnis sollte immer fünfstellig sein, also z.B. rva12345
Könntest du mir da bitte nochmal helfen?
-
30.03.04 16:07 #4
- Registriert seit
- Aug 2003
- Beiträge
- 175
erklärst Du mal , warum Du dort immer rva00001 stehen hast?
Ich hatte das mit einer autoincrement spalte gelöst
um im quelltext dann die führenden Nullen und das rva ergänzt.
Aber in der DB hätte ich das als Int gelassen
-
Wenn Du der Spalte zusätzlich noch die Option zerofill gibst, dann brauchst Du dich um die führenden Nullen auch nicht mehr kümmernOriginal geschrieben von boelkstoff
erklärst Du mal , warum Du dort immer rva00001 stehen hast?
Ich hatte das mit einer autoincrement spalte gelöst
um im quelltext dann die führenden Nullen und das rva ergänzt.
You want me to be, something I can never ever be!
-
Grund ist, dass ich bereits eine Spalte habe in der Lieferantennummern (int) drinstehen.
So wie ich das sehe, muss ich doch auch beim Select erst mal sortieren, um die nächste freie ID zu finden oder?
wie zur Hölle bekomme ich aber die führenden Nullen und die fünf Stellen da rein?
Bitte um Hilfe...
-
31.03.04 02:19 #7
- Registriert seit
- Jul 2003
- Beiträge
- 180
Also ich hab mal diesen Denkansatz:
1. Die Daten per "ORDER BY" Klausel ordnen (das müsste eigentlich funktionieren)
2. Einen counter während der Ausgabe mitlaufen lassen.
3. Die zahlen (wie es aquasonic macht) vergleichen und die freie Stelle feststellen
4. Anzahl der Nullen über den counter bestimmen: counter < 10 --> 4 Nullen | 9 < counter < 100 --> 3 Nullen | und so weiter...
5. Den String wieder zusammensatzen
Ich bin jetz zu müde, um nen Code zusammen zu schustern
Aber evtl. hilft Dir ja mein Denkansatz schon weiter...
-
31.03.04 12:41 #8
- Registriert seit
- Jul 2003
- Beiträge
- 180
Nicht getestet, sollte aber so funktionieren.PHP-Code:$sql = "SELECT L_ID FROM table ORDER BY L_ID ASC";
$result = mysql_query($sql);
$temp = 1;
while ($query = mysql_fetch_row($result)) {
if (substr($query[0], 3, strlen($query[0])-3) > $temp) {
if($temp < 10){
$frei = "rva0000" . $temp;
}
if($temp > 9 AND $temp < 100){
$frei = "rva000" . $temp;
}
if($temp > 99 AND $temp < 1000){
$frei = "rva00" . $temp;
}
if($temp > 999 AND $temp < 10000){
$frei = "rva0" . $temp;
}
if($temp > 9999){
$frei = "rva" . $temp;
}
break;
}
else {
$temp++;
}
}
Ähnliche Themen
-
Freie Look an Feels?
Von Smily0412 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 11.02.08, 14:17 -
MySQL: freie ID suchen mit hindernissen
Von Gray im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 09.10.07, 15:56 -
Freie Meinungsäußerung?
Von MeisterLampion im Forum SmalltalkAntworten: 5Letzter Beitrag: 26.09.07, 23:50 -
Freie Datenbanken
Von steyrblade im Forum Relationale DatenbanksystemeAntworten: 0Letzter Beitrag: 17.02.07, 13:44 -
freie Formate in cm
Von walter gramming im Forum PhotoshopAntworten: 4Letzter Beitrag: 15.10.05, 15:33





Zitieren
Login






[PHP][Snippet] Array zu XML konvertieren