Clanintern Clanintern Clanintern

Forum

Öffentliche Foren
FORUM: Spiele & Computer THEMA: IPs aus Datenbank sortieren
AUTOR BEITRAG
CaptainCat™

RANG Lord of Clanintern

#1 - 11.06 18:37

Nabend


Ich hab in einer MySQL-Tabelle etwa 150 verschiedene IP-Adressen in verschiedenen Adressbereichen (xxx.xxx.31.xxx... , 32, 33,...) und möchte nun die einzelnen Adressbereiche rausfiltern.

Dazu möchte ich aus nem Dropdown Feld den jeweiligen Adressbereich auswählen (31/32/33...) und dann sollen eben nur die entsprechenden Einträge ausgegeben werden.

Für das Dropdown-Feld hab ich mir mehrere Varianten überlegt:

- Ich könnte eine extra Tabelle erstellen mit den verschiedenen Adressbereichen. Dann gebe ich im Dropdown-Menü einfach die Einträge dieser Adressbereichs-Tabelle aus
- Ich arbeite nur mit der vorhandenen Tabelle mit den ganzen Einträgen. Ich lasse dann einmal alle Einträge durchlaufen und schaue wie viele verschiedene Bereiche insgesamt vorhanden sind. Diese könnte ich in ein Array speichern und im Dropdown Feld zur Auswahl ausgeben.


Dann hab ich noch ein Problem mit der Ausgabe:

- Erste Möglichkeit wäre es, mit nem ganz normalen Query zu arbeiten (alle Einträge lesen) und dann mit ner If-Abfrage und nem explode Befehl schauen, ob der IP-Bereich der richtige ist. Das ist aber bei größeren Tabellen sehr rechenintensiv, wie ich glaube.
- Zweite Möglichkeit wäre, die Einträge direkt im MySQL-Query rauszufiltern. Nur weiß ich da leider nicht, was ich im "WHERE"-Teil angeben soll. Ich müsste ja auch eine Art explode Befehl ausführen um zu schauen ob der IP-Bereich der gleiche ist (also es geht nur um den dritten IP-Teil, siehe Beispiel). Wie diese Befehle bei MySQL genau aussehen, weiß ich allerdings nicht.



Welche Idee haltet Ihr für die beste? Falls es die zweite Ausgabevariante sein soll, bitte ich um Beispiele wie ich die MySQL-Befehle nutzen muss.


Gruß,
CaptainCat
k-to-the-laus(topher)

RANG Master of Luck

#2 - 11.06 19:19

In der Datenbank nicht die IP sondern den Wert von der PHP Funktion ip2long speichern. Lässt sich mit nem kleinen Skript recht flott umwandeln...

Dann machst du deine Abfrage so:

PHP-code:
<?php 
//$_POST['ip'] = "32" --> Also dein IP Bereich, der eingegeben wurde

 
$ip "192.168." $_POST['ip']; // Den vorderen Teil an die IP klatschen

 
$ip_start ip2long($ip ".0");
 
$ip_end ip2long($ip ".255");

  
//Somit haben wir die ganze IP Range in deinem Subnetz abgedeckt

  
$query sprintf("SELECT * FROM ip_tabelle WHERE ipaddress BETWEEN %u AND %u;"$ip_start$ip_end);

 
// ... Hier dann der Rest
 // Die IP aus der Datenbank kann man dann mit long2ip($db_result_feld)
 // wieder in die IP Adresse zurückwandeln

 
?>
CaptainCat™

RANG Lord of Clanintern

#3 - 11.06 19:55

Und wie sollte ich das am besten mit dem DropDown-Menü machen? Einmal auslesen oder ne neue Tabelle ?

Ach ja, noch was: Die IP-Adressen sind bereits alle gespeichert, und zwar als IP IP-Adresse als solche glaub ich... muss morgen vormittag noch mal schauen.

Aber danke schonmal für den Vorschlag.