Seitenweise Sortierung nach Ländern

truckdriver

Mitglied
Hallo zusammen,

für eine seitenweise Sortierung meiner Datenbankeinträge nach den Anfangsbuchstaben des Alphabets nutze ich den untenstehenden Code.

Diesen möchte ich gerne so verändern, dass eine seitenweise Sortierung nach Ländern erfolgt. Es sollen also z. B. alle Firmen aus Deutschland auf einer Seite, alle Firmen aus Österreich auf einer Seite usw. ausgegeben werden.

Die Funktion sollte nach Möglichkeit so arbeiten, dass nur die Länder zur Auswahl stehen, die auch tatsächlich in der Datenbank vorhanden sind. Aus Gründen der Übersichtlichkeit halte ich das für sinnvoll.

Leider habe ich keinen Plan, ob und wie das zu realisieren wäre? Ich denke aber, dass mir hier sicherlich weitergeholfen werden kann.

PHP:
<?php
$selection = isset($_GET["buchstabe"]) ? $_GET["buchstabe"] : "A";
foreach(range("A", "Z") as $buchstabe) {
$links[] = $selection == $buchstabe ? $buchstabe : "<a href='?buchstabe=$buchstabe'>$buchstabe</a>";
}
echo implode(" | ", $links);
$result = mysql_query("SELECT a,b,c,d,e FROM tabelle WHERE a LIKE '$selection%' ORDER BY a");
if(mysql_num_rows($result) < 1) 
{
echo "Leider keine Einträge zum Buchstaben $selection gefunden.";
}
else {
while($row = mysql_fetch_assoc($result))
    {
 # Hier erfolgt dann die Ausgabe per echo ...
    }
	}
 
Interessant wäre da noch was die Spalten a, b, c, d und e für eine Bedeutung haben.
Bzw. was Sie für ein Typ (VARCHAR,INT oder TEXT usw.) sind.
 
Die Spalten sind vom Typ VARCHAR.

Bedeutung:

a = Firmenname
b = Verknüpfung (URL)
c = hier steht eine Zahl in der Datenbank
d = Land
e = Verknüpfung mit einem Bild in Form einer URL
 
Ja als erstes würde ich eine Abfrage machen welche Länder alle in der Datenbank
vorhanden sind. Das müsste mir GROUP BY funktionieren.
SQL:
SELECT * FROM `tabelle` GROUP BY `d`
Danach schreibt du alle in ein SELECT/OPTION Element.
Sobald der Benutzer dieses Element verändert, lädt die Seite neu.
Aber diesmal mit einem $_GET Parameter für das Land.
Den bindest du dann noch in dein SQL Statement ein.
 
Danke dir! Das mit GROUP BY funktioniert und das Schreiben in ein SELECT Element auch.

Ein Problem bereitet mir jetzt noch das in einen funktionierenden Code zu fassen mit den entsprechenden Variablen usw.

Wäre sehr nett, wenn du mir da nochmal helfen könntest.
 
Ich habe die letzten Stunden damit verbracht, einen entsprechenden Code zu schreiben. Es funktioniert auch schon fast so, wie ich es mir vorgestellt habe.

Folgendes Problem besteht jetzt noch: Wenn ich die Seite zum ersten Mal aufrufe (sprich ohne eine Auswahl zu treffen), dann wird mir die komplette Datenbanktabelle ausgelesen und angezeigt. Das möchte ich vermeiden. Ich möchte, dass automatisch alle Einträge des ersten Landes angezeigt werden (sozusagen als Default).

Vielleicht kann mir da noch jemand auf die Sprünge helfen.

Falls sonst noch Fehler im Code sind, freue ich mich sehr über eine Korrektur. Fange nämlich gerade erst an mich intensiv mit PHP zu beschäftigen.

Vielen Dank im Voraus!

Hier mein Code:

PHP:
<form name="land" action="" method="get"> 
<select onchange="window.location.href='<?php echo $HTTP_SERVER_VARS['PHP_SELF']; ?>?land='+this.options[this.selectedIndex].value;">
<option value="leer">Bitte wählen Sie ein Land:</option>
<option value="leer">==============================================</option>
<?php
$query = "SELECT a,b,c,d,e FROM tabelle GROUP BY d";
$result = mysql_query($query);
while ($data = mysql_fetch_array($result))
{
echo "<option value='" . $data["land"] . "'>"; echo $data["land"] . "</option>";
} 
$selection = isset($_GET["land"]) ? $_GET["land"] : "land";
$result = mysql_query("SELECT a,b,c,d,e FROM tabelle WHERE d LIKE '$selection%' ORDER BY a"); 
while($row = mysql_fetch_assoc($result)) 
{ 
# Hier erfolgt dann die Ausgabe per echo ... 
}
?>
</select>
</form>
 
Hallo?

Leider habe ich bisher noch keine Antwort erhalten.

Würde mich sehr freuen, wenn sich jemand den Code aus dem vorigen Post ansehen würde.

Danke!
 
Zurück