Script inkorten, nullen toevoegen.
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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";
}
$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.
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
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...
Oftewel, ze kunnen ook 'hoogspringen' invoeren.
En als dat kan dan kan ik het niet opslaan in integers. Of zit ik nu fout? :)
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...
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?