Supportnet Computer
Planet of Tech

Supportnet / Forum / Skripte(PHP,ASP,Perl...)

Mal wieder PHP





Frage

Hi Leute, irgendwie habe ich ein Problem mit einer MySQL-Abfrage. In meiner DB habe ich mehrere gleiche Einträge, die in einem Pulldownmenü nur einmal erscheinen sollen. Also, wenn ich die DB nach titel abfrage, erscheinen im Menü alle Einträge. Aber nicht Sortiert, sondern so:1,10,11,12,13,14,15,16,17,18,19,2,20,3,4,5,6,7,8,9 Wenn ich die DB nach rbild abfrage, bekomme ich auch Einträge, aber sie sind in der gleichen Farbe wie der Hintergrund,sprich: Man kann nix lesen. Hier mal der Code, der mir nur Weiß auf Weiß gibt: $result_ruck = mysql_query("SELECT DISTINCT rbild FROM ruck order by titel"); ?> <script language="JavaScript"> <!-- Verstecken für ältere Browser -- function surfto(form) { var myindex=form.dest.selectedIndex window.open(form.dest.options[myindex].value, target="ruck1"); } // Ende verstecken --> </SCRIPT> <Form Name="myform"> <Select Name="dest" onChange="surfto(this.form)" Size=1> <option value="ruck1.php">Buchrücken</option> <?php while ($row_ruck = mysql_fetch_array ($result_ruck)) { $titel = $row_ruck["titel"]; $rbild = $row_ruck["rbild"]; $datei = $row_ruck["datei"]; $nr = $row_ruck["nr"]; $id = $row_ruck["id"]; ?> <option value='ruck1.php?titel=<?php echo $titel ?>'><?php echo $titel ?></option> <?php } ?> </select> </form> Also in der DB ist rbild als INT deklariert und titel als TEXT. Wenn ich oben in der Abfrage rbild mit titel ersetze, werden mir die Datensätze angezeigt. Aber nicht nach: 1,2,3,4,5,6,7,8,9,10. Weiß jemand Rat? Danke im Vorab. Yessi

Antwort 1 von Nessus

Hi,

weil die Klausen Order by bei Textfeldern nicht Numerisch sondern Alphanummerisch sortiert. Wenn Du das Feld nicht vom Typus ändern kannst mußt Du dir eine Bubblesort herbeizaubern.

HTH

Nessus

Antwort 2 von semi

...und in Deiner Abfrage selektierst Du nur die Spalte 'rbild'
SELECT DISTINCT rbild,titel,datei,nr,id...
Dazu passend:

Sachen gibt's, die gibt's nicht :-)

Gruß,
Michael

Antwort 3 von YesAmerika

Hi,
danke für die Antworten. Ich habe das jetzt aber anders gelöst.
SELECT DISTINCT rbild FROM ruck order by titel + 0

So läuft es.

Trotzdem Danke.


Yessi

Antwort 4 von semi

Irgendwie erstaunlich

$result_ruck = mysql_query("SELECT DISTINCT rbild FROM ruck order by titel + 0");

und dann

while ($row_ruck = mysql_fetch_array ($result_ruck))
{
$titel = $row_ruck["[b]titel"];
$rbild = $row_ruck["rbild"];
$datei = $row_ruck["[b]datei"];
$nr = $row_ruck["[b]nr"];
$id = $row_ruck["[b]id"];

...
Ich hätte nicht gedacht, dass sowas funktioniert :-)