Avatar billede nemlig Professor
08. marts 2009 - 12:22 Der er 9 kommentarer og
1 løsning

Hjælp til at sætte et semikolon efter 2 tegn

Hejsa.
Jeg har en Mysql-tabel, hvor jeg har et klokke-felt.
Indholdet i feltet kan fx. være "1200" eller "12:00".

Hvis der kun er 4 tegn i feltet/variablen, skal der sættes et semikolon efter de 2 første tegn.

Jeg har styr på at hente og aflevere i SQL - det er mere if-sætningen, hvor jeg tjekker antal tegn, og hvis 4 tegn, så sæt et semikolon.
Avatar billede challenge Praktikant
08. marts 2009 - 12:46 #1
Tæl længden af din stringvariabel:
http://dk.php.net/strlen

Brug "explod" til at seperere stiringvariablen:
http://dk2.php.net/manual/en/function.explode.php

- sæt derefter det hele sammen igen

$myCount = strlen($myTime);

if( $myCount == 4 )
{
    $explode = explode("", $myTime);

    $time = $explode[0] . $explode[1] . ";" . $explode[2] . $explode[3];
}
Avatar billede showsource Seniormester
08. marts 2009 - 13:59 #2
Hvad med at opdatere din tabel, og derefter sørge for det altid er i samme format der gemmes ?
Avatar billede nemlig Professor
08. marts 2009 - 14:01 #3
Challenge: Tak for bidraget. Send venligst et svar.

Showsource: Det er lige præcis det, jeg er i gang med. :)
Avatar billede coderdk Praktikant
08. marts 2009 - 14:15 #4
UDPATE dintabel SET tid = CONCAT(LEFT(tid,2),':',RIGHT(tid,2))

?
Avatar billede coderdk Praktikant
08. marts 2009 - 14:16 #5
Ok, jeg nærlæste vist ikke ;P
Avatar billede nemlig Professor
08. marts 2009 - 14:52 #6
hmmm - det driller.
Der bliver ikke smidt noget i arrayet. Jeg får fejlen:
Warning: explode() [function.explode]: Empty delimiter on linie 20

Jeg har skrevet følgende:
    $explode = explode("", $row['fra_kl']);
    echo "Indhold:".$row['fra_kl']."<br>";
    $kl_fra = $explode[0] . $explode[1] . ":" . $explode[2] . $explode[3];

Og indholdet af $row['fra_kl'] vises korrekt.

Koden kører i en løkke, idet jeg tjekker alle poster i tabellen.
Avatar billede jakobdo Ekspert
08. marts 2009 - 17:40 #7
Du kan bare lave:
$tid = $row['fra_kl'];
$kl_fra = $tid [0] . $tid [1] . ":" . $tid [2] . $tid [3];
Avatar billede coderdk Praktikant
08. marts 2009 - 23:44 #8
Alternativt kan du gøre det i din SELECT:

SELECT fra_tid, CONCAT(LEFT(fra_tid,2),':',RIGHT(fra_tid,2)) AS fra_tid2 FROM din_tabel

så ligger den "korrekte" i $row['fra_tid2'] :)
Avatar billede nemlig Professor
09. marts 2009 - 08:34 #9
Coderdk: Tak for bidraget. Det vil jeg gemme til en anden god gang. Jakobdo's forslag løste det for mig, men dit forslag er faktisk hurtigere og nemmere.
Avatar billede jakobdo Ekspert
09. marts 2009 - 20:28 #10
Takker for point.
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