kostenloser Webspace werbefrei: lima-city


Select-Query will nicht

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    mauzen

    mauzen hat kostenlosen Webspace.

    Hi
    Heut ist mein erster richtiger Tag mit PHP und MySQL, weil ich einem Freund bei einer Homepage helfen will. Daher hab ich von PHP so gut wie keine Ahnung, also entschuldige ich mich jetzt schonmal im vorraus, es ist wahrscheinlich ein richtig billiger Fehler ;)

    <?php
    function IPtoCountry($IP) {
    $IPint = sprintf(\"%u\", ip2long($ip));
    
    mysql_connect(\"mysql.lima-city.de\", \"***\", \"***\");
    mysql_select_db(\"datenbank\");
    $query = \"SELECT * FROM IPtoCountry \".
    \"WHERE IP_from <= $IPint \".
    \"AND IP_to >= $IPint \";
    $result = mysql_query($query);
    
    if(mysql_num_rows($result) == 0) {
    $land = \"Unbekannt\";
    } else {
    $array=mysql_fetch_array($result);
    $land = $array[\'drei\'];
    }
    
    return $land;
    } 
    ?>


    Das Skript oben soll für eine IP-Adresse mithilfe einer Datenbank von webhosting.info das zugeörige Land bestimmen.
    Im Ansatz funktioniert es schon mal, die Query liefert eine Reihe, von der unten auch die einzelnen Teile ausgelesen werden können.
    Aber das Problem ist, es gibt nicht die korrekte Zeile zurück, sondern die allerletzte Zeile in der Tabelle.
    Und wenn ich das SELECT... Zeug direkt als SQL-Befehl in phpMyAdmin eingebe, natürlich mit $IPint ersetzt, gibt es die richtige Zeile zurück.

    Hab mir zwei Tutorials zu diesem Thema angeguckt und ausprobiert, aber keins hat mir weitergeholfen.


    Schonmal danke für Hilfe und Ideen.

    Gruß
    Mauzen


    Beitrag geändert: 1.7.2008 16:31:50 von mauzen
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. m******s

    Hm, wäre vielleicht hilfreich mal die Tabellenstruktur zu sehen... aber zumindest von dem, was da steht sieht alles korrekt aus...
  4. Erstmal: Du solltest bei einer MYSQL Abfrage die Werte immer in Hochkommata setzten, sowie nicht die PHP Variable direkt reinschreiben:
    $query = \"SELECT * FROM IPtoCountry WHERE IP_from <= \'\".$IPint.\"\' AND IP_to >= \'\".$IPint.\"\';\";



    Beitrag geändert: 1.7.2008 18:14:31 von prog
  5. Autor dieses Themas

    mauzen

    mauzen hat kostenlosen Webspace.

    Also die Tabelle sieht so aus:

    Typ Kollation Attribute
    IP_from, double,
    IP_to, double,
    zwei, char(2), latin1_swedish_ci
    drei, char(3), latin1_swedish_ci
    name, varchar(50), latin1_swedish_ci


    Importiert habe ich sie aus so einer .csv (ist einfacher reinzuschreiben, wie der Tabelleninhalt ;))

    \"100663296\",\"121195295\",\"US\",\"USA\",\"UNITED STATES\"
    \"121195296\",\"121195327\",\"IT\",\"ITA\",\"ITALY\"
    \"121195328\",\"152305663\",\"US\",\"USA\",\"UNITED STATES\"
    \"152305664\",\"152338431\",\"GB\",\"GBR\",\"UNITED KINGDOM\"
    \"152338432\",\"167772159\",\"US\",\"USA\",\"UNITED STATES\"
    \"184549376\",\"201620303\",\"US\",\"USA\",\"UNITED STATES\"
    ...

    Insgesamt hat sie etwa 80.000 Zeilen bei 3mb Größe

    Edit: @prog: passt doch, es wird geprüft, ob $IPint zwischen dem minimalen und dem maximalen Grenzwert liegt. Oder wie meinst du das?


    Beitrag geändert: 1.7.2008 18:14:07 von mauzen
  6. Autor dieses Themas

    mauzen

    mauzen hat kostenlosen Webspace.

    Ich wusste doch, dass es ein doofer Fehler ist :biggrin:
    Und zwar so doof, dass man gar nicht drauf achtet.

    In Zeile 3 übergebe ich \"$ip\", habe aber \"$IP\", ist mir nur ganz durch Zufall aufgefallen, jetzt funktioniert alles wie es soll^^

    Trotzdem danke für eure Hilfe

    Mauzen
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!