login  Naam:   Wachtwoord: 
Registreer je!
 Forum

resultaat van AS weergeven in kleuren of letters (Opgelost)

Offline Frank56 - 02/08/2014 10:34
Avatar van Frank56Nieuw lid Kan ik het resultaat van AS (int) uit de query die ik op plaatscode gezet heb, printen als een kleur of letter?

Ik wil bij R het resultaat als volgt weergeven:
0 punten: de cel waarin het resultaat geprint wordt, is rood
1 punt: de cel waarin het resultaat geprint wordt, is oranje
2 punten: de cel wordt geel
3 punten: de cel wordt lichtgroen
4 punten: de cel wordt groen

Of als dat niet mogelijk is, kan het dan als volgt?

Ik wil bij R het resultaat als volgt weergeven:
0 punten: in de cel waarin het resultaat geprint wordt, komt een o
1 punt: in de cel waarin het resultaat geprint wordt, komt een om
2 punten: in de cel komt een m
3 punten: in de cel komt een v
4 punten: in de cel komt een g

Ik ben heel benieuwd of het mogelijk is. Op internet zie ik hier geen uitleg over.

7 antwoorden

Gesponsorde links
Offline Thomas - 02/08/2014 20:28 (laatste wijziging 02/08/2014 20:54)
Avatar van Thomas Moderator Ik neem aan dat dit de bewuste code is?

Als je code aanmaakt met een [ plaatscode ] tag wordt automatisch een link aangemaakt naar de code... Hier hoef je verder niets speciaals voor te doen.

Dit is prima mogelijk. Je vergelijkt de opgehaalde waarde met andere waarden en op grond daarvan druk je HTML af. Dit kun je met een aantal if-statements doen of met een switch-statement. Ook kan het de moeite lonen om, als je deze bewerking vaak herhaalt, deze vast te leggen in een functie. Een functie hoef je maar 1x te declareren, daarna kun je deze vaker aanroepen.

Ik weet niet helemaal of de HTML-code voor je tabel klopt, maar het onderstaande codefragment laat zien hoe je een achtergrondkleur op een tabel-cel zou kunnen toepassen:

  1. <?php
  2. function bepaalKleur($waarde) {
  3. switch ($waarde) {
  4. case 0:
  5. $kleur = '#ff0000'; // rood
  6. break;
  7. case 1:
  8. $kleur = '#ffaa00'; // oranje
  9. break;
  10. case 2:
  11. $kleur = '#ffff00'; // geel
  12. break;
  13. case 3:
  14. $kleur = '#aaff00'; // lichtgroen
  15. break;
  16. case 4:
  17. $kleur = '#00cc00'; // groen
  18. break;
  19. default:
  20. $kleur = '#ff00ff'; // onbekende waarde
  21. }
  22. return $kleur;
  23. }
  24.  
  25. $test = 0; // voorbeeldwaarde
  26. ?><table>
  27. <tr>
  28. <td style="background-color: <?php echo bepaalKleur($test); ?>; text-align: center;" width="50" height="50"><?php echo $test; ?></td>
  29. </tr>
  30. </table>


Ik denk dat het ook de moeite loont om de basis van (HTML, CSS en) PHP (nog) eens door te nemen want dit vraagstuk zou op het moment dat je met databases in de weer gaat al redelijk triviaal moeten zijn.
Offline Frank56 - 03/08/2014 15:21 (laatste wijziging 03/08/2014 20:14)
Avatar van Frank56 Nieuw lid Hartelijk dank.

Het is inderdaad de goede code. Nu heb ik die zoveel mogelijk proberen te verkorten met twee tabellen, de oude en de nieuwe (met kleuraanpassing).

Mijn oude tabel print nog steeds alle informatie in de database, maar de nieuwe tabel doet dat niet. Er verschijnt alleen een rode cel.

Hoe kan ik de informatie uit de database ook in de nieuwe tabel krijgen?

Het doornemen van de basis leverde geen nieuwe inzichten op.

Plaatscode: 142370

mod edit: verplaatst naar plaatscode.be
Offline Thomas - 03/08/2014 20:08 (laatste wijziging 03/08/2014 20:15)
Avatar van Thomas Moderator Laat ik je wat hengels geven:

HTML tabellen. Ook is je charset (nog steeds) niet in orde.

In deze tutorial staat het een en ander uitgelegd over enkele controle-structuren in PHP. Hier kun je (kort door de bocht) blokken code mee afbakenen. De uitvoering van zo'n blok code geschiedt wel (mogelijk meerdere keren) of niet afhankelijk van condities die je hier aan toevoegt. Een blok code is begrensd door { accolades }. De reden dat je maar één rode cel ziet is omdat deze buiten je while-loop staat (valt buiten de accolades van je while-statement). Je hebt dus naast de pot gepist .

Daarnaast probeer je daar $klas af te drukken (ongedefineerd). Waarschijnlijk wil je daar een query-resultaat ($row['klas']) afdrukken.

Accolades hebben betekenis. Als je deze betekenis negeert gaan er weinig dingen goed.

Je script combineert een rudimentair loginsysteem met andere functionaliteit. Voor het overzicht lijkt het mij handiger om deze zaken te scheiden. Je maakt gebruik van sessies. Sessies zijn juist bedoeld om informatie langere tijd te onthouden, dus ook over verschillende pagina's. Als je gegevens beschermd moeten worden, maak dan een apart loginpaneel. Vervolgens bouw je in je te-beveiligen-pagina's een controle in.
Offline Frank56 - 04/08/2014 13:55
Avatar van Frank56 Nieuw lid Dank je wel voor de hengels. Het is nu gelukt.

Eerder schreef je dat de switch ook vastgelegd kon worden in een functie. Heb ik hier iets aan als ik de bewerking vaker wil herhalen, maar dan met verschillende waardes?

Voor de nehat1 (de eerste AS in de code) wil het resultaat anders weergeven, namelijk:

0 punten: de cel waarin het resultaat geprint wordt, is rood
4 punt: de cel waarin het resultaat geprint wordt, is oranje
8 punten: de cel wordt geel
12 punten: de cel wordt lichtgroen
16 punten: de cel wordt groen

Ik zet de twee functies bepaalKleur wel onder elkaar, maar dat levert niets op.

Plaatscode: 142371
Offline Thomas - 04/08/2014 15:52
Avatar van Thomas Moderator Wil je dat doen voor dat precieze aantal punten (0, 4, 8, 12, 16), of voor de intervallen
van (en met) 0 tot (en zonder) 4,
van (en met) 4 tot (en zonder) 8,
van (en met) 8 tot (en zonder) 12,
etc.
?

In het eerste geval kun je een soortgelijke functie opstellen voor dat precieze aantal punten, in het laatste geval lijkt het mij ook handig om hier een functie voor op te stellen, maar deze zal er iets anders uitzien.

Je zou zelfs één generieke functie kunnen overwegen, die een kleur aan een interval van waarden toekent.
Offline Frank56 - 04/08/2014 17:04
Avatar van Frank56 Nieuw lid Ik heb het nodig voor de intervallen, en niet alleen voor nehar en nehat1, maar ook voor nehat2 en nehai: allemaal verschillende intervallen, dus het moet dan een functie worden die er iets anders uitziet of een generieke functie.

Wat is het handigst, en hoe doe ik dat?

Offline Thomas - 04/08/2014 17:42
Avatar van Thomas Moderator Meh, wellicht toch maar met aparte functies.

De bouwstenen van deze functie zouden je al bekend moeten voorkomen. Je kunt aan de hand van deze functie ook andere functies met andere intervallen bouwen.

  1. <?php
  2. function bepaalKleurInterval($waarde) {
  3. if (0 <= $waarde && $waarde < 4) {
  4. $kleur = '#ff0000'; // rood
  5. } elseif (4 <= $waarde && $waarde < 8) {
  6. $kleur = '#ffaa00'; // oranje
  7. } elseif (8 <= $waarde && $waarde < 12) {
  8. $kleur = '#ffff00'; // geel
  9. } elseif (12 <= $waarde && $waarde < 16) {
  10. $kleur = '#aaff00'; // lichtgroen
  11. } elseif ($waarde == 16) {
  12. $kleur = '#00cc00'; // groen
  13. } else {
  14. $kleur = '#ff00ff'; // onbekende waarde
  15. }
  16. return $kleur;
  17. }
  18. ?>
Bedankt door: Frank56
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.196s