Avatar billede mazey Praktikant
22. oktober 2004 - 00:52 Der er 21 kommentarer og
1 løsning

Få tekst til at skifte farve grundet hvad der står i en db

Hejsa... endnu et spørgsmål

Jeg har en php fil som laver et udtræk fra en database. i en tabel i databasen er der et felt som hedder overunder.
Når jeg vil lave et udtræk til den ser det sådan ud:
<? echo "$data[7]"; ?>

det der står indtastet i databasen i $data[7] starter med et fortegn, enten "+" eller "-", kan jeg lave en slags kode som gør at hvis udtrækket starter med - er tekstfarven blå, hvis den starter med + er den rød...
Avatar billede coderdk Praktikant
22. oktober 2004 - 00:55 #1
$sign = $data[7][0];
$style = '';
if ( $sign == '+' )
{
  $style = ' style="color: red;"';
}
else if ( $sign == '-' )
{
  $style = ' style="color: blue;"';
}
echo "<span$style>$data[7]</span>";
Avatar billede mazey Praktikant
22. oktober 2004 - 00:56 #2
ok, det skal jeg lige prøve... hvorfor $sign = $data[7][0]; <-- hvorfor også [0]?
Avatar billede coderdk Praktikant
22. oktober 2004 - 00:57 #3
Dét er det første tegn i $data[7]

:)
Avatar billede olebole Juniormester
22. oktober 2004 - 01:00 #4
<ole>

Forklaring: PHP har en indbygget 'fejl', der gør, at man kan tilgå strenge som arrays.

$s = "OleBole";
print $s[3];

vil således returnere 'B'.

/mvh
</bole>
Avatar billede mazey Praktikant
22. oktober 2004 - 01:00 #5
Jeg er lidt ny i feltet nemlig.. :)
Jeg har lige forsøgt at sætte det ind, men det fungerer ikke rigtigt... jeg har placeret koden lige under min query, bortset fra echo "<span$style>$data[7]</span>"; som er placeret efter min while løkke...
Avatar billede coderdk Praktikant
22. oktober 2004 - 01:01 #6
Lad os se kode ;)
Avatar billede olebole Juniormester
22. oktober 2004 - 01:02 #7
coderdk >> hold dig fra mine replikker!  ;D
Avatar billede mazey Praktikant
22. oktober 2004 - 01:03 #8
*lol*...ok!

<?
$foresp = mysql_query("SELECT turnering, deltager, resultat, resultat2, resultat3, resultat4, total, overunder, placering, ref FROM individuel ORDER BY id DESC"); ?>
<?
$sign = $data[7][0];
$style = '';
if ( $sign == '+' )
{
  $style = ' style="color: red;"';
}
else if ( $sign == '-' )
{
  $style = ' style="color: blue;"';
}
?>

<?
            while ($data = mysql_fetch_row($foresp)) {
?>       
    <table width="455"  border="1" bordercolor="#FFFFFF" cellpadding="0" cellspacing="0" align="center">
<tr>
    <td background="newsbar.jpg" height="27" align="center"><span class="style2">
<? echo "<span$style>$data[7]</span>"; ?></span></td>
  </tr>
</table>
Avatar billede Slettet bruger
22. oktober 2004 - 01:05 #9
Det skal sættes indendfor løkken, der henter data.
Avatar billede coderdk Praktikant
22. oktober 2004 - 01:07 #10
Ja, ok, det duer ikke rigtig, vi ved jo ikke på det tidspunkt hvad $data[7] er, så den skal ind i løkken:

<?
$foresp = mysql_query("SELECT turnering, deltager, resultat, resultat2, resultat3, resultat4, total, overunder, placering, ref FROM individuel ORDER BY id DESC"); ?>
<?
            while ($data = mysql_fetch_row($foresp)) {

$sign = $data[7][0];
$style = '';
if ( $sign == '+' )
{
  $style = ' style="color: red;"';
}
else if ( $sign == '-' )
{
  $style = ' style="color: blue;"';
}
?>
    <table width="455"  border="1" bordercolor="#FFFFFF" cellpadding="0" cellspacing="0" align="center">
<tr>
    <td background="newsbar.jpg" height="27" align="center"><span class="style2">
<? echo "<span$style>$data[7]</span>"; ?></span></td>
  </tr>
</table>
<?php

}

?>

du manglede også at slutte din løkke?
Avatar billede mazey Praktikant
22. oktober 2004 - 01:07 #11
Fjong.... så fungerer det...
Avatar billede mazey Praktikant
22. oktober 2004 - 01:08 #12
Ja det var bare et udsnit af hvad det var jeg havde problemer med... koden er meget længere...
Avatar billede coderdk Praktikant
22. oktober 2004 - 01:09 #13
ok :)
Avatar billede mazey Praktikant
22. oktober 2004 - 01:25 #14
Jeg har udbygget den lidt nu til dette:
<?
$score = $data[10][0];
$sign2 = $data[2][0];

$style2 = '';
if ( $sign2 <= '73' )
{
  $style2 = ' style="color: red;"';
}
else if ( $sign2 >= '73' )
{
  $style2 = ' style="color: blue;"';
}
?>

Det det skal bruges til er indregistrering af runder man har gået i golf. normalt plejer man at benytte sig af røde tal hvis man er "under par" og blå tal hvis man er "over par". Det virker som det skal nu, men der findes jo forskellige golfbaner med forskellig "par"... den jeg har ovenstående er f.eks. en par 73. Kan man ikke brygge videre på den til at videretage endnu et kriterie, så hvis $data[10] = 68, så skal den så være if ( $sign2 <= '68' )
{
  $style2 = ' style="color: red;"';

Jeg opretter gerne endnu et spørgsmål for at belønne med point...
Avatar billede coderdk Praktikant
22. oktober 2004 - 01:28 #15
hvis $data[10] er 68 er $data[10][0] 6 - så du behøver slet ikke bruge $sign2 du kan bruge $data[10] direkte... Resten du har lavet ser rigtigt ud!
Avatar billede mazey Praktikant
22. oktober 2004 - 01:32 #16
Ja men det der er meningen er at brugeren indtaster banens par i $data[10], det kan være fra 68-74, det nytter derfor ikke noget at jeg kun har én $sign, da koden som du kan se i ovenstående ikke matcher det jeg tidligere skrev om over og under par!... Ovenstående er jo kun til en bane som er par 73, men det kan jo være brugeren indtaster den til at være 68, og så passer koden ikke længere... så 69 stadig være "under par" ifgl. ovenstående kode...
svært at forklare hvis du ikke spiller golf! ;)
Avatar billede olebole Juniormester
22. oktober 2004 - 01:46 #17
Hmmm ... nææhhh, parforhold kan zq være svære at få styr på  :)
Avatar billede mazey Praktikant
22. oktober 2004 - 01:53 #18
<?
$sign2 = $data[2][0];

$style2 = '';
if ( $sign2 >= "73" )
{
  $style2 = ' style="color: red;"';
}
else if ( $sign2 <= "72" )
{
  $style2 = ' style="color: blue;"';
}
?>

Det virker faktisk ikke....
Den er bare rød konstant... om jeg så indtaster 2 i $data[2] er den stadig rød....
Avatar billede Slettet bruger
22. oktober 2004 - 02:20 #19
$sign2 er jo det kun det første tegn fra $data[2]. Det giver ingen mening at sammenligne det med nogetsomhelst andet end for at finde et fortegn.
Avatar billede coderdk Praktikant
22. oktober 2004 - 02:38 #20
hvad jeg mente:

<?

if ( $data[2] >= "73" )
{
  $style2 = ' style="color: red;"';
}
else if ( $data[2] <= "72" )
{
  $style2 = ' style="color: blue;"';
}
?>
Avatar billede mazey Praktikant
22. oktober 2004 - 02:39 #21
ja, det er da nemmere... hehe... man lærer jo! takker!
Avatar billede coderdk Praktikant
22. oktober 2004 - 02:48 #22
Hvis man skal spare plads og ikke har noget imod lidt sværere læsning, så giver dette nøjagtigt samme resultat:

$style2 = ' style="color: ' . ( $data[2] >= 73 ? 'red' : 'blue' ) . ';"';
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester