Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[php] functie om balken mee te maken

Anoniem
None
5 antwoorden
  • Ik ben bezig met een php functie die een "balk" (met een afbeelding) maakt door enkele gegevens.

    Dit is wat ik heb gemaakt:
    [code:1:794bea2ccc]
    <?php
    function balk($num,$kleur)
    {
    if (($num == 1) && ($kleur == 'rood'))
    {
    echo '<img src=\"img/website/balken/balk_rood.jpg\" width=\"10\" />'
    }
    }
    echo balk(1,rood);
    ?>
    [/code:1:794bea2ccc]

    Helaas werkt het alleen nog niet…
    Het idee is dus dat iemand alleen <? echo balk(waardering,kleur) ?> hoeft op te geven en dat de functie dan automatisch een balk tevoorschijn haalt. Ik ga dit gebruiken bij een review website, waarbij de waarderingen dus middels zo'n balk moeten kunnen worden weergeven: ik wil dus iets zoals op tweakers.net berijken:
    http://tweakers.net
    eviews/607/3
    (zie:helemaal onderaan)

    Wat doe ik fout?

    Alvast bedankt!
  • Ik denk dat die echo voor balk onderaan overbodig is. Moet de width trouwens niet variabel gemaakt worden? En de hoogte vast aangeven, lijkt me.
  • Ik heb de fouten al gevonden.
    Dit is wat ik nu heb:

    [code:1:ea6e945c13]
    <?php
    function balk($num,$kleur)
    {
    $waarde = $num * 2;
    if ($num > 100)
    {
    echo '<img src="img/website/balk_' . $kleur . '.jpg" width=' . $num * 2 . ' height="15" /><span style="font-family:Arial, Helvetica, sans-serif; font-size:11px; ">&nbsp;&nbsp; Score: 100</span>';
    }
    else
    {
    echo '<img src="img/website/balk_' . $kleur . '.jpg" width="' . $waarde . '" height="15" /><span style="font-family:Arial, Helvetica, sans-serif; font-size:11px; ">&nbsp;&nbsp; Score: ' . $num . '</span>';
    }
    }
    ?>
    blablabla tekst tekst tekst
    <? echo balk(100,'rood'); ?>
    blablabla
    [/code:1:ea6e945c13]


    Toch bedankt, gerben! :wink:
  • Even los van je probleemstelling, ik denk dat je de code nogal wat kan optimaliseren… Grofweg ziet het er nu zo uit:[code:1:8376e9454e]ALS tekst == ROOD{
    SCHRIJF ROOD;
    }ANDERS ALS tekst == BLAUW{
    SCHRIJF BLAUW;
    }ANDERS ALS tekst == GROEN{
    SCHRIJF GROEN;
    }[/code:1:8376e9454e]Waarschijnlijk zie je nu zelf wel dat er een bepaalde redundantie in zit (herhaling). Wat waarschijnlijk fijner werkt en ook beter uit te breiden is, is een structuur als het volgende:[code:1:8376e9454e]ALS tekst == TOEGESTAAN{
    SCHRIJF tekst;
    }[/code:1:8376e9454e]Met "TOEGESTAAN" bedoel ik dat je even moet controleren of het een geldige waarde is, meer niet. De functie in_array() is hier in dit geval geschikt voor. Een andere optie die ook overzichtelijker (maar nog steeds minder overzichtelijk dan wat ik net zei) werkt is een constructie met switch().

    Ik hoop dat je wat aan deze informatie hebt. ;)

    - Bas.
  • Als je de nieuwe code bekijkt zie je dat ik dat al verandert heb ;) Nog niet met arrays e.d. maar dit werkt in principe perfect.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.