MySQL: Sortierung gerät durcheinander
Chris
- datenbank
Hallo,
wenn ich folgende Abfrage über phpMyAdmin an meine Datenbank stelle, ist das Ergebnis wie erwünscht:
SELECT id
, name
, link
FROM intalk
.web\_menuleft
WHERE active
= '1'
ORDER BY CONVERT(id
,CHAR) ASC
Die Spalte id
konvertiere ich nach CHAR, weil dort die IDs so drinstehen:
11
12
13
131
132
133
134
135
14
15
... ubnd ich die Sortierung auch genau so haben möchte. Wie gesagt, in PhpMyAdmin alles einwandfrei.
Jetzt mache ich die gleiche Abfrage über mein PHP-Script:
$sql = "SELECT id
, name
, link
FROM intalk
.web\_menuleft
WHERE active
= '1' ORDER BY CONVERT(id
,CHAR) ASC";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))
{
echo $row['name'];
}
Ergebnis:
11
12
133
134
132
135
131
14
15
Die Untersortierungen sind irgendwie durcheinander gewürfelt worden. Woran könnte das liegen?
Lg
Chris
Hallo nochmal,
ganz willkürzlich ist die Sortierung aus dem PHP-Script doch nicht. Ich habe folgendes System feststellt.
Die Abfrage über PHPMyAdmin ergibt:
11
12
13
131
132
133
134
135
136
137
138
139
1310
1311
1312
14
15
16
Über das PHP-Script sieht das so aus:
11
12
13
139
138
137
136
135
134
133
132
131
1312
1311
1310
Er fängt also bei einer Zehnerreihe dann von hinten an und arbeitet sich nach vorne durch.
Merkwürdig merkwürdig...
Lg
Chris
Hi Chris,
11
12
13
131
132
133
134
135
14
15
Zuerst wollte ich dir eine solche Änderung vorschlagen:
011
012
013
014
015
131
132
133
134
135
Also absolute Beibehaltung der Nummern in Reihe.
Aber nach deiner weiteren Schilderung:
$sql = "SELECT
id
,name
,link
FROMintalk
.web\_menuleft
WHEREactive
= '1' ORDER BY CONVERT(id
,CHAR) ASC";
$result = mysql_query($sql);
while ($row = mysql_fetch_array($result))
{
echo $row['name'];
}Ergebnis:
11
12
133
134
132
135
131
14
15Die Untersortierungen sind irgendwie durcheinander gewürfelt worden. Woran könnte das liegen?
Ich denke das Problem ist Irgendwo im Array zu finden, bzw. die Art und Weise wie es befüllt wird, da das Array die Daten so auflistet, wie es befüllt wird (wenn keine Datenposition [0].[1].[2] angegeben wird.
Grüsse gary
Hallo Chris,
wenn ich folgende Abfrage über phpMyAdmin an meine Datenbank stelle, ist das Ergebnis wie erwünscht:
SELECT
id
,name
,link
FROMintalk
.web\_menuleft
WHEREactive
= '1'
ORDER BY CONVERT(id
,CHAR) ASC
Wenn hier etwas gewünschtes rauskommt, so ist das Zufall.
Die Spalte
id
konvertiere ich nach CHAR, weil dort die IDs so drinstehen:
*Ein* Zeichen. Alles was danach kommt, kann also beliebig sein. Sehr schön.
11
12
13
131
132
133
134
135
14
15
Gib die Anzahl der Zeichen an!
Freundliche Grüße
Vinzenz