Avatar billede kgp43 Nybegynder
13. marts 2005 - 01:47 Der er 12 kommentarer og
1 løsning

ret i db

Hejsa,

Jeg har lavet en brøler.
Har ca 5-600 tal i en af mine tabeller, men de er ikke i det korrekte "format". Tallede skal have 4-cifre, men tal under 1000 er ikke i dette format. Ex

Skal være: "0086"
Er: "86"

Skal være "0986"
Er: "986"

Skal være "0007"
Er: "7"

etc...

Hvordan retter jeg dette?
Avatar billede Slettet bruger
13. marts 2005 - 01:55 #1
Hvilken datatype er dette felt i din database?

Du kan ændre feltets datatype vha "ALTER TABLE". Måske kan det fjerne de foranstillede nuller.

--
pacroon
Avatar billede kgp43 Nybegynder
13. marts 2005 - 01:58 #2
datatype var "bigint" hvilket fjernede nullerne.
Problemet er at nullerne skal være der. Har ændret formatet til varchar
Avatar billede Slettet bruger
13. marts 2005 - 02:06 #3
Oh, på de måde.

Måske kan du lave et php script der gennemgår dine rækker og sætter et, to eller tre nuller på, alt efter hvor mange cifre der er - det burde ikke være svært at lave.
Avatar billede kgp43 Nybegynder
13. marts 2005 - 02:09 #4
har tænkt på at tilfæje X nuller alt efter hvor stor værdien er, men det er ikke alle tal der har denne "fejl". Ville være rart hvis det var muligt at kører sriptet på antal cifre, som du nævner.

ved dog ikke hvordan dette kan gøres.
Avatar billede Slettet bruger
13. marts 2005 - 02:21 #5
Kan tal højest være fire cifre?
Avatar billede Slettet bruger
13. marts 2005 - 02:32 #6
Så kunne det her gøre det.

<?php
/*
Din mysql funktion der henter et tal i et whileloop indsættes her
*/
$tal = $row['tal'];

if ($tal < 9) {
    $tal = "0".$tal;
    // UPDATE tabel SET 'tal' = $tal;
} elseif ($tal < 99) {
    // UPDATE tabel SET 'tal' = $tal;
} elseif ($tal < 999) {
    // UPDATE tabel SET 'tal' = $tal;
}
?>

--
pacroon
Avatar billede Slettet bruger
13. marts 2005 - 02:33 #7
Hov, det prøver jeg lige igen :)

<?php
/*
Din mysql funktion der henter et tal i et whileloop indsættes her
*/
$tal = $row['tal'];

if ($tal < 9) {
    $tal = "000".$tal;
    // UPDATE tabel SET 'tal' = $tal;
} elseif ($tal < 99) {
    $tal = "00".$tal;
    // UPDATE tabel SET 'tal' = $tal;
} elseif ($tal < 999) {
    $tal = "0".$tal;
    // UPDATE tabel SET 'tal' = $tal;
}
?>
Avatar billede kgp43 Nybegynder
13. marts 2005 - 02:35 #8
Vil det også virke, ved de tal der allerede er blever rettet? Vil de ikke få tilføjet for mange nuller?
Avatar billede kgp43 Nybegynder
13. marts 2005 - 02:36 #9
Kommentar: pacroon_
13/03-2005 02:21:55 Kan tal højest være fire cifre?

- Nej, der er også tal der er +1000
Avatar billede blackscorpion Nybegynder
13. marts 2005 - 04:25 #10
så vidt jeg ved, så tæller 0588 som 588, ergo er den under 999 og får smidt et ekstra nul på...

du skal nok ud i at alle tal under 10, skal have fjernet de første 3 cifre, hvis de findes, og under 100, er det de første 2, og under 1000 er det det første.

Og desuden er der en fejl i den kode, $tal < 9 = alle tal UNDER 9, dvs, 9 bliver ikke talt med.

Bare lige en info. :D
Avatar billede detox Nybegynder
13. marts 2005 - 09:27 #11
Du kan osse benytte str_pad(), som er lavet til formålet:

$tal = str_pad($tal, 4, '0', STR_PAD_LEFT);
Avatar billede coderdk Praktikant
13. marts 2005 - 09:55 #12
$tal = sprintf( '%04d', $tal );
Avatar billede kgp43 Nybegynder
16. marts 2005 - 23:14 #13
Virker perfekt coderdk
takker for hjælpen.
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