Avatar billede iphase Nybegynder
07. august 2003 - 13:37 Der er 14 kommentarer og
1 løsning

padde en sting med 0'er

Hej eksperter

Jeg har følgende insert som bliver udført når nogen poster data til siden.

if(isset($_GET[insert]) && !empty($_POST[ip]) && !empty($_POST[maskine]) && isset($_SESSION[valid])){
    $sql="insert into data (ip, maskine, bruger, purpose, location) VALUES ('$_POST[ip]', '$_POST[maskine]', '$_POST[bruger]', '$_POST[purpose]', '$_POST[location]')";
    $result=mssql_query($sql, $connection) or die ("<SCRIPT LANGUAGE='javascript'>window.location.href='index.php?error=true&edit=true';</SCRIPT>");
}


Mit problem er bare at jeg gerne skulle have ipaddresser indtaststet så de altid fylder 15 chars (eg. 192.168.001.001).

Hvordan får jeg lettetst muligt padde en ip addresse med 0'er hvis brugeren f.eks har skrevet 192.168.1.1, således at der står 192.168.001.001 ?
Avatar billede tipsen Nybegynder
07. august 2003 - 13:47 #1
$iporig = '192.168.1.1';
$ipparts = sscanf($iporig, '%d.%d.%d.%d');
print_r($ipparts);
$ipnew = sprintf('%03d.%03d.%03d.%03d', $ipparts[0], $ipparts[1], $ipparts[2], $ipparts[3]);
Avatar billede erikjacobsen Ekspert
07. august 2003 - 13:48 #2
Eller

  function pad($s) {
    return sprintf('%03d',$s);
  }

  $ip = "1.22.222.5";
  $a=join('.',array_map('pad',split('\.',$ip)));
  print $a;
Avatar billede detox Nybegynder
07. august 2003 - 13:50 #3
Faktisk bør du omregne til den egentlige ip-værdi, hvilket kan gøres ved hjælp af denne funktion. Du konverterer så bare tilbage med den anden.

<?
function IPAddress2IPNumber($dotted) {
        $dotted = preg_split( "/[.]+/", $dotted);
        $ip = (double) ($dotted[0] * 16777216) + ($dotted[1] * 65536) + ($dotted[2] * 256) + ($dotted[3]);
        return $ip;
}
function IPNumber2IPAddress($number) {
        $a = ($number / 16777216) % 256;
        $b = ($number / 65536) % 256;
        $c = ($number / 256) % 256;
        $d = ($number) % 256;
        $dotted = $a.".".$b.".".$c.".".$d;
        return $dotted;
}
$ex = '192.168.1.1';
echo IPAddress2IPNumber($ex);
?>
Avatar billede detox Nybegynder
07. august 2003 - 13:52 #4
Det giver i hvert fald nogle store fordele, hvis du har brug ip-adressen i nogen former for kriterier i dine forespørgsler.
Avatar billede erikjacobsen Ekspert
07. august 2003 - 13:52 #5
Avatar billede tipsen Nybegynder
07. august 2003 - 13:55 #6
Fik forøvrigt den forkerte printsætning med i min udgave:

$iporig = '192.168.1.1';
$ipparts = sscanf($iporig, '%d.%d.%d.%d');
$ipnew = sprintf('%03d.%03d.%03d.%03d', $ipparts[0], $ipparts[1], $ipparts[2], $ipparts[3]);
echo $ipnew;
Avatar billede detox Nybegynder
07. august 2003 - 13:56 #7
erikjacobsen -> Oohh, hvor dejligt. Dem var jeg ikke opmærksom på... c",)
Avatar billede iphase Nybegynder
07. august 2003 - 14:09 #8
Det er jo smukt alt det her, jeg skal ike bruge verdien til noget andet end at kunne søde og sortere på den. så tipsens er fint nok, eller rettere fylder mindst. ;)

Men dit er cool nok detox, det er da noget der er værd at gemme på til en anden gang :)
Avatar billede iphase Nybegynder
07. august 2003 - 14:13 #9
hmm.. det er vildt så mange funktioner man ikek lige kender i php, så jeg tænkte lige jeg ville printe manualen ud som godnat læsning.. er i klar over at lorter lige brugte 2kasser a4 papir! og det var i duplex mode. godt man har en voldsom hurtig printer siger jeg bare! ;)
Nu skal det bare lige i bog binder maskinen og så er jeg ellers klar til at sove *gg*
Avatar billede detox Nybegynder
07. august 2003 - 14:14 #10
Konverteringen blev jo så betydeligt nemmere, med de to funktioner erikjacobsen gjorde opmærksom på.

<?
$ex = '192.168.1.1';
$ny = sprintf("%u",ip2long($ex));
echo $ny . "<br />";
$gl = long2ip($ny);
echo $gl;
?>
Avatar billede detox Nybegynder
07. august 2003 - 14:16 #11
Ja, så er der godnat læsning til de søvnløse. (Hmm, overvældende - 2 kasser!)
Avatar billede iphase Nybegynder
07. august 2003 - 14:16 #12
hehe, ja det må man jo give dig ret i ;)
Avatar billede iphase Nybegynder
07. august 2003 - 14:18 #13
Ja det var lidt vildt med de 2 kasser, og det var altså pdf versionen jeg printede, og ikke den med alle kommentarene i. (det vil jeg SLET ikke vide hvad fylder ;)
Avatar billede tipsen Nybegynder
07. august 2003 - 14:23 #14
iphase: Det kan varmt anbefales som godnatlæsning - jeg har selv læst en stor del af den da jeg startede med php - det giver et kanonoverblik og selvom man ikke kan huske alle funktionerne specifikt, kan man nok huske noget i retning "der var da vist nok en funktion der kunne det og det..."
Avatar billede iphase Nybegynder
07. august 2003 - 14:36 #15
Det er også det jeg håber at få ud af det i det mindste. har jo kun koded php i knapt et år, men kun stille og roligt her på arb. er bare lærling, så det er ikke de vilde ting jeg bliver sat til, især fordi ingen andre her kan finde ud af php, lidt sørgeligt når det er meningen at man skal lære noget af sine overordnede som lærling. :/

Men er heldigvis færdig og har svendebrev om nogle måneder, det var så 5 år af mit liv der gik der.. Så kan jeg pænt sige op og skride til udlandet og arbejde.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester