0 weergeven als er geen match is

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

DDM

DDM

01/05/2008 23:06:00
Quote Anchor link
Hallo,

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)
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
<?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 &amp; 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']."&eacute;</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"]."&nbsp;".$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
 
PHP hulp

PHP hulp

16/11/2024 15:56:49
 
Jan Koehoorn

Jan Koehoorn

01/05/2008 23:21:00
Quote Anchor link
Ik denk dat er een foutje in je datamodel geslopen is. Je hebt deelnemers en wedstrijden. 1 deelnemer kan aan meer dan 1 wedstrijd meedoen, en 1 wedstrijd heeft meer dan 1 deelnemer. Dat is een relatie type veel op veel (N:M) en die mogen niet in een goed genormaliseerd datamodel.

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

DDM

01/05/2008 23:31:00
Quote Anchor link
Ik dacht dat ik het goed had met de onderstaande tabellen, maar dan is het nog niet juist ?

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 ;
 
Jan Koehoorn

Jan Koehoorn

02/05/2008 09:44:00
Quote Anchor link
Veldnamen als:
Quote:
`weeg1` varchar(7) NOT 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 ;-)
 
DDM

DDM

02/05/2008 09:55:00
Quote Anchor link
hoe moet ik het anders maken ?
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 :-)
 
Jesper Diovo

Jesper Diovo

02/05/2008 10:12:00
Quote Anchor link
@DDM, google eens op 'normaliseren' of gebruik de zoekmachine hier.
 
DDM

DDM

02/05/2008 14:34:00
Quote Anchor link
ik dacht dat ik al had genormaliseerd,
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
 
Jesper Diovo

Jesper Diovo

02/05/2008 16:31:00
Quote Anchor link
Dan zullen er waarschijnlijk geen rows zijn, hè.
 



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.