Data presentatie
Ik heb daarvoor al aardig wat aan css bijgeleerd maar nu zit ik met een probleempje.
Ik zou namelijk graag hebben dat in de rijen waar het percentage onder de 50% is de cijfer in de kolom rood worden. Kan iemand mij daar bij helpen ?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
<html>
<head>
<!-- CSS goes in the document HEAD or added to your external stylesheet -->
<style type="text/css">
table.hovertable {
font-family: verdana,arial,sans-serif;
font-size:11px;
color:#333333;
border-width: 1px;
border-color: #999999;
border-collapse: collapse;
}
table.hovertable th {
background-color:#c3dde0;
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
table.hovertable tr {
background-color:#d4e3e5;
}
table.hovertable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
</style>
</head>
<body>
[code]<?php
$username="";
$password="";
$database="";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "SELECT rivieren.*, users.naam ".
"FROM rivieren, users ".
"WHERE rivieren.speler = users.inlog order by id asc";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
?>
<table border="1" cellspacing="2" cellpadding="2" class="hovertable" >
<tr>
<th><font face="Arial, Helvetica, sans-serif">Id</font></th>
<th><font face="Arial, Helvetica, sans-serif">Naam</font></th>
<th><font face="Arial, Helvetica, sans-serif">Score </font></th>
<th><font face="Arial, Helvetica, sans-serif">percent</font></th>
<th><font face="Arial, Helvetica, sans-serif">datum</font></th>
<th><font face="Arial, Helvetica, sans-serif">Start</font></th>
<th><font face="Arial, Helvetica, sans-serif">Einde</font></th>
<th><font face="Arial, Helvetica, sans-serif">duur</font></th>
</tr>
<?php
$i=0;
while ($i < $num) {
$f1=mysql_result($result,$i,"id");
$f2=mysql_result($result,$i,"naam");
$f3=mysql_result($result,$i,"score");
$f4=mysql_result($result,$i,"percent");
$f5=mysql_result($result,$i,"datum");
$f6=mysql_result($result,$i,"btijd");
$f7=mysql_result($result,$i,"etijd");
$f8=mysql_result($result,$i,"crono");
?>
<tr onmouseover="this.style.backgroundColor='#ffff66';" onmouseout="this.style.backgroundColor='#d4e3e5';">
<td ><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f4; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f5; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f6; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f7; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f8; ?></font></td>
</tr>
<?php
$i++;
}
?>
</body>
</html>
?>
<html>
<head>
<!-- CSS goes in the document HEAD or added to your external stylesheet -->
<style type="text/css">
table.hovertable {
font-family: verdana,arial,sans-serif;
font-size:11px;
color:#333333;
border-width: 1px;
border-color: #999999;
border-collapse: collapse;
}
table.hovertable th {
background-color:#c3dde0;
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
table.hovertable tr {
background-color:#d4e3e5;
}
table.hovertable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
</style>
</head>
<body>
[code]<?php
$username="";
$password="";
$database="";
mysql_connect(localhost,$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
$query = "SELECT rivieren.*, users.naam ".
"FROM rivieren, users ".
"WHERE rivieren.speler = users.inlog order by id asc";
$result=mysql_query($query);
$num=mysql_numrows($result);
mysql_close();
?>
<table border="1" cellspacing="2" cellpadding="2" class="hovertable" >
<tr>
<th><font face="Arial, Helvetica, sans-serif">Id</font></th>
<th><font face="Arial, Helvetica, sans-serif">Naam</font></th>
<th><font face="Arial, Helvetica, sans-serif">Score </font></th>
<th><font face="Arial, Helvetica, sans-serif">percent</font></th>
<th><font face="Arial, Helvetica, sans-serif">datum</font></th>
<th><font face="Arial, Helvetica, sans-serif">Start</font></th>
<th><font face="Arial, Helvetica, sans-serif">Einde</font></th>
<th><font face="Arial, Helvetica, sans-serif">duur</font></th>
</tr>
<?php
$i=0;
while ($i < $num) {
$f1=mysql_result($result,$i,"id");
$f2=mysql_result($result,$i,"naam");
$f3=mysql_result($result,$i,"score");
$f4=mysql_result($result,$i,"percent");
$f5=mysql_result($result,$i,"datum");
$f6=mysql_result($result,$i,"btijd");
$f7=mysql_result($result,$i,"etijd");
$f8=mysql_result($result,$i,"crono");
?>
<tr onmouseover="this.style.backgroundColor='#ffff66';" onmouseout="this.style.backgroundColor='#d4e3e5';">
<td ><font face="Arial, Helvetica, sans-serif"><?php echo $f1; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f2; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f3; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f4; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f5; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f6; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f7; ?></font></td>
<td><font face="Arial, Helvetica, sans-serif"><?php echo $f8; ?></font></td>
</tr>
<?php
$i++;
}
?>
</body>
</html>
?>
Dus als het percentage onder 50% is zou ik graag hebben dat het percentage en de score in het rood komen. Is dit mogelijk en zo jah kunnen jullie mij helpen?
Alvast bedankt,
als er nog andere tips zijn over deze code hoor ik ze graag!
Toevoeging op 17/03/2013 19:30:33:
Ik heb er extra voor en achter gezet omdat de code anders niet goed werd getoond.
Hopelijk kan iemand mij nu helpen.
Gewijzigd op 17/03/2013 19:31:14 door Jos Verstraeten
Daarnaast kopieer je onnodig variabelen.
Zelfde code, maar beter.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
$username = "";
$password = "";
$database = "";
mysql_connect(localhost, $username, $password);
mysql_select_db($database) or die("Unable to select database");
// geen @ gebruiken!
$query = "
SELECT r.id, r.score, r.percent, r.datum, r.start, r.einde, r.duur, u.naam
FROM rivieren r, users u
WHERE r.speler = u.inlog
ORDER BY r.id ASC";
$result = mysql_query($query);
?><html>
<head>
<title>Mag je zelf verzinnen</title>
<meta charset="utf-8">
<!-- CSS goes in the document HEAD or added to your external stylesheet -->
<style type="text/css">
table.hovertable {
font-family: verdana, arial, sans-serif;
font-size: 11px;
color: #333333;
border-width: 1px;
border-color: #999999;
border-collapse: collapse;
}
table.hovertable th {
background-color: #c3dde0;
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
table.hovertable tr {
background-color: #d4e3e5;
}
table.hovertable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
table.hovertable td:hover
{
background-color: #ff6;
}
</style>
</head>
<body>
<table class="hovertable" >
<tr>
<th>Id</th>
<th>Naam</th>
<th>Score </th>
<th>percent</th>
<th>datum</th>
<th>Start</th>
<th>Einde</th>
<th>duur</th>
</tr>
<?php
while ($data = mysql_fetch_assoc($result))
{
echo '
<tr>
<td >' . $data['id'] . '</td>
<td >' . $data['naam'] . '</td>
<td >' . $data['score'] . '</td>
<td >' . $data['percent'] . '</td>
<td >' . $data['datum'] . '</td>
<td >' . $data['btijd'] . '</td>
<td >' . $data['etijd'] . '</td>
<td >' . $data['crono'] . '</td>
</tr>';
}
?>
</table>
</body>
</html>
?>
$username = "";
$password = "";
$database = "";
mysql_connect(localhost, $username, $password);
mysql_select_db($database) or die("Unable to select database");
// geen @ gebruiken!
$query = "
SELECT r.id, r.score, r.percent, r.datum, r.start, r.einde, r.duur, u.naam
FROM rivieren r, users u
WHERE r.speler = u.inlog
ORDER BY r.id ASC";
$result = mysql_query($query);
?><html>
<head>
<title>Mag je zelf verzinnen</title>
<meta charset="utf-8">
<!-- CSS goes in the document HEAD or added to your external stylesheet -->
<style type="text/css">
table.hovertable {
font-family: verdana, arial, sans-serif;
font-size: 11px;
color: #333333;
border-width: 1px;
border-color: #999999;
border-collapse: collapse;
}
table.hovertable th {
background-color: #c3dde0;
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
table.hovertable tr {
background-color: #d4e3e5;
}
table.hovertable td {
border-width: 1px;
padding: 8px;
border-style: solid;
border-color: #a9c6c9;
}
table.hovertable td:hover
{
background-color: #ff6;
}
</style>
</head>
<body>
<table class="hovertable" >
<tr>
<th>Id</th>
<th>Naam</th>
<th>Score </th>
<th>percent</th>
<th>datum</th>
<th>Start</th>
<th>Einde</th>
<th>duur</th>
</tr>
<?php
while ($data = mysql_fetch_assoc($result))
{
echo '
<tr>
<td >' . $data['id'] . '</td>
<td >' . $data['naam'] . '</td>
<td >' . $data['score'] . '</td>
<td >' . $data['percent'] . '</td>
<td >' . $data['datum'] . '</td>
<td >' . $data['btijd'] . '</td>
<td >' . $data['etijd'] . '</td>
<td >' . $data['crono'] . '</td>
</tr>';
}
?>
</table>
</body>
</html>
?>
Wat verandert:
1) inspringen
2) php-bovenaan
3) <title> is verplicht in de <head>
4) gebruik van mysql_fetch_assoc
5) query verbeterd (leesbaarder + beter): kan zijn dat ik daar een verkeerde kolomnaam gebruik
6) html verbeterd: geen <font>
7) Geen javascript gebruiken voor de hover: daar is css voor!
8) $num en mysql_num_rows() heb je niet nodig: gebruik een while.
9) De CSS kan je beter extern plaatsen en dan linken met <link...>
10) De database-verbinding kan je beter extern plaatsen en includen met include().
11) ... kijk zelf even.
Gewijzigd op 17/03/2013 19:52:36 door Eddy E
Ik had direct je stukje tekst geprobeerd maar kreeg volgende error :
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /public_html/watchrivieren2.php on line 67
Lijn 67 is deze :
Gewijzigd op 18/03/2013 07:48:41 door Jos Verstraeten
dat betekent in de meeste gevallen dat je query niet lekker loopt.
Or die (zoals op regel 7) is geen mooie foutafhandeling, maar laat je wel weten als een query is mislukt.
En wat moet ik dan precies doen om het werkende te maken?
De query in Eddy's voorbeeld levert een 'unknown column' fout op, even de juiste kolomnamen invullen.
Dan, om op je oorspronkelijke vraag terug te komen, voeg in de stylesheet een class toe voor de slechte scores:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
.badscore {
color: red;
}
<?php
//ik gebruik de ternary if:
//$z = ($x < $y) ? $x : $y;
//if ($x < $y) {$z = $x;} else {$z = $y;}
//is hetzelfde
while ($data = mysql_fetch_assoc($result))
{
echo '
<tr>
<td >' . $data['id'] . '</td>
<td >' . $data['naam'] . '</td>
<td' . (($data['percent'] < 50) ? ' class="badscore"' : '') .
'>' . $data['score'] . '</td>
<td' . (($data['percent'] < 50) ? ' class="badscore"' : '') .
'>' . $data['percent'] . '</td>
<td >' . $data['datum'] . '</td>
<td >' . $data['btijd'] . '</td>
<td >' . $data['etijd'] . '</td>
<td >' . $data['crono'] . '</td>
</tr>';
}
?>
color: red;
}
<?php
//ik gebruik de ternary if:
//$z = ($x < $y) ? $x : $y;
//if ($x < $y) {$z = $x;} else {$z = $y;}
//is hetzelfde
while ($data = mysql_fetch_assoc($result))
{
echo '
<tr>
<td >' . $data['id'] . '</td>
<td >' . $data['naam'] . '</td>
<td' . (($data['percent'] < 50) ? ' class="badscore"' : '') .
'>' . $data['score'] . '</td>
<td' . (($data['percent'] < 50) ? ' class="badscore"' : '') .
'>' . $data['percent'] . '</td>
<td >' . $data['datum'] . '</td>
<td >' . $data['btijd'] . '</td>
<td >' . $data['etijd'] . '</td>
<td >' . $data['crono'] . '</td>
</tr>';
}
?>
Gewijzigd op 19/03/2013 08:40:25 door Ger van Steenderen
Code (php)
Maar als ik dit doe dan komen bovenaan alle cijfers in het rood en dat is niet de bedoeling.
Enig idee hoe ik dit op los ?
Maar iets anders, kan jij mij uitleggen waarom je eerst de gegevens in variabele zet, en dan die variabele echoed terwijl je dat gewoon rechtstreeks kan doen?
Toevoeging op 19/03/2013 18:36:48:
En dat $f6 niets zegt. Gebruik dan tenminste nog iets als $btijd of zo.
Hoe kan ik dat dat dan in één keer doen?
Het is een beetje zot dat ik vanuit Brussel via Rome naar Amsterdam ga terwijl het ook direct kan.
Alvast bedankt!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
<tr onmouseover="this.style.backgroundColor='#ffff66';" onmouseout="this.style.backgroundColor='#d4e3e5';">
<td >[code]<?php echo mysql_result($result,$i,"id"); ?></td>
<td><?php echo mysql_result($result,$i,"naam"); ?></td>
<td><?php echo mysql_result($result,$i,"score"); ?></td>
<td' . ((mysql_result($result,$i,"percent"); < 50) ? ' class="badscore"' : '') .'>' . mysql_result($result,$i,"percent"); . '</td>
<td><?php echo mysql_result($result,$i,"datum"); ?></td>
<td><?php echo mysql_result($result,$i,"btijd"); ?></td>
<td><?php echo mysql_result($result,$i,"etijd"); ?></td>
<td><?php echo mysql_result($result,$i,"crono"); ?></td>
</tr>
?>
<tr onmouseover="this.style.backgroundColor='#ffff66';" onmouseout="this.style.backgroundColor='#d4e3e5';">
<td >[code]<?php echo mysql_result($result,$i,"id"); ?></td>
<td><?php echo mysql_result($result,$i,"naam"); ?></td>
<td><?php echo mysql_result($result,$i,"score"); ?></td>
<td' . ((mysql_result($result,$i,"percent"); < 50) ? ' class="badscore"' : '') .'>' . mysql_result($result,$i,"percent"); . '</td>
<td><?php echo mysql_result($result,$i,"datum"); ?></td>
<td><?php echo mysql_result($result,$i,"btijd"); ?></td>
<td><?php echo mysql_result($result,$i,"etijd"); ?></td>
<td><?php echo mysql_result($result,$i,"crono"); ?></td>
</tr>
?>
Nu is het zo maar het is vreemd want als je deze pagina dan probeert dan verschijnen bovenaan ALLE percentages in het rood. (ze worden niet in de tabel gedisplayed) en onderaan staat wel de tabel zonder de percentages erin (die staan bovenaan in het rood zoals ik eerder al zei).