[MYSQL/PHP] Getallen met meerdere punten

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • FreeShooter
  • Registratie: Augustus 2005
  • Laatst online: 18:16
Ik heb met wat vrienden een klein racespelletje gevonden, wat we graag tegen elkaar willen spelen. Toen kwamen we op het idee om scores te registreren, dus de beste manier leek mij om even 'snel' een php scriptje te maken.

Zo gezegd zo gedaan, maar ik krijg het niet voor elkaar om met PHP in een MYSQL database een tijd op te slaan inclusief milliseconden. In de "MM:SS:XX" opmaak. Minuten:seconden:milliseconden

Ik dacht zelf aan Time, maar dat is in uren, minuten en seconden dus dat werkt niet. Ook met puur tekst kan ik op 1 of andere manier niet meer dan 1 punt invoegen. Als ik 1.25 doe werkt het, doe ik 1.26.10 werkt het niet meer.

Iemand een oplossing?

Acties:
  • 0 Henk 'm!

  • Snake
  • Registratie: Juli 2005
  • Laatst online: 07-03-2024

Snake

Los Angeles, CA, USA

Als je de afspraak maakt het formaat 00:00:00:00 te respecteren, kan je toch evengoed de punten ertussenuit halen?

Going for adventure, lots of sun and a convertible! | GMT-8


Acties:
  • 0 Henk 'm!

  • pat42
  • Registratie: Maart 2006
  • Niet online

pat42

» lurkt

En gewoon microtime gebruiken in je database is geen oplossing (zie voorbeeld 1 2)?

[ Voor 3% gewijzigd door pat42 op 01-10-2008 19:34 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Ik zou niet met strings of iets dergelijke gaan werken. Ik denk dat je de tijd het beste kan omrekeken naar ms en dat als integer vervolgens opslaan in je database.

Acties:
  • 0 Henk 'm!

  • Niekk
  • Registratie: September 2007
  • Laatst online: 12-04-2021

Niekk

Human-readable is relatief

of gewoon een TIME veld, en een 2e veld (een integer) waar je de millisecs in op slaat?

Acties:
  • 0 Henk 'm!

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 16:10
Of 3 kolommen, waarbij je dus je waardes verdeeld over 3 kolommen. Dat zou je met sql ook wel weer samen kunnen voegen.

Hail to the king baby!


Acties:
  • 0 Henk 'm!

  • Niekk
  • Registratie: September 2007
  • Laatst online: 12-04-2021

Niekk

Human-readable is relatief

urk_forever schreef op woensdag 01 oktober 2008 @ 20:13:
Of 3 kolommen, waarbij je dus je waardes verdeeld over 3 kolommen. Dat zou je met sql ook wel weer samen kunnen voegen.
SQL kan ook samenvoegen met 2 kolommen.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Of DECIMAL voor het aantal seconden, met 3 cijfers achter de komma. Simpel en precies de benodigde nauwkeurigheid. :)

{signature}


Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Je kan het toch gewoon noteren als uren, minuten en seconden?
En dan vervolgens in je overzicht er minuten seconden en milliseconden van maken?
Is wel een beetje scheef gebruik natuurlijk, maar werkt denk ik wel.

Wat je anders misschien ook kan doen, is de boel opslaan als een simpele integer. Als iemand bijvoorbeeld 1 minuut, 35 seconden en 405 milliseconden erover heeft gedaan, kan je dat toch noteren als 135405? :) En dan (vanaf de rechterkant gezien) uiteindelijk opsplitsen? :)

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Er zijn meerdere manieren, maar op een dergelijke manier een int uit elkaar trekken is echt op alle punten inferieur aan een decimal type. Je krijgt problemen met max. waardes, icm gaten kan de opslag efficienter en ivm diezelfde gaten is voorgestelde notatie verre van intuitief. Als het perse 1 geheel nummer moet zijn, doe dan gewoon een aantal milliseconden. :)

[ Voor 14% gewijzigd door Voutloos op 01-10-2008 21:01 ]

{signature}


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
GJtje schreef op woensdag 01 oktober 2008 @ 20:46:
Je kan het toch gewoon noteren als uren, minuten en seconden?
En dan vervolgens in je overzicht er minuten seconden en milliseconden van maken?
Is wel een beetje scheef gebruik natuurlijk, maar werkt denk ik wel.
Dan heb je maar 60 milliseconden ;)
GJtje schreef op woensdag 01 oktober 2008 @ 20:46:
Wat je anders misschien ook kan doen, is de boel opslaan als een simpele integer. Als iemand bijvoorbeeld 1 minuut, 35 seconden en 405 milliseconden erover heeft gedaan, kan je dat toch noteren als 135405? :) En dan (vanaf de rechterkant gezien) uiteindelijk opsplitsen? :)
:X
Of je slaat gewoon 1*60000 + 35000 + 405 = 95405 op ;) Dat scheelt ranzige stringbewerkingen op een int loslaten later :Y)

[ Voor 42% gewijzigd door RobIII op 01-10-2008 21:14 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • FreeShooter
  • Registratie: Augustus 2005
  • Laatst online: 18:16
Foutje in de query blijkt dus.

Dit had ik,

code:
1
SET $naam_update = $tijd


Dit moet het zijn, anders pakt hij schijnbaar tekens niet goed.

code:
1
$query_update_tijden = "UPDATE $tabelnaam_update SET $naam_update = '".$tijd."'";


Sla het nu gewoon als tekst op. :)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Lekker makkelijk sorteren en queryen :Y)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 20:47

BCC

RobIII schreef op woensdag 01 oktober 2008 @ 21:12:
Of je slaat gewoon 1*60000 + 35000 + 405 = 95405 op ;) Dat scheelt ranzige stringbewerkingen op een int loslaten later :Y)
Dat is inderdaad het enige juiste antwoord :) Net zoals je geld bedragen altijd als centen in je db wil opslaan.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

RobIII schreef op woensdag 01 oktober 2008 @ 23:06:
[...]

Lekker makkelijk sorteren en queryen :Y)
Tot iemand erachter komt dat ie alleen maar een uur en 40 minuten ergens over hoeft te doen om beter te eindigen dan mensen die er tussen de 10 en 100 minuten over doen. Niet bepaald waarschijnlijk bij een racespel, maar geen excuus om geformatteerde data in je database op te slaan op een manier die niet rekenkundig benaderbaar is (wat als je het gemiddelde van iemand's races wil ophalen?).

Deze data hoort gewoon in een integer veld als millisecondes opgeslagen te worden.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • Gomez12
  • Registratie: Maart 2001
  • Laatst online: 17-10-2023
Uberhaupt lekker met rekenen, hoeveel tijdsverschil zit er tussen nr 1 en 2?

Gebruik of in het uiterste geval een int of gewoon een time datatype.

In wezen is alles op te slaan als tekst, maar die andere datatypes zijn er over het algemeen met reden bijgekomen...

Acties:
  • 0 Henk 'm!

Verwijderd

curry684 schreef op woensdag 01 oktober 2008 @ 23:12:
[...]

Tot iemand erachter komt dat ie alleen maar een uur en 40 minuten ergens over hoeft te doen om beter te eindigen dan mensen die er tussen de 10 en 100 minuten over doen. Niet bepaald waarschijnlijk bij een racespel, maar geen excuus om geformatteerde data in je database op te slaan op een manier die niet rekenkundig benaderbaar is (wat als je het gemiddelde van iemand's races wil ophalen?).

Deze data hoort gewoon in een integer veld als millisecondes opgeslagen te worden.
Ik denk dat RobIII lichtelijk sarcastisch was ;)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

RobIII schreef op woensdag 01 oktober 2008 @ 21:12:
[GJtje: 1 minuut, 35 seconden en 405 milliseconden als 135405]
:X
Of je slaat gewoon 1*60000 + 35000 + 405 = 95405 op ;) Dat scheelt ranzige stringbewerkingen op een int loslaten later :Y)
Je bent wel heel dom als je daar ranzige stringbewerkingen voor gaat gebruiken.

1 * 100000 + 35 * 1000 + 405

andersom:
ms = getal % 1000
s = (getal / 1000) % 100
m = getal / 100000

Verder ben ik het er uiteraar mee eens dat opslaan in een vaste tijdseenheid (be it ms of s of in Planck time voor mijn part) de voorkeur geniet :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Patriot
  • Registratie: December 2004
  • Laatst online: 19:24

Patriot

Fulltime #whatpulsert

.oisyn schreef op donderdag 02 oktober 2008 @ 00:03:
[...]

Je bent wel heel dom als je daar ranzige stringbewerkingen voor gaat gebruiken.

1 * 100000 + 35 * 1000 + 405

andersom:
ms = getal % 1000
s = (getal / 1000) % 100
m = getal / 100000

Verder ben ik het er uiteraar mee eens dat opslaan in een vaste tijdseenheid (be it ms of s of in Planck time voor mijn part) de voorkeur geniet :)
Euh? Dat is toch ook wat Roblll zegt, maar dan zonder uitwerking? GJtje's voorbeeld zou juist resulteren in het uitvoeren van stringbewerkingen op en integer, dat is wat Roblll bedoelde.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zow, word ik lekker effe verkeerd begrepen vandaag zeg :X En dan ook nog eens door 2 mensen die toch beter moeten weten die me zelfs persoonlijk kennen :'(
Ik was inderdaad sarcastisch, en met "op een int" bedoelde ik inderdaad op een string die ooit een int was :Y) Ints zijn zo lastig te bewerken met stringbewerkingen ;)
Patriot schreef op donderdag 02 oktober 2008 @ 00:15:
Euh? Dat is toch ook wat Roblll zegt, maar dan zonder uitwerking?
Niet helemaal; het verschil zit 'm in de rekenwijze ;)

[ Voor 58% gewijzigd door RobIII op 02-10-2008 00:42 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Patriot schreef op donderdag 02 oktober 2008 @ 00:15:
[...]


Euh? Dat is toch ook wat Roblll zegt
Nee, Rob III zegt opslaan in ms. GJtje zegt opslaan als "mmssxxx". Het grote verschil is dat Rob III minuten vermenigvuldigd met 60000 ms, terwijl GJtje vermenigvuldigd met 100000. Bovendien zegt Rob III dat voor GJtjes methode stringbewerkingen nodig zijn. Onzin natuurlijk, en dáár reageerde ik op.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
.oisyn schreef op donderdag 02 oktober 2008 @ 00:42:
[...]

Nee, Rob III zegt opslaan in ms. GJtje zegt opslaan als "mmssxxx". Het grote verschil is dat Rob III minuten vermenigvuldigd met 60000 ms, terwijl GJtje vermenigvuldigd met 100000. Bovendien zegt Rob III dat voor GJtjes methode stringbewerkingen nodig zijn. Onzin natuurlijk, en dáár reageerde ik op.
Rekenen met jouw die methode is alleen wat lastiger als je tijdsverschillen wil uitrekenen ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mijn methode?

*kuch*
.oisyn schreef op donderdag 02 oktober 2008 @ 00:03:
Verder ben ik het er uiteraar mee eens dat opslaan in een vaste tijdseenheid (be it ms of s of in Planck time voor mijn part) de voorkeur geniet :)
:Y)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Excuses, niet 'jouw' methode, maar 'die' methode. Ik bedoelde de methode die jij uitgewerkt had, niet dat ik zoiets aan jou zou toeschrijven ;) :> Het is gecorrigeerd.

[ Voor 3% gewijzigd door RobIII op 02-10-2008 00:46 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1