Sascha: Feld mit "0"-Auffüllen

Mahlzeit :)

gibt es in PHP eine Funktion (die ich dann Übersehen habe) die eine Str-Variable bis zu einer bestimmten Anzahl mit '0' auffüllen kann?

Es ist folgendes, der Benutzer gibt eine Mac-Addy ein z.B. "00:03:CD:AD:43:2A" diese wird dann verifiziert ob es sich hierbei um eine Mac-Add wirklich handelt. Wenn sie 'ok' ist wird sie dann in die DB-geschrieben  und zwar 0003CDAD432A..

nun darf es sein, dass der User die führenden '0' weglässt und mit "3:CD:AD:43:2A" den Eintrag vornimmt... für die Datensortirung ganz schlecht, weil "0003CDAD432A" > "DFE2333" ist.

Achso DB ist MySQL feld 'hardwareaddress' ist vom Typ VARCHAR..

vielen Dank für eure Hilfe

Sascha

  1. gibt es in PHP eine Funktion (die ich dann Übersehen habe) die eine Str-Variable bis zu einer bestimmten Anzahl mit '0' auffüllen kann?

    PHP-Anleitung, Inhalt Kapitel String-Funktionen, (http://www.php.net/manual/de/ref.strings.php):
      "str_pad --  Erweitert einen String auf eine bestimmte Länge unter Verwendung eines anderen Strings"
      "sprintf -- Gibt einen formatierten String zurück"

    Achso DB ist MySQL feld 'hardwareaddress' ist vom Typ VARCHAR..

    Ich möchte meinen, daß die Mac-Adresse eine maximale Größe hat, insofern wäre der Typ VARCHAR hier vollkommen fehl am Platze. Wenn, dann CHAR, ich persönlich würde sogar zu einem numerischen Typ greifen.

    Gruß,
      soenk.e

    1. PHP-Anleitung, Inhalt Kapitel String-Funktionen, (http://www.php.net/manual/de/ref.strings.php):
        "str_pad --  Erweitert einen String auf eine bestimmte Länge unter Verwendung eines anderen Strings"
        "sprintf -- Gibt einen formatierten String zurück"

      Ich möchte meinen, daß die Mac-Adresse eine maximale Größe hat, insofern wäre der Typ VARCHAR hier vollkommen fehl am Platze. Wenn, dann CHAR, ich persönlich würde sogar zu einem numerischen Typ greifen.

      Danke Dir!

      der Datentyp ist auch CHAR... habe mich um eine Zeile versehen ;)

      numerischer Typ wäre auch okay, ich hätte auch kein Problem damit den Hex String in einen Int-Wert zu 'überführen'

      ideal wäre natürlich ein Feld vom Typ Hexadecimal...aber des gibts ja nicht ?!?

      Sascha

      1. Ich möchte meinen, daß die Mac-Adresse eine maximale Größe hat, insofern wäre der Typ VARCHAR hier vollkommen fehl am Platze. Wenn, dann CHAR, ich persönlich würde sogar zu einem numerischen Typ greifen.

        der Datentyp ist auch CHAR... habe mich um eine Zeile versehen ;)

        numerischer Typ wäre auch okay, ich hätte auch kein Problem damit den Hex String in einen Int-Wert zu 'überführen'

        ideal wäre natürlich ein Feld vom Typ Hexadecimal...aber des gibts ja nicht ?!?

        Nein, das macht auch keinen Sinn. Denn egal ob Hex, Dezimal, Oktal, Binär oder bananenbasiert, der zugrundeliegende Zahlenwert ist immer derselbe, lediglich die Darstellung sieht anders aus. Der Computer speichert aber keine Darstellung, sondern den Wert.

        Du brauchst für MySQL Hexwerte übrigens nicht erst umzuschreiben, sie können direkt angegeben werden:

        select 0xa + 1;
          -> 11

        Gruß,
          soenk.e