Avatar billede gregblach Nybegynder
16. januar 2006 - 09:54 Der er 11 kommentarer og
1 løsning

Replace text med grafik

Jeg er igang med et lille DVD database projekt, og har bl.a. oprettet et rating felt i MySQL DB'en (rating, TINYINT(3), Default 0, Unsigned). Jeg planlægger at bruge fra 0 til 5 i rating værdi.

Som det er nu listes værdien blot i ren text, men jeg vil gerne lave en replace med lidt grafik istedet (formodentligt stjerner, som jo normalt bruges til den slags).

Jeg har prøvet at google lidt på dette, men har ikke kunnet finde noget brugbart...

/Greg
Avatar billede phliplip Nybegynder
16. januar 2006 - 09:59 #1
Hej Greg!

Lav 6 billeder der symboliserer din rating 0-5 og gem dem som 0.gif, 1.gif osv osv

<?
$result = mysql_query("SELECT rating FROM table WHERE id='".$ditId."' LIMIT 0,1");
if(mysql_num_rows($result) > 0) {
  $row = mysql_fetch_assoc($result);
  echo("<img src=\"images/".$row['rating'].".gif\" alt=\"\">\n");
}
?>

/Philip
Avatar billede phliplip Nybegynder
16. januar 2006 - 09:59 #2
svar
Avatar billede gregblach Nybegynder
16. januar 2006 - 10:29 #3
Hej phliplip,

Min nuværende kode ser sådan ud:

$result = mysql_query("SELECT title, genre, rating, year_produced, version, sound_format, region from dvds ORDER BY title")
or die(mysql_error());

echo "<table border='1'>";
echo "<tr> <th class=\"listheading\">title</th> <th class=\"listheading\">genre</th> <th class=\"listheading\">Rating</th> <th class=\"listheading\">Year</th> <th class=\"listheading\">Version</th> <th class=\"listheading\">Sound</th> <th class=\"listheading\">Region</th> </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
// Print out the contents of each row into a table
echo "<tr><td class=\"tablelist0\">";
echo $row['title'];
echo "</td><td class=\"tablelist0\">";
echo $row['genre'];
echo "</td><td class=\"tablelist0\">";
echo $row['rating'];
echo "</td><td class=\"tablelist0\">";
echo $row['year_produced'];
echo "</td><td class=\"tablelist0\">";
echo $row['version'];
echo "</td><td class=\"tablelist0\">";
echo $row['sound_format'];
echo "</td><td class=\"tablelist0\">";
echo $row['region'];
echo "</td></tr>";
}
echo "</table>";

Hvordan ville du passe din kode ind her (lidt hints ville være fint)? :o)

/Greg
Avatar billede gregblach Nybegynder
16. januar 2006 - 10:32 #4
Har faktisk lige et tilllægsspørgsmål:

Jeg ville gerne have at hveranden linie i listen havde anden baggrundsfarve. Jeg er startet op på et CSS ark til projektet, så det skal helst være CSS styret.

Du skal nok få flere point, hvis det er det der skal til. ;o)

/Greg
Avatar billede phliplip Nybegynder
18. januar 2006 - 00:44 #5
$result = mysql_query("SELECT title, genre, rating, year_produced, version, sound_format, region from dvds ORDER BY title")
or die(mysql_error());

echo "<table border='1'>";
echo "<tr> <th class=\"listheading\">title</th> <th class=\"listheading\">genre</th> <th class=\"listheading\">Rating</th> <th class=\"listheading\">Year</th> <th class=\"listheading\">Version</th> <th class=\"listheading\">Sound</th> <th class=\"listheading\">Region</th> </tr>";
// keeps getting the next row until there are no more to get
while($row = mysql_fetch_array( $result )) {
// Print out the contents of each row into a table
echo "<tr><td class=\"tablelist0\">";
echo $row['title'];
echo "</td><td class=\"tablelist0\">";
echo $row['genre'];
echo "</td><td class=\"tablelist0\">";
// SÅDAN
echo("<img src=\"images/".$row['rating'].".gif\" alt=\"\">\n");
echo "</td><td class=\"tablelist0\">";
echo $row['year_produced'];
echo "</td><td class=\"tablelist0\">";
echo $row['version'];
echo "</td><td class=\"tablelist0\">";
echo $row['sound_format'];
echo "</td><td class=\"tablelist0\">";
echo $row['region'];
echo "</td></tr>";
}
echo "</table>";
Avatar billede phliplip Nybegynder
18. januar 2006 - 00:47 #6
Hvis du laver 2 CSS class

.odd {}
.even {}

while($row = mysql_fetch_array( $result )) {
  if($class == "odd") {
    $class = "even";
  } else {
    $class = "odd";
  }
echo "<tr><td class=\"tablelist0 ".$class."\">";
osv osv osv
Avatar billede phliplip Nybegynder
18. januar 2006 - 00:48 #7
Så skulle den gerne skifte mellem odd og even class'erne
Avatar billede gregblach Nybegynder
19. januar 2006 - 14:18 #8
Hej phliplip,

Det er altså klasse det dér!! Var ellers ved at være bange for at du havde glemt mig. ;o)

TAK!

/Greg
Avatar billede gregblach Nybegynder
19. januar 2006 - 14:53 #9
...og én gang til: Det virker nu, får bare en "Notice: Undefined variable: class in C:\Apache2\htdocs\dvd\listDVDs.php on line 28" fejl. Her er kodestumpen. Kan ikke finde ud af hvad der er fejlen:

26 while($row = mysql_fetch_array( $result ))
27 {
28  if($class == "odd")
29  {
30    $class = "even";
31  }
32  else
33  {
34    $class = "odd";
35  }
Avatar billede phliplip Nybegynder
19. januar 2006 - 16:53 #10
Det har noget at gøre med at din installation af PHP er sat op til at rapportere notices.. Det kan ændres, kan ikke lige på stående fod huske hvad det skal være sat til!

lige før linie 26 skal du bare sætte $class = false;
Avatar billede phliplip Nybegynder
19. januar 2006 - 19:46 #11
I din php.ini skal du finde 'error_reporting'
og sætte den til følgende

error_reporting  =  E_ALL & ~E_NOTICE
Avatar billede gregblach Nybegynder
19. januar 2006 - 21:13 #12
"lige før linie 26 skal du bare sætte $class = false;", viker bare super. Tak igen. ;O)
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