21. februar 2005 - 11:44Der 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
Der bliver investeret massivt i AI. Teknologien er mere tilgængelig end nogensinde, og ambitionerne er høje. Alligevel oplever mange virksomheder, at resultaterne udebliver.
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
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 .. }
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'];
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
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]
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 }
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
// 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
// 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
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!
Synes godt om
Ny brugerNybegynder
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.