zwei-, drei-, nStellige Zahlen ausgeben

quidnovi

Erfahrenes Mitglied
Hi folks,

habe in eine Mysql Db folgende Einträge:
01
010
0101

02
022
023

03
03
0301

...

Jetzt möchte ich aber nur die zweistelligen Zahlen in ein Dropdown ausgeben.

Mit folgender Abfrage bekomme ich leider alle Einträge:
PHP:
$sql = "SELECT * FROM table WHERE nr BETWEEN '01' AND '99' ORDER BY 'nr' asc";

Könnt Ihr mir bitte einen Weg zeigen, wie ich zweistellige, dreistellige oder auch drei - fünfstellige Zahlen, ausgeben kann?

Bin jetzt in diesem Forum, da ich denke, dass das mit PHP lösbar ist.

Habe zwar im Netz schon gesucht, aber eigentlich nur Datumsformate und einstellige mit führender Null ausgeben gefunden.

Vielen Dank im Voraus
 
so, habe nun die Abfrage wie folgt:
PHP:
$sql = "SELECT *,LENGTH(nr) FROM table WHERE nr < 100";

while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){
			$trade = $row['trade'];
			$nr = $row['nr'];
			echo $nr." - ".$trade."<br />";
		}

Das Ergebnis:
01 - Landwirtschaft, Jagd
011 - Pflanzenbau
012 - Tierhaltung
013 - Gemischte Landwirtschaft
014 - Erbringung von landwirtschaftlichen und gärtnerischen Dienstleistungen
015 - Jagd
02 - Forstwirtschaft
020 - Forstwirtschaft
05 - Fischerei und Fischzucht
050 - Fischerei und Fischzucht
10 - Kohlenbergbau, Torfgewinnung
11 - Erdöl- und Erdgasbergbau sowie damit verbundene Dienstleistungen
13 - Erzbergbau
---

Wie man sieht, sind die Zahlen "011 - 015" Unterkategorien von "01 - Landwirtschaft, Jagd".

Der Tabellentyp nr ist "VARCHAR" und hier erhalte ich nicht die ersten zwei Zahlen, sondern die Byteanzahl (nehme ich mal an).

Ich habe schon den Tabellentyp auf "INT" umgestellt, nur wird dann die führende Null entfernt. Diese muss aber bleiben, da sonst Dopplungen die Folge sind.

Habe im Netz recherchiert und herausgefunden, dass nur bei einer richtigen Kollatierung der "nr" - Spalte das gewünschte Ergebnis, also die Anzahl der Zeichen, bringt.

Zu meiner Schande kann ich damit überhaupt nix anfangen, besonders im Bezug auf die Abfrage.

Nun bitte ich Euch erneut um Eure Hilfe, danke
 
Zuletzt bearbeitet:
Lösung gefunden!!

Habe ja vermutet, dass das Ganze mit PHP zu lösen ist.

Habe leider nur viel zu kompliziert gedacht :-(

Abfrage sieht so aus:
PHP:
$sql = "SELECT * FROM table";
		$res = mysql_query ($sql) or die;

		while ($row = mysql_fetch_array($res,MYSQL_ASSOC)){
			$trade = $row['trade'];
			$nr = $row['nr'];
			// Zweistellige Zahlen ausgeben
			if (strlen($nr) == 2)

			// Dreistellige Zahlen ausgeben
			//if (strlen($nr) != 2 && strlen($nr) == 3)

			// Vierstellige Zahlen ausgeben
			//if (strlen($nr) != 3 && strlen($nr) == 4)

			// Fünfstellige Zahlen ausgeben
			//if (strlen($nr) != 4 && strlen($nr) == 5)

			// Sechsstellige Zahlen ausgeben
			//if (strlen($nr) != 5 && strlen($nr) == 6)

			echo $nr." - ".$trade."<br />";
		}

Nun erhalte ich die gewünschten Zahlen, in diesem Fall nur jene die aus 2 Zeichen (01,02,03...) bestehen.

Salü
 
Zuletzt bearbeitet:
Zurück