Ga naar inhoud

[PHP] Gedwongen Type Conversie


anoniem

Aanbevolen berichten

Ik heb een eenvoudige PHP-file gemaakt voor een fotoboek voor een website, voor de zoveelste keer, maar nu wil ik het eens netjes doen. Ik wil het fotonummer meerdere keren terug laten komen op de pagina, dus het leek mij dan een goed idee om een variabele aan het begin van de PHP file deze waarde te laten aannemen. Het probleem is dat ik graag bij bijvoorbeeld foto 1 niet "1" maar "001" op het scherm wil laten zien. Bij foto 2 dus "002" en bij foto 32 "032" etc... Ga er vanuit dat er nooit meer dan 999 foto's zullen komen. Je voelt m natuurlijk al aankomen - ik heb dit volgende geprobeerd en dat werkt natuurlijk niet: [code:1:929221f617] if ( $fotonr < 100 ) { if ( $fotonr < 10 ) { $fototitelnr = "00" + $fotonr; } else { $fototitelnr = "0" + $fotonr; } } else { $fototitelnr = $fotonr; } echo $fototitelnr; [/code:1:929221f617] 001 wordt namelijk gewoon 1. Ook als ik de manieren uit mijn PHP boek gebruik (string) of settype($fotonr,"string") lukt het me niet om het gewenste resultaat te krijgen. Ik kan natuurlijk wel telkens op het moment dat ik dit op het scherm moet zetten weer een if-else statement gebruiken en dan echo "0" als dat nodig is, maar dat wordt zo lelijk in de code. Lijkt me leuk als iemand me hiermee kan helpen. Het is vast zeer gemakkelijk. Alvast bedankt.
Link naar reactie
Ik ben een absolute-beginner met PHP, dus ik weet niet of/hoe je de conversie kan onderdrukken. Maar als dat niet gaat is dit toch niet zo lelijk?[code:1:917b522fdf]function ToonNummer() { if ( $fotonr < 100 ) { if ( $fotonr < 10 ) { echo "00", $fotonr; } else { echo "0", $fotonr; } } else { echo $fotonr; } }[/code:1:917b522fdf]Maar het onderdrukken van die gedwongen conversie is eleganter.
Link naar reactie
Ik zal nog even uitleggen waarom de aanvankelijke oplossing niet werkte. Je voerden er namelijk een nummerieke berekening op uit. Stel dat $fotonr = 1, dan krijg je uit de berekening 00 + $fotonr = 0 + 1 = 1. Dit lijkt me ook de enige goede uitkomst van deze berekening. Wat je wilde is met strings werken, en die kennen helemaal geen '+', maar een punt ('.') om een waarde aan elkaar te plakken. Had je dus geschreven $fototitelnr = "00".$fotonr; dan had je het gewenste resultaat gekregen. Let dus voortaan goed op dit verschil tussen bewerkingen op getallen en strings en haal ze dus niet door elkaar. De wijze van PHP is dus wel degelijk logisch en eenduidig. Gewoon een kwestie van goed nadenken waarmee je nou eigenlijk bezig bent. ;) - Basje.
Link naar reactie
BasHamar: Dat is wederom helemaal duidelijk. Dat een punt een soort + is voor strings wist ik al, maar om dat dan bij dit 'probleem' toe te passen was blijkbaar weer te veel voor me haha. Een beetje nadenken tijdens het tikken wil nog wel eens uitmaken inderdaad... Hee jij had mij trouwens laatst ook al geholpen met een Flash- en een dHTML-ding in het webdesign forum. Bedankt hoor! Lijkt me fantastisch om zo veel kennis bij de hand te hebben. Bill Gates: Erg interessant, dat artikel op webgoeroe. Helaas was ik net overgestapt op 'print' ipv HTML-escapes (hoera weer een nieuwe term geleerd) omdat de PHP-code daarmee netter en leesbaarder werd. Ik ga hier dus dan toch maar op terug komen, zeker als ik met een site bezig ben die niet voor de lol of voor mezelf is...
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

  • Populaire leden

    Er is nog niemand die deze week reputatie heeft ontvangen.

  • Leden

    Geen leden om te tonen

×
×
  • Nieuwe aanmaken...