Data presentatie

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jos Verstraeten

Jos Verstraeten

17/03/2013 18:47:24
Quote Anchor link
Ik ben al een tijdje bezig met data die ik verzameld heb in een data base te steken.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
?>

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
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php ?>
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
 
PHP hulp

PHP hulp

18/04/2024 08:48:58
 
Eddy E

Eddy E

17/03/2013 19:51:31
Quote Anchor link
Je bent bezig met CSS, maar gebruik nog wel <font>???
Daarnaast kopieer je onnodig variabelen.

Zelfde code, maar beter.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>
?>


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
 
Jos Verstraeten

Jos Verstraeten

18/03/2013 07:17:43
Quote Anchor link
Bedankt voor je antwoord!
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 :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php  while ($data = mysql_fetch_assoc($result))?>
Gewijzigd op 18/03/2013 07:48:41 door Jos Verstraeten
 
Teun Hesseling

Teun Hesseling

18/03/2013 08:17:20
Quote Anchor link
dat betekent in de meeste gevallen dat je query niet lekker loopt.
 
Obelix Idefix

Obelix Idefix

18/03/2013 12:59:20
Quote Anchor link
Je controleert niet of je query gelukt is (regel 14).
Or die (zoals op regel 7) is geen mooie foutafhandeling, maar laat je wel weten als een query is mislukt.
 
Jos Verstraeten

Jos Verstraeten

19/03/2013 07:39:37
Quote Anchor link
En wat moet ik dan precies doen om het werkende te maken?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/03/2013 08:35:03
Quote Anchor link
Niet zo maar klakkeloos dingen overnemen.
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)
PHP script in nieuw venster Selecteer het PHP script
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
.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>'
;
        }

?>
Gewijzigd op 19/03/2013 08:40:25 door Ger van Steenderen
 
Jos Verstraeten

Jos Verstraeten

19/03/2013 18:18:48
Quote Anchor link
Hey bedankt voor je reactie ik had er dan dit van gemaakt omdat je daar werkt met $data en aangezien ik het anders doe heb ik het een beetje moeten aanpassen naar :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
<td>[code]<?php echo $f1; ?>
</td>
<td><?php echo $f2; ?></td>
<td><?php echo $f3; ?></td>
<td' . (($f4 < 50) ? ' class="badscore"' : '') .'>'  <?php echo $f4; ?></td>
<td><?php echo $f5; ?></td>
<td><?php echo $f6; ?></td>
<td><?php echo $f7; ?></td>
<td><?php echo $f8; ?></td>

?>


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 ?
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

19/03/2013 18:33:05
Quote Anchor link
Ja, je vergeet wat PHP tags op regels 5.
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?
 
Eddy E

Eddy E

19/03/2013 18:36:42
Quote Anchor link
En dat $f6 niets zegt. Gebruik dan tenminste nog iets als $btijd of zo.

Toevoeging op 19/03/2013 18:36:48:

En dat $f6 niets zegt. Gebruik dan tenminste nog iets als $btijd of zo.
 
Jos Verstraeten

Jos Verstraeten

19/03/2013 20:21:25
Quote Anchor link
Ik ga eerlijk zijn ik programmeer liever in andere talen Ger.
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!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

20/03/2013 07:40:43
Quote Anchor link
Ik programmeer ook liever in andere talen (met name wartaal);-)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
//wat jij doet
$f2 = $data['naam'];
echo $f2;
// kan op 1 regel
echo $data['naam'];
?>
 
Jos Verstraeten

Jos Verstraeten

20/03/2013 16:10:30
Quote Anchor link
Hey Ger aangepast :)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>
?>

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).
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.