Door
Ronald Vos
op 21-04-2024 10:01
gewijzigd op 21-04-2024 10:51
3.595 views
Ik probeer een kleurentabel te maken in stappen van 15, want dan kom je mooi uit op 255.
Ik wil de waarden 0, 15,30...255 in een dropdown-list. Hoe krijg ik dat voor elkaar?
Ik heb zoiets geschreven als
@ozzie PHP:
zie mijn eerste vraag.
Ik wil een kleurentabel maken met stappen van 15 omdat je dan mooi uitkomt op 255.
Deze veelvouden van 15 wil ik in een dropdown-menu stoppen om de roodwaarde te kiezen.
Dit laatste is mij echter nog niet gelukt.
Ik weet dat deze code lang niet volledig is. Ik weet dat de sluittag voor select er nog niet in staat, maar mijn vraag is:
hoe krijg ik de waarden in het dropdown-menu?
Maak eerst eens het dropdown menu gewoon in html code met daarin slecht 2 opties. Dan hebben we een idee hoe het eruit moet komen te zien, en dan kunnen we daarna de php-code erin zetten.
Nee, omdat het een voorwaarde is, net als bij while().
Verder is je HTML niet correct, het is:
<label for="Roodwaarde">Roodwaarde</label>
Verder heeft $thisfile hier geen waarde:
<form action="$thisfile">
En het is wel handig als je select-element een name-attribuut heeft.
?Onbekende gebruiker
25-04-2024 09:54
gewijzigd op 25-04-2024 10:17
Ronald Vos op 24/04/2024 11:08:47
Er passen precies 13 stappen van 15 in het rijtje van 0 tot en met 255.
Volgens mijn berekening zijn het er 17 en inclusief de "0"-waarde: 18.
255/15=17.
Ja, jouw berekening klopt en de mijne niet.
Ik zocht een creatieve manier en kreeg dit rijtje:
0, 15, 30, 45, 60, 75, 90, 105, 120, 135, 225, 240, 255
Op het eerste gezicht leek het goed, maar tussen 135 en 225 horen natuurlijk nog wat meer stappen van 15. Het onjuiste resultaat is de prijs voor het schenden van het KISS-principe. Het is een voorbeeld geworden van hoe het niet moet.
[size=xsmall]Toevoeging op 25/04/2024 10:02:30:[/size]
Ozzie PHP op 24/04/2024 11:49:57
Hmmm, die getallenstelsels gebruik ik nooit. Snap ook niet helemaal het nut.
@Ad Fundum
Jij gaf deze code:
<?
$per15=[];$n=-10;while($n<111){$per15[]=base_convert($n+=10,15,10);}
foreach($per15 as $rr){print $rr.PHP_EOL;}
?>
Afgezien van dat alleen onderstaande code het juiste resultaat geeft, is het ook duidelijker en minder creatief. Het is het beste voor code in productie. Ik heb met base_convert() ingewikkeld willen doen om het eens over een andere boeg te gooien. Tegelijk heb ik base_convert() voorheen ook te weinig gebruikt om in eerste instantie te zien dat bij de overgang van 90 naar 100 decimaal een significant verschil optreedt.
Maar de variaties op de for-lus zijn verder wel goed.
Al is het wel even wennen om terug gaan
van: for x in (0..255).step_by(15) { // Rust
naar: for ($i=0; $i<=255; $i+=15) { // PHP
Het ging er in ieder geval om dat het ook een optie is om een look-up table te gebruiken wanneer je vaker met hetzelfde rijtje moet werken. Alleen is het met het geval 15 waarschijnlijk nog efficiënter om dat zonder look-up table te doen, omdat het rijtje "xor", "add" en "jne" (assemblerinstructies voor een loop) sneller werkt dan het telkens dereferencen van gegevens uit een array. Maar voor ingewikkelder berekeningen kan het wel helpen.
Maargoed, wat PHP betreft heb ik me er inmiddels bij neergelegd. Ik ben weer bezig met een aantal websites in PHP 8.2. Dat kost (mij) toch minder moeite met PHP dan met Rust.