Avatar billede marzman Nybegynder
21. februar 2005 - 11:44 Der er 29 kommentarer og
1 løsning

forskellig farve ved hentning fra mysql

Hejsa..

Jeg er i gang med noget database projekt...

Nu skal jeg bruge et script som henter resultater fra mysql databasen og farver alle "lige" resultater en farve og alle "ulige" resultater en anden farve.

Hvordan vil det se ud?? når man laver en simpel mysql_query


På forhånd tak!
//marZman
Avatar billede flim Nybegynder
21. februar 2005 - 11:50 #1
$q = "SELECT tal FROM tabel";

while ($row = mysql_fetch_array($q))
{
  if ($row[tal] % 2 == 0) //HVis tallet du har trukket ud er lige
  {
    $farve = 'green';
  }
  else
  {
    $farve = 'red';
  }

  echo '<font = '.$farve.'>'.$row[tal].'</font>';
}

Den kan du så selv rette til, men det er da en start
Avatar billede marzman Nybegynder
21. februar 2005 - 11:54 #2
hvad gør det der %-tegn ved ($row[tel] %
Avatar billede marzman Nybegynder
21. februar 2005 - 11:55 #3
hvad hvis den også skal have en farve ved ulige!?
Avatar billede flim Nybegynder
21. februar 2005 - 11:56 #4
Den finder resten i tallet...

Fx 35 % 2 giver 17 hele og 1 til rest (dvs tallet er ulige)

Tallet 20 giver 10 hele og 0 i rest (dvs tallet er lige)

Jeg finder alle dem der giver 0 i rest - dvs alle dem hvor tallet er lige.
Avatar billede flim Nybegynder
21. februar 2005 - 11:57 #5
Som det er nu er farven grøn når tallet er lige, og farven er rød ved ulige. Jeg kan dog ikke huske font-tagget men det er simpel html. Det burde du nemt kunne lave så det er rigtigt
Avatar billede fixxxer Nybegynder
21. februar 2005 - 12:04 #6
En alternativ måde:
while ()
{
$farve = ($farve == "blue")?"silver":"blue";
//hvis farven er blå, bliver farven sølv. Hvis den ikke er blå (så må den være sølv) og så bliver den blå :)
//Fylder mindre og gør præcis det samme. Men med film's trick er det nemmere at "vende" farvenorden om. Her skal man skrive farvekoderne om.
// alt det andet der skal ske ..
}
Avatar billede marzman Nybegynder
21. februar 2005 - 12:17 #7
$q = "SELECT tal FROM tabel";

while ($row = mysql_fetch_array($q))
{
  if ($row[tal] % 2 == 0) //HVis tallet du har trukket ud er lige
  {
    $farve = 'green';
  }
  elseif ($row[tal] % 1 == 0) //hvis tallet er ulige ---> er det rigtigt
  {
    $farve = 'red';
  }

  echo '<font = '.$farve.'>'.$row[tal].'</font>';
}


OG hvis jeg skal sætter nogle rækker ind, hvordan vil det så se ud. Altså som jeg har lært det før skulle man bare lave den der $raekke['navn_på_rækken'];

er det rigtigt
Avatar billede flim Nybegynder
21. februar 2005 - 12:17 #8
Du får lige et svar - man ved jo aldrig om du kan bruge det eller ej
Avatar billede flim Nybegynder
21. februar 2005 - 12:18 #9
her
Avatar billede flim Nybegynder
21. februar 2005 - 12:20 #10
elseif ($row[tal] % 1 == 0) //hvis tallet er ulige ---> er det rigtigt

Nej - den skal hedde $row[tal] % 2 != 0 (dvs hvis resten ikke er 0). I dette tilfælde kan du bare nøjes med at skrive else, da et tal (går ud fra det er hele tal) kun kan være lige eller ulige (der er ikke andre muligheder).

Mht at sætte en række ind så er dte en anden snak. I dette her eksempel trækker vi bare en række ud og viser om tallet er lige eller ulige
Avatar billede marzman Nybegynder
21. februar 2005 - 12:23 #11
ja, men spørgsmålet skulle forståes som at sætte noget ind og få det til at være forskellige farver! alt efter hvad nr. den havde i databasens id
Avatar billede flim Nybegynder
21. februar 2005 - 12:36 #12
Du kan først vise forskellige farver idet vi trækker indeholdet af databasen ud igen...
Avatar billede marzman Nybegynder
21. februar 2005 - 12:40 #13
hvordan ser den så ud?

Kan du ikke give et eksempel
Avatar billede flim Nybegynder
21. februar 2005 - 12:45 #14
Et eksempel på hvad?

Nu tabte jeg vist tråden...
Avatar billede marzman Nybegynder
21. februar 2005 - 12:51 #15
hvordan det ville se ud hvis jeg skal have den til at lave skifte vis fx. sort og hvid, i udtaget
Avatar billede flim Nybegynder
21. februar 2005 - 12:59 #16
Det er det eksempel jeg viste dig i starten. Jeg har bare valgt andre farver. Hvis du vil checke om id'et er lige eller ulige så skifter du bare $row[tal] ud med $row[id]
Avatar billede kasperbn Nybegynder
21. februar 2005 - 13:25 #17
Flim du har misforstået noget med %-tegnet.
Den finder resten af en division f.eks.:
2 går op i 4 to gange
2 går op i 5 to gange med 1 som rest
2 går op i 6 tre gange
2 går op i 7 tre gange med 1 som rest
2 går op i 35 sytten gange med 1 som rest

dvs. for at tjekke om et tal er lige kan du som om 2 går op i det, fordi 2 skal gå op i alle lige tal. Hvis der er en rest er tallet ulige.

Når du siger at:
$row[tal] % 1 == 0
svarer det til at dividere et eller andet tal med 1, og ser om der er en rest. Det vil der aldrig nogensinde kunne være, fordi 1 går op i alle hele tal (medmindre man regner med decimaltal).

Så du burde gøre sådan her:

$q = mysql_query("SELECT * FROM tabel");

while($r = mysql_fetch_array($q)) {

  if($r[tal] % 2 == 0) { //Et lige tal? = Er resten 0 efter en division med 2
    $farve = "#000000"; // Lige farve - sort
  }
  else { //Hvis det ikke er et lige tal, er det jo et ulige tal
    $farve = "#FFFFFF"; //Ulige farve - hvid
  }

  echo '<span style="color: $farve">'.$r["nogetduvilskriveud"].'</span>';
}

Her udskriver den skiftevis sort og hvid tekst.
Avatar billede flim Nybegynder
21. februar 2005 - 13:38 #18
kasper - læser du ikke hvad jeg skriver?

Jeg skriver nemlig helt det samme som dig.

  if ($row[tal] % 2 == 0) //HVis tallet du har trukket ud er lige
  {
    $farve = 'green';
  }
  else
  {
    $farve = 'red';
  }

Og ja - noget % 1 == 0 vil altid være sand :-)

Så vi er enige
Avatar billede kasperbn Nybegynder
21. februar 2005 - 13:41 #19
Sorry, havde ikke liiiige læst det hele :-D
Avatar billede marzman Nybegynder
21. februar 2005 - 13:50 #20
jeg er kommet frem det dette udtryk men hvad er galt ??

// Hent først data ud
$resultat = mysql_query("select * from nyheder order by dato desc LIMIT 10;");
$sql_rows = mysql_num_rows($resultat);
while($raekke = mysql_fetch_array($resultat))
{
$dato = $raekke['dato'];
$nyhed = nl2br($raekke['tekst']);
$id = $raekke['id'];

  if($r[tal] % 2 == 0) { //Et lige tal? = Er resten 0 efter en division med 2
    $farve = "#000000"; // Lige farve - sort
   
    echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><span style=\"font-size: 9px; color: #3399FF;\"><strong>Dato:</span><br /> ";
    print "$dato";
    echo "</strong></td></tr><tr><td><hr style=\"width: 100%;\" />";
    echo "</td></tr><tr><td valign=\"top\" style=\"color: #FFFFFF; background-color: $farve\">";
    print "$nyhed";
    echo "</td></tr></table>";
    if($sql_rows == "1") {
    echo "<hr style=\"width: 100%;\" />"; }
    else {
    echo ""; }
}
  else { //Hvis det ikke er et lige tal, er det jo et ulige tal
    $farve = "#FFFFFF"; //Ulige farve - hvid
  echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><span style=\"font-size: 9px; color: #3399FF;\"><strong>Dato:</span><br /> ";
  print "$dato";
  echo "</strong></td></tr><tr><td><hr style=\"width: 100%;\" />";
  echo "</td></tr><tr><td valign=\"top\" style=\"color: #000000; background-color: $farve\">";
  print "$nyhed";
  echo "</td></tr></table>";
  if($sql_rows == "1") {
  echo "<hr style=\"width: 100%;\" />"; }
}

hmm, jeg kan ikke lige se det!
Avatar billede flim Nybegynder
21. februar 2005 - 13:56 #21
if($r[tal] % 2 == 0) { //Et lige tal? = Er resten 0 efter en division med 2

skift $r ud med $raekke

Og er du sikker på at du har et felt i din db der hedder tal?

Ellers prøv at skriv:

if($id % 2 == 0) ... osv osv
Avatar billede marzman Nybegynder
21. februar 2005 - 13:57 #22
du kan se resultatet her:

http://hifit.dk/index.php?side=allnews

Den ser ikke lige ud til at virke!
Avatar billede marzman Nybegynder
21. februar 2005 - 13:58 #23
og jegr har rettet den med $p
Avatar billede flim Nybegynder
21. februar 2005 - 14:01 #24
Ret denne linie...

echo "</td></tr><tr><td valign=\"top\" style=\"color: #FFFFFF; background-color: $farve\">";


til

echo '</td></tr><tr><td valign=\"top\" style=\"color: #FFFFFF; background-color: '.$farve.'>';
Avatar billede marzman Nybegynder
21. februar 2005 - 14:03 #25
det er ikke det!
Avatar billede marzman Nybegynder
21. februar 2005 - 14:04 #26
den siger at fejlen er til sidst, så det må være et tegn der mangler!
Avatar billede flim Nybegynder
21. februar 2005 - 14:05 #27
Du afslutter din while-sætning efter første if-sætning.

Fjern den ene tuborg-klamme og ryk den ned i bunden efter den sidste if-sætning
Avatar billede marzman Nybegynder
21. februar 2005 - 14:08 #28
nu ser den sådan ud og fejlen er T_ELSE:

<?php

include("/home/virtual/hifit.dk/public_html/include/dbconnect.php");

// Hent først data ud
$resultat = mysql_query("select * from nyheder order by dato desc LIMIT 10;");
$sql_rows = mysql_num_rows($resultat);
while($raekke = mysql_fetch_array($resultat))
{
$dato = $raekke['dato'];
$nyhed = nl2br($raekke['tekst']);
$id = $raekke['id'];

  if($raekke['id'] % 2 == 0) { //Et lige tal? = Er resten 0 efter en division med 2
    $farve = "#000000"; // Lige farve - sort
   
    echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><span style=\"font-size: 9px; color: #3399FF;\"><strong>Dato:</span><br /> ";
    print "$dato";
    echo "</strong></td></tr><tr><td><hr style=\"width: 100%;\" />";
    echo "</td></tr><tr><td valign=\"top\" style=\"color: #FFFFFF; background-color: '.$farve.'>";
    print "$nyhed";
    echo "</td></tr></table>";
    if($sql_rows == "1") {
    echo "<hr style=\"width: 100%;\" />"; }
    else {
    echo ""; }
  else { //Hvis det ikke er et lige tal, er det jo et ulige tal
    $farve = "#FFFFFF"; //Ulige farve - hvid
  echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><span style=\"font-size: 9px; color: #3399FF;\"><strong>Dato:</span><br /> ";
  print "$dato";
  echo "</strong></td></tr><tr><td><hr style=\"width: 100%;\" />";
  echo "</td></tr><tr><td valign=\"top\" style=\"color: #000000; background-color: '.$farve.'>";
  print "$nyhed";
  echo "</td></tr></table>";
  if($sql_rows == "1") {
  echo "<hr style=\"width: 100%;\" />"; }
}
}

?>
Avatar billede flim Nybegynder
21. februar 2005 - 14:20 #29
<?php

include("/home/virtual/hifit.dk/public_html/include/dbconnect.php");

// Hent først data ud
$resultat = mysql_query("select * from nyheder order by dato desc LIMIT 10;");
$sql_rows = mysql_num_rows($resultat);
while($raekke = mysql_fetch_array($resultat))
{
$dato = $raekke['dato'];
$nyhed = nl2br($raekke['tekst']);
$id = $raekke['id'];

  if($raekke['id'] % 2 == 0) { //Et lige tal? = Er resten 0 efter en division med 2
    $farve = "#000000"; // Lige farve - sort
   
    echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><span style=\"font-size: 9px; color: #3399FF;\"><strong>Dato:</span><br /> ";
    print "$dato";
    echo "</strong></td></tr><tr><td><hr style=\"width: 100%;\" />";
    echo "</td></tr><tr><td valign=\"top\" style=\"color: #FFFFFF; background-color: '.$farve.'>";
    print "$nyhed";
    echo "</td></tr></table>";
    if($sql_rows == "1") {
    echo "<hr style=\"width: 100%;\" />"; }
    else {
    echo ""; }
    }
  else { //Hvis det ikke er et lige tal, er det jo et ulige tal
    $farve = "#FFFFFF"; //Ulige farve - hvid
  echo "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tr><td valign=\"top\" align=\"left\"><span style=\"font-size: 9px; color: #3399FF;\"><strong>Dato:</span><br /> ";
  print "$dato";
  echo "</strong></td></tr><tr><td><hr style=\"width: 100%;\" />";
  echo "</td></tr><tr><td valign=\"top\" style=\"color: #000000; background-color: '.$farve.'>";
  print "$nyhed";
  echo "</td></tr></table>";
  if($sql_rows == "1") {
  echo "<hr style=\"width: 100%;\" />"; } //afslutning på if
  } //afslutning på else
} //afslutning på while

Prøv sådan der...
Avatar billede marzman Nybegynder
21. februar 2005 - 15:00 #30
sådan! nu virker det! lidt små fejl i min css gjorde at den ikke lige ville det ordenligt!

Nåå nu til points hvem skal have og hvem skal ikke have...
efter min mening skal flim have alle sammen!
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