Script inkorten, nullen toevoegen.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Clownfish

Clownfish

14/10/2008 10:43:00
Quote Anchor link
Hee,

Ik ben bezig met een website voor mensen die aan atletiek doen. Ze kunnen onderandere hun persoonlijke records dan opslaan, dit wordt dan opgeslagen in een database. Een ander script weergeeft de records dan netjes op volgorde van afstand. Om dit te doen moeten de afstanden in deze vorm zijn:
10km = 10000m
100m = 00100m etc

En om te voorkomen dat iedereen de hele tijd al die nullen in moet voeren, wilde ik na het invoeren een script erachter zetten. Hieronder staat hij, neem aan dat $afstand het ingevoerde getal is, en dat dat bijvoorbeeld 10km is. (alles wat ingevoerd is wordt omgezet naar lowercase letters, dus 10KM bestaat niet)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if ($afstand == "10km"){
$afstand = "10000m";
}else if($afstand == "11km"){
$afstand = "11000m";
}else if($afstand == "12km"){
$afstand = "12000m";
}else if($afstand == "13km"){
$afstand = "13000m";
}else if($afstand == "14km"){
$afstand = "14000m";
}else if($afstand == "15km"){
$afstand = "15000m";
}else if($afstand == "16km"){
$afstand = "16000m";
}


Zou dit ook makkelijker/sneller/overzichtelijker/korter kunnen?
Want als ik elke afstand zo moet invoeren wordt het enorm veel werk, en ik denk toch dat het anders zou moeten kunnen.
 
PHP hulp

PHP hulp

23/12/2024 05:02:08
 
Mathijs M

Mathijs M

14/10/2008 11:33:00
Quote Anchor link
ik zou in ieder geval switch gaan gebruiken in plaats van die else if's .
http://nl.php.net/manual/en/control-structures.switch.php

Mathijs
 
Clownfish

Clownfish

14/10/2008 12:29:00
Quote Anchor link
Ohja, dat scheelt inderdaad al iets.Dankje! Maar het is nogsteeds ongeveer even lang, en net zo complex.
Ik zal het even omzetten naar gebruik met switch, maar daarmee kost het mij niet minder werk.

Zijn er nog andere opties? :)
Gewijzigd op 01/01/1970 01:00:00 door Clownfish
 
Joren de Wit

Joren de Wit

14/10/2008 12:38:00
Quote Anchor link
Ik mag hopen dat je de afstanden niet als '10km', '11km', etc. in de database opgeslagen hebt? Dan zou je namelijk goed de fout in gaan...

De afstanden sla je in de database gewoon als getallen (integers) op en de handigste eenheid om daarbij aan te houden is in dit geval waarschijnlijk meters. Op die manier heb je ook geen enkel probleem meer met het sorteren van de records, 100 is immers altijd kleiner dan 10000 en dat snapt de database ook. Die voorloop nullen zijn dan dus ook nergens meer voor nodig...
 
Clownfish

Clownfish

14/10/2008 12:39:00
Quote Anchor link
nouja, het probleem is dat het niet altijd om afstanden gaat maar soms ook om letters. aangezien dit het onderdeel is waar ze aan deelnemen.
Oftewel, ze kunnen ook 'hoogspringen' invoeren.

En als dat kan dan kan ik het niet opslaan in integers. Of zit ik nu fout? :)
 
Joren de Wit

Joren de Wit

14/10/2008 13:15:00
Quote Anchor link
Als het om de titel van een onderdeel gaat, zul je het inderdaad wel als string (varchar) op moeten slaan. Maar uiteraard zal het sorteren dan alfabetisch plaatsvinden en niet numeriek. Maw, 10 zal voor 2 komen: 1km, 10km, 2km, 21km, 3km...

Uiteraard zou je het ook anders kunnen aanpakken en het onderdeel 'hardlopen' noemen en vervolgens in een extra attribuut aangeven om welke afstand het gaat...
 
Clownfish

Clownfish

14/10/2008 13:26:00
Quote Anchor link
Ik weet dat 10 dan voor 2 komt, aangezien de 1 voor de 2 komt. daarom maakte ik van 100m ook 00100m en van 10km 10000m. Zo sorteert hij toch nog goed.
Echter ik wil 1. niet dat bij 00100m die nullen voor de 100 weergeven worden. en 2. niet dat ze die nullen moeten ingeven dus dat je ook gewoon 100m kan invoeren en dat het script er dan 00100m van maakt.

Kan dit? Of moet ik nu gewoon 2 verschillende tabellen in mijn database maken met 1 voor de onderdelen en 1 voor het hardlopen. En die van hardlopen dan in een integer zetten?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.