Toon posts:

klein php vraagje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi!

Ik heb een geboortedatum, bv 91281, in een gewone variabele staan. Die wil ik omzetten naar naar 91281004. Hoe kan ik dat doen?

Ik ben niet zo handig met getalletjes, dus ik hoop dat iemand me dit kan vertellen...

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

91281?? Wat zou dat moeten voorstellen dan? 9 december 1981??.. EN wat wordt er met die 004 bedoeld? Lees trouwens ook ff de PW quickstart door.. Vooral het stuk over duidelijke vraagstelling en duidelijke topictitel.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58

https://fgheysels.github.io/


Verwijderd

Topicstarter
Janoz schreef op 24 september 2002 @ 14:57:
91281?? Wat zou dat moeten voorstellen dan? 9 december 1981??.. EN wat wordt er met die 004 bedoeld?
Klopt. Je geboortedatum wordt een uniek id van 8 cijfers. Dus als er meer mensen op die dag jarig zijn dan moet je het getal kunnen ophogen naar bv 91281005

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 28-08 12:00

Janoz

Moderator Devschuur®

!litemod

owh, dat wordt dan nog spannend met de mensen die op 10 december geboren zijn, of mensen die deze eeuw geboren zijn. (of maakt het niet uit dat mensen uit 2001 in hetzelfde lijstje komen als 1901)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • whoami
  • Registratie: December 2000
  • Laatst online: 19:58
Verwijderd schreef op 24 september 2002 @ 14:59:
[...]


Klopt. Je geboortedatum wordt een uniek id van 8 cijfers. Dus als er meer mensen op die dag jarig zijn dan moet je het getal kunnen ophogen naar bv 91281005


Waarom wil je in godsnaam de geboortedatum uniek maken? Een niet uniek veld uniek willen maken is imho om problemen vragen.

https://fgheysels.github.io/


Verwijderd

daarom is het misschien handiger om het zo te doen:

jjjjmmdd001, bijvoorbeeld 20020924001,

ook handig als je nog eens moet sorteren!

Verwijderd

Topicstarter
Janoz schreef op 24 september 2002 @ 15:02:
owh, dat wordt dan nog spannend met de mensen die op 10 december geboren zijn, of mensen die deze eeuw geboren zijn. (of maakt het niet uit dat mensen uit 2001 in hetzelfde lijstje komen als 1901)
Nee inderdaad, maakt niet echt uit. Sorry, heb deze methode niet bedacht hoor. Ik moet me ook maar aanpassen aan het bestaande systeem en die werkt nu eenmaal met deze id's.

Verwijderd

Topicstarter
Verwijderd schreef op 24 september 2002 @ 15:05:
daarom is het misschien handiger om het zo te doen:

jjjjmmdd001, bijvoorbeeld 20020924001,

ook handig als je nog eens moet sorteren!
Je hebt gelijk. Maar 't gaat nu eenmaal ff niet anders...

Verwijderd

Topicstarter
whoami schreef op 24 september 2002 @ 15:04:

[...]


Waarom wil je in godsnaam de geboortedatum uniek maken? Een niet uniek veld uniek willen maken is imho om problemen vragen.
Wat ik al zeg. Ik heb 't niet bedacht, moet me ook maar aanpassen...
Maar ik kan me niet voorstellen dat dit erg ingewikkeld moet zijn, zit al te zoeken maar vind niet echt iets waar ik wat mee kan...

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

en 11181 dan? is dat 11 januari of 1 november?

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Topicstarter
thomaske schreef op 24 september 2002 @ 15:16:
en 11181 dan? is dat 11 januari of 1 november?
Ja stom hé, echt totaal niet over na gedacht. Ik zit er weer mee...
Maar goed, zou op zich voor een id niet zo heel veel uitmaken, dat nummer verwijst naar het complete record. Kun je alsnog de goede geb.datum achterhalen.

Verwijderd

Topicstarter
Het gaat er nu gewoon om dat een uniek id gegenereerd wordt mbv de geboortedatum... Zodra het al bestaat moet er een waarde bij opgelteld worden. Dus als '91281000' als id al bestaat wordt de tweede '91281001'

Het lijkt simpel, maar hoe zet ik de 91281 om naar 91281000?

Verwijderd

Topicstarter
Hmmm m'n vraag is dus niet zo klein als ik dacht....

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

geboortedatum als getal pakken, x1000 doen en testen of de eerste al bestaat totdat je ze gevonden hebt...

Zo moeilijk is dat niet toch?

Verwijderd

Topicstarter
Goed, euhm dat had ik zelf ook nog wel kunnen bedenken.

Okee, noem me maar dom.... |:(

Verwijderd

ACM:
x1000 doen
Je kunt er natuurlijk ook gewoon .'000' achter plakken, PHP let niet zo op variabele-types ;).

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

php let daar wel degelijk op.

Als jij een getal hebt moet je gewoon getal-bewerkingen gaan doen en niet van die onzin uithalen dat je er string-conversies op uitvoert...
Ga voor de grap es testen hoeveel verschil in tijd het is :)
PHP:
1
2
3
4
5
$getal = 1000;
$getal = $getal  * 1000;
// vs
$getal  = 1000;
$getal = $getal . '000';

En aangezien ik zoveel mogelijk "algemeen geldende oplossingen" probeer aan te dragen is de x1000 oplossing altijd beter imho ;)

Verwijderd

hee dat systeem komt mij erg bekend voor,
zo werkt het leerling nr systeem van titus college ook :)

mijn geboorte datum = 19 09 85
mijn leerling nr = 190985005 dus met 005 er achter...

Verwijderd

ACM:
Ga voor de grap es testen hoeveel verschil in tijd het is
Ongeveer -2E-005 seconden :). '000' erachter plakken is dus sneller met onderstaande code:

PHP:
1
2
3
4
5
6
7
8
9
10
11
$time = microtime();
$getal = 1000;
$getal = $getal  * 1000;
echo microtime() - $time;

echo '<br />';

$time = microtime();
$getal  = 1000;
$getal = $getal . '000';
echo microtime() - $time;



ACM:
Als jij een getal hebt moet je gewoon getal-bewerkingen gaan doen en niet van die onzin uithalen dat je er string-conversies op uitvoert...

Wie zegt dat die variabele een integer/double/whatever was? Die variabele had net zo goed een string kunnen zijn, als 'ie bv. via een form binnen is gekomen.

Verwijderd

Topicstarter
Verwijderd schreef op 24 september 2002 @ 18:27:
hee dat systeem komt mij erg bekend voor,
zo werkt het leerling nr systeem van titus college ook :)

mijn geboorte datum = 19 09 85
mijn leerling nr = 190985005 dus met 005 er achter...
Klopt, is geloof ik ook onderdeel van A12 hé...

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 14-07 14:28

thomaske

» » » » » »

Hmm.. je gebruikt microtime() niet helemaal zoals het hoort, plus een test zegt altijd wat meer wanneer je de testcase wat vaker dan 1 keer uitvoert..

bij mij komt er namelijk wel degelijk een significant verschil uit! gewone rekenfuncties (x 1000) is namelijk 65% sneller dan de string-aanelkaarplak-functie :)

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Verwijderd schreef op 24 september 2002 @ 21:36:
[...]


Klopt, is geloof ik ook onderdeel van A12 hé...
en jij mag zeker een of andere rot opdracht doen voor het tce :+

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

Verwijderd schreef op 24 september 2002 @ 20:22:
ACM:
Ga voor de grap es testen hoeveel verschil in tijd het is
Ongeveer -2E-005 seconden :). '000' erachter plakken is dus sneller met onderstaande code:
Check mijn test met hier de source
ACM:
Als jij een getal hebt moet je gewoon getal-bewerkingen gaan doen en niet van die onzin uithalen dat je er string-conversies op uitvoert...

Wie zegt dat die variabele een integer/double/whatever was? Die variabele had net zo goed een string kunnen zijn, als 'ie bv. via een form binnen is gekomen.

Als het een string was bij binnenkomst is het wellicht handiger er 000 achter te plakken, neemt niet weg dat dat gewoon een vieze oplossing is :P
Als je het als getallen moet beschouwen moet je het imho ook zoveel mogelijk als getal bewerken.
Over het algemeen is dat namelijk gewoon sneller.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
ACM schreef op 24 september 2002 @ 22:34:
Als het een string was bij binnenkomst is het wellicht handiger er 000 achter te plakken, neemt niet weg dat dat gewoon een vieze oplossing is :P
Tjah, ik zou het pas vies noemen als je zeker weet dat het een integer is die evt via een string binnenkomt. Men kan wel 'henkpiet10' invoeren, waarna een multiply met 1000 een onzinnig iets wordt. Nu vind ik de methode eigenlijk gewoon ronduit slecht omdat ie niet controleerd of het een number is. Maarja dat is mijn 'strongtyped ervaring'
Als je het als getallen moet beschouwen moet je het imho ook zoveel mogelijk als getal bewerken.
Over het algemeen is dat namelijk gewoon sneller.
Sowieso lijkt me dat sneller. Een bit shift tegenover een string handeling (waarsch een arraycopy) lijkt me voordeliger :)
Pagina: 1