0 weergeven als er geen match is
Ik heb zowat van alles geprobeerd, voor zover ik met php kan werken maar het wil me niet lukken!
Mijn bedoeling is dus om per naam een aantal punten weer te geven die in de database staan.
Per naam heb je een verschillend aantal deelnemers, één persoon kan alle wedstrijden mee doen en een ander maar een paar wedstrijden.
Hoe ik het nu heb gedaan, krijg ik mooi de namen en de wedstrijden MAAR ik heb eigenlijk een probleem met de personen die maar een paar wedstrijden meedoen want , deze gegevens worden uiteraard maar weergegeven voor het aantal wedstrijden dat ze hebben mee gedaan.
Nu wil ik dat bij bv wedstrijd 1 een 0 staat als die persoon toen niet heeft meegedaan
Ik hoop dat ik jullie hulp kan inschakelen want ik wordt er stilletjesaan een beetje gek van :-)
Dit hieronder is mijn gepruts
Hier is een link zodat je het ook kan zien
Achter de naam staat de hoeveelste wedstrijd de persoon voor de eerste keer mee heeft gedaan en achter de vetgedrukte cijfers staat de plaats waar dit eigenlijk zou moeten komen te staan
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
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
<?php
$wedtype = 2; // wedstrijdtype opgeven -> 2 = vrije wedstrijden!
//
$main .="<hr />";
$main .="<table width=\"750\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<th scope=\"col\">Naam & voornaam</th>\n";
$sql1 = mysql_query ("SELECT * FROM wedstrijdkalender WHERE wedstrijdtypeID = ".$wedtype." GROUP BY hoeveelsteID ASC" ) or die (mysql_error());
while ($dag = mysql_fetch_assoc($sql1)){// het aantal wedstrijden ophalen
$main .="<th scope=\"col\"><a href=\"http://www.rietvissers.be/hengelsport/index.php?action=".$dag['maandID']."&dag=".$dag['dag']."\">".$dag['hoeveelsteID']."é</a></th>\n"; }
$query = mysql_query("SELECT count(*) FROM wedstrijdkalender WHERE wedstrijdtypeID = ".$wedtype."");
$aantal .= mysql_result($query, 0 ,0);
global $aantal;
$main .="<th scope=\"col\">Totaal</th>\n </tr>\n";
$sqlid =mysql_query ("SELECT *
FROM vissers s
RIGHT JOIN wedstrijduitslagen wu ON (wu.visserID = s.visserID)
LEFT JOIN wedstrijdkalender wk ON (wu.wedstrijdID = wk.wedstrijdID)
WHERE wk.wedstrijdtypeID = 2
GROUP BY wu.visserID ORDER BY wu.plaats, s.visserID, wk.wedstrijdID
") or die(mysql_error());
while ($visID = mysql_fetch_array ($sqlid)) {
$main .="<tr>";
$main .="<td>".$visID["achternaam"]." ".$visID["voornaam"]."| ".$visID["hoeveelsteID"]."</td>";
$sqlpunten =mysql_query ("SELECT *
FROM wedstrijduitslagen wu
LEFT JOIN wedstrijdkalender wk ON (wu.wedstrijdID = wk.wedstrijdID)
WHERE wk.wedstrijdtypeID = 2 AND wu.visserID = ".$visID["visserID"]."
ORDER BY wu.visserID, wk.wedstrijdID
") or die(mysql_error());
while($punten = mysql_fetch_array($sqlpunten)){
$main .="<td><strong>".$punten['plaats']." </strong>".$punten['hoeveelsteID']."</td>";
}
$main .="</tr>\n";
}
$main .="
</table>";
?>
$wedtype = 2; // wedstrijdtype opgeven -> 2 = vrije wedstrijden!
//
$main .="<hr />";
$main .="<table width=\"750\" border=\"1\" cellspacing=\"0\" cellpadding=\"0\">
<tr>
<th scope=\"col\">Naam & voornaam</th>\n";
$sql1 = mysql_query ("SELECT * FROM wedstrijdkalender WHERE wedstrijdtypeID = ".$wedtype." GROUP BY hoeveelsteID ASC" ) or die (mysql_error());
while ($dag = mysql_fetch_assoc($sql1)){// het aantal wedstrijden ophalen
$main .="<th scope=\"col\"><a href=\"http://www.rietvissers.be/hengelsport/index.php?action=".$dag['maandID']."&dag=".$dag['dag']."\">".$dag['hoeveelsteID']."é</a></th>\n"; }
$query = mysql_query("SELECT count(*) FROM wedstrijdkalender WHERE wedstrijdtypeID = ".$wedtype."");
$aantal .= mysql_result($query, 0 ,0);
global $aantal;
$main .="<th scope=\"col\">Totaal</th>\n </tr>\n";
$sqlid =mysql_query ("SELECT *
FROM vissers s
RIGHT JOIN wedstrijduitslagen wu ON (wu.visserID = s.visserID)
LEFT JOIN wedstrijdkalender wk ON (wu.wedstrijdID = wk.wedstrijdID)
WHERE wk.wedstrijdtypeID = 2
GROUP BY wu.visserID ORDER BY wu.plaats, s.visserID, wk.wedstrijdID
") or die(mysql_error());
while ($visID = mysql_fetch_array ($sqlid)) {
$main .="<tr>";
$main .="<td>".$visID["achternaam"]." ".$visID["voornaam"]."| ".$visID["hoeveelsteID"]."</td>";
$sqlpunten =mysql_query ("SELECT *
FROM wedstrijduitslagen wu
LEFT JOIN wedstrijdkalender wk ON (wu.wedstrijdID = wk.wedstrijdID)
WHERE wk.wedstrijdtypeID = 2 AND wu.visserID = ".$visID["visserID"]."
ORDER BY wu.visserID, wk.wedstrijdID
") or die(mysql_error());
while($punten = mysql_fetch_array($sqlpunten)){
$main .="<td><strong>".$punten['plaats']." </strong>".$punten['hoeveelsteID']."</td>";
}
$main .="</tr>\n";
}
$main .="
</table>";
?>
Gewijzigd op 01/01/1970 01:00:00 door DDM
De oplossing is een koppeltabel wedstrijden_deelnemers waarin je het id van de wedstrijd en het id van de deelnemer als record opslaat:
tabel: wedstrijden_deelnemers
wedstrijd_id INT
deelnemer_id INT
beide velden zijn foreign keys naar de respectievelijke tabellen. Verder dwing je af dat de combinatie van beide id's uniek is met een UNIQUE constraint.
Zodra je datamodel klopt, kun je alles wat je wilt uit de database laten rollen.
Wedstrijduitslagen
---------------------------------------------------------
CREATE TABLE `wedstrijduitslagen` (
`uitslagID` int(3) NOT NULL auto_increment,
`plaats` tinyint(4) NOT NULL,
`visserID` int(11) NOT NULL,
`koppelvisserID` int(11) NOT NULL,
`weeg1` varchar(7) NOT NULL,
`weeg2` varchar(7) NOT NULL,
`weeg3` varchar(7) NOT NULL,
`weeg4` varchar(7) default NULL,
`wedstrijdID` int(11) default NULL,
PRIMARY KEY (`uitslagID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 CHECKSUM=1 AUTO_INCREMENT=237
---------------------------------------------------------------------------
wedstrijdkalender
---------------------------------------------------------------------------
CREATE TABLE `wedstrijdkalender` (
`wedstrijdID` int(3) NOT NULL auto_increment,
`dag` int(2) NOT NULL,
`weekdagID` int(1) NOT NULL,
`maandID` int(2) NOT NULL,
`hoeveelsteID` int(2) NOT NULL,
`wedstrijdtypeID` int(2) NOT NULL,
`legendeID` int(1) NOT NULL,
`urenID` int(1) NOT NULL,
PRIMARY KEY (`wedstrijdID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=95 ;
----------------------------------------------------------------------------
vissers
----------------------------------------------------------------------------
CREATE TABLE `vissers` (
`visserID` int(4) NOT NULL auto_increment,
`voornaam` varchar(20) NOT NULL,
`achternaam` varchar(20) NOT NULL,
`clublid` int(2) NOT NULL,
PRIMARY KEY (`visserID`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=74 ;
Quote:
`weeg1` varchar(7) NOT NULL,
`weeg2` varchar(7) NOT NULL,
`weeg3` varchar(7) NOT NULL,
`weeg4` varchar(7) default NULL,
`weeg2` varchar(7) NOT NULL,
`weeg3` varchar(7) NOT NULL,
`weeg4` varchar(7) default NULL,
wijzen eigenlijk altijd op een verkeerd datamodel. Als je nog niet al te ver bent met je script raad ik je aan om je eerst in normaliseren te verdiepen. En als je al wel heel ver bent, ook ;-)
ik heb soms in 1 wedstrijd 4 weegbeurten per persson dat heeft meegedaan, ik moet alle weegbeurten kunnen weergeven bij de uitslagen,
Ik weet anders niet hoe ik dit moet doen , ik ben maar een beginnertje dat blijft proberen :-)
@DDM, google eens op 'normaliseren' of gebruik de zoekmachine hier.
Die weeg 1,2,3,4 zijn nooit hetzelfde van inhoud.
Maar het gaat eigenlijk om de 0 als er iemand niet heeft meegedaan en ook niet in de database staat, als een persoon niet mee doet, komen er ook geen gegevens in de database !
Maar om een klassement te kunnen weergeven moet ik een 0 kunnen tonen voor de wedstrijden die deze persoon niet heeft meegedaan.
Ik kan toch moeilijk alle namen in de database telkens per wedstrijd een 0 waarde geven,
Uiteindelijk zou het zo iets moeten worden zoals op de afbeelding te zien is
http://www.rietvissers.be/hengelsport/index.php?action=klassementen&type=club_klas
geen rows zijn, hè.
Dan zullen er waarschijnlijk