Controle gelijke waarden
Iemand enig idee of een opzetje voor mij ?
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
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
<?php
echo '<h1>Overzicht van dvd\'s</h1>'.PHP_EOL;
$sql2 =mysql_query("SELECT dvd_id FROM uitgeleend WHERE datum_terug < datum_weg",$conn);
$data2 = mysql_fetch_array($sql2);
$sql =mysql_query("SELECT id, naam FROM dvd ORDER BY naam ASC",$conn);
if ( mysql_num_rows($sql) >= 1 ) {
$i = 0;
echo '<table border="0">'.PHP_EOL;
while ($data = mysql_fetch_array($sql))
{
$naam = stripslashes( $data['naam'] );
$i++;
echo '<tr>'.PHP_EOL;
echo '<td class="formleft">'.PHP_EOL;
echo $i.')'.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="formdata">'.PHP_EOL;
echo '<a href="'.dvd.'?p=detail&id='.$data['id'].'" title="Bekijk de details van '.$naam.'" class="formleft">'.$naam.' </a>'.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td>'.PHP_EOL;
if ($data['id'] == $data2['dvd_id']) {
echo'<img src="'.coreimg.'bad.jpg" alt="" />'.PHP_EOL;
} else {
echo'<img src="'.coreimg.'good.jpg" alt="" />'.PHP_EOL;
}
echo '</td>'.PHP_EOL;
echo '</tr>'.PHP_EOL;
}
echo '</table>'.PHP_EOL;
} else {
echo 'Er zijn hier geen dvd\'s gevonden.'.PHP_EOL;
}
?>
echo '<h1>Overzicht van dvd\'s</h1>'.PHP_EOL;
$sql2 =mysql_query("SELECT dvd_id FROM uitgeleend WHERE datum_terug < datum_weg",$conn);
$data2 = mysql_fetch_array($sql2);
$sql =mysql_query("SELECT id, naam FROM dvd ORDER BY naam ASC",$conn);
if ( mysql_num_rows($sql) >= 1 ) {
$i = 0;
echo '<table border="0">'.PHP_EOL;
while ($data = mysql_fetch_array($sql))
{
$naam = stripslashes( $data['naam'] );
$i++;
echo '<tr>'.PHP_EOL;
echo '<td class="formleft">'.PHP_EOL;
echo $i.')'.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="formdata">'.PHP_EOL;
echo '<a href="'.dvd.'?p=detail&id='.$data['id'].'" title="Bekijk de details van '.$naam.'" class="formleft">'.$naam.' </a>'.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td>'.PHP_EOL;
if ($data['id'] == $data2['dvd_id']) {
echo'<img src="'.coreimg.'bad.jpg" alt="" />'.PHP_EOL;
} else {
echo'<img src="'.coreimg.'good.jpg" alt="" />'.PHP_EOL;
}
echo '</td>'.PHP_EOL;
echo '</tr>'.PHP_EOL;
}
echo '</table>'.PHP_EOL;
} else {
echo 'Er zijn hier geen dvd\'s gevonden.'.PHP_EOL;
}
?>
dus je haalt maar 1 record op. Wat je nodig hebt, is alle records die aan je query voldoen.
Edit:
Als je datamodel goed is, zou het ook in 1 query moeten kunnen. Wat is de structuur van je tabellen?
Als je datamodel goed is, zou het ook in 1 query moeten kunnen. Wat is de structuur van je tabellen?
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
--
CREATE TABLE `acteurs` (
`id` smallint(4) unsigned NOT NULL auto_increment,
`voornaam` varchar(40) NOT NULL default '',
`achternaam` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `dvd` (
`id` smallint(3) unsigned NOT NULL auto_increment,
`naam` varchar(120) NOT NULL default '',
`foto` varchar(40) NOT NULL default '',
`omschrijving` text NOT NULL,
`regisseur_id` smallint(3) unsigned NOT NULL default '0',
`speelduur` smallint(3) unsigned NOT NULL default '0',
`jaar` year(4) NOT NULL default '0000',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `dvd_acteurs` (
`id` smallint(4) unsigned NOT NULL auto_increment,
`dvd_id` smallint(3) unsigned NOT NULL default '0',
`acteur_id` smallint(3) unsigned NOT NULL default '0',
`personagenaam` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `dvd_genres` (
`id` smallint(4) unsigned NOT NULL auto_increment,
`dvd_id` smallint(3) unsigned NOT NULL default '0',
`genre_id` smallint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `genres` (
`id` smallint(2) unsigned NOT NULL auto_increment,
`genre` varchar(25) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;
--
-- Gegevens worden uitgevoerd voor tabel `genres`
--
INSERT INTO `genres` VALUES (1, 'actie');
INSERT INTO `genres` VALUES (2, 'avontuur');
INSERT INTO `genres` VALUES (3, 'biografie');
INSERT INTO `genres` VALUES (4, 'documentaire');
INSERT INTO `genres` VALUES (5, 'drama');
INSERT INTO `genres` VALUES (6, 'familie');
INSERT INTO `genres` VALUES (7, 'fantasie');
INSERT INTO `genres` VALUES (8, 'geschiedenis');
INSERT INTO `genres` VALUES (9, 'horror');
INSERT INTO `genres` VALUES (10, 'komedie');
INSERT INTO `genres` VALUES (11, 'kortfilms');
INSERT INTO `genres` VALUES (12, 'misdaad');
INSERT INTO `genres` VALUES (13, 'muziek');
INSERT INTO `genres` VALUES (14, 'oorlog');
INSERT INTO `genres` VALUES (15, 'romantiek');
INSERT INTO `genres` VALUES (16, 'science fiction');
INSERT INTO `genres` VALUES (17, 'sport');
INSERT INTO `genres` VALUES (18, 'tekenfilm');
INSERT INTO `genres` VALUES (19, 'thriller');
INSERT INTO `genres` VALUES (20, 'western');
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel `leners`
--
CREATE TABLE `leners` (
`id` smallint(3) unsigned NOT NULL auto_increment,
`voornaam` varchar(40) NOT NULL default '',
`achternaam` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `regisseurs` (
`id` smallint(3) unsigned NOT NULL auto_increment,
`voornaam` varchar(40) NOT NULL default '',
`achternaam` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `status` (
`id` smallint(2) unsigned NOT NULL auto_increment,
`status` varchar(25) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `uitgeleend` (
`id` smallint(3) unsigned NOT NULL auto_increment,
`leners_id` smallint(3) unsigned NOT NULL default '0',
`dvd_id` smallint(3) unsigned NOT NULL default '0',
`datum_weg` date NOT NULL default '0000-00-00',
`datum_terug` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `acteurs` (
`id` smallint(4) unsigned NOT NULL auto_increment,
`voornaam` varchar(40) NOT NULL default '',
`achternaam` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `dvd` (
`id` smallint(3) unsigned NOT NULL auto_increment,
`naam` varchar(120) NOT NULL default '',
`foto` varchar(40) NOT NULL default '',
`omschrijving` text NOT NULL,
`regisseur_id` smallint(3) unsigned NOT NULL default '0',
`speelduur` smallint(3) unsigned NOT NULL default '0',
`jaar` year(4) NOT NULL default '0000',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `dvd_acteurs` (
`id` smallint(4) unsigned NOT NULL auto_increment,
`dvd_id` smallint(3) unsigned NOT NULL default '0',
`acteur_id` smallint(3) unsigned NOT NULL default '0',
`personagenaam` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `dvd_genres` (
`id` smallint(4) unsigned NOT NULL auto_increment,
`dvd_id` smallint(3) unsigned NOT NULL default '0',
`genre_id` smallint(3) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `genres` (
`id` smallint(2) unsigned NOT NULL auto_increment,
`genre` varchar(25) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=21 ;
--
-- Gegevens worden uitgevoerd voor tabel `genres`
--
INSERT INTO `genres` VALUES (1, 'actie');
INSERT INTO `genres` VALUES (2, 'avontuur');
INSERT INTO `genres` VALUES (3, 'biografie');
INSERT INTO `genres` VALUES (4, 'documentaire');
INSERT INTO `genres` VALUES (5, 'drama');
INSERT INTO `genres` VALUES (6, 'familie');
INSERT INTO `genres` VALUES (7, 'fantasie');
INSERT INTO `genres` VALUES (8, 'geschiedenis');
INSERT INTO `genres` VALUES (9, 'horror');
INSERT INTO `genres` VALUES (10, 'komedie');
INSERT INTO `genres` VALUES (11, 'kortfilms');
INSERT INTO `genres` VALUES (12, 'misdaad');
INSERT INTO `genres` VALUES (13, 'muziek');
INSERT INTO `genres` VALUES (14, 'oorlog');
INSERT INTO `genres` VALUES (15, 'romantiek');
INSERT INTO `genres` VALUES (16, 'science fiction');
INSERT INTO `genres` VALUES (17, 'sport');
INSERT INTO `genres` VALUES (18, 'tekenfilm');
INSERT INTO `genres` VALUES (19, 'thriller');
INSERT INTO `genres` VALUES (20, 'western');
-- --------------------------------------------------------
--
-- Tabel structuur voor tabel `leners`
--
CREATE TABLE `leners` (
`id` smallint(3) unsigned NOT NULL auto_increment,
`voornaam` varchar(40) NOT NULL default '',
`achternaam` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `regisseurs` (
`id` smallint(3) unsigned NOT NULL auto_increment,
`voornaam` varchar(40) NOT NULL default '',
`achternaam` varchar(40) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `status` (
`id` smallint(2) unsigned NOT NULL auto_increment,
`status` varchar(25) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
CREATE TABLE `uitgeleend` (
`id` smallint(3) unsigned NOT NULL auto_increment,
`leners_id` smallint(3) unsigned NOT NULL default '0',
`dvd_id` smallint(3) unsigned NOT NULL default '0',
`datum_weg` date NOT NULL default '0000-00-00',
`datum_terug` date NOT NULL default '0000-00-00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
--
Edit:
Alle gegevens in 1 query ophalen is geen probleem het probleem zit er bij in dat alle dvd.id opgehaald worden voor de lijst maar dat hij bij de uitgeleende dvd_id een ander icoontje moet zetten.
Mischien een handig weetje alleen de uitleen datum word ingevuld de retour datum bijft op 0 staan totdat hij terug is gebracht
Gewijzigd op 01/01/1970 01:00:00 door Red Crew
SELECT d.naam
FROM dvd AS d, uitgeleend AS u
WHERE d.id = u.dvd_id
AND CURDATE() BETWEEN u.datum_weg AND u.datum_terug
Mijn volgende vraag is eigenlijk, ik wil ALLE dvd's inhalen alleen bij de uitgeleende een ander icoontje als bij de anderen dus hoe markeer ik deze dan ?
Het hangt er van af hoe je het in je DB bijhoudt. Als een DVD uitgeleend wordt, vul je dan meteen datum_weg en datum_terug in? Of blijft datum_terug leeg tot de DVD terugkomt?
Edit:
Alle gegevens in 1 query ophalen is geen probleem het probleem zit er bij in dat alle dvd.id opgehaald worden voor de lijst maar dat hij bij de uitgeleende dvd_id een ander icoontje moet zetten.
Mischien een handig weetje alleen de uitleen datum word ingevuld en de retour datum bijft op 0 staan totdat hij terug is gebracht
op deze manier geeft hij alle dvd's weer die ooit zijn uitgeleend met een aanduiding van de terug gebrachte.
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
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
<?php
$sql =mysql_query("
SELECT d.id, d.naam,
CASE
WHEN u.datum_terug < u.datum_weg THEN 'true'
WHEN u.datum_terug >= u.datum_weg THEN 'false'
END
AS dvd_uitgeleend
FROM dvd AS d, uitgeleend AS u
WHERE d.id = u.dvd_id
",$conn);
if ( mysql_num_rows($sql) >= 1 ) {
$i = 0;
echo '<table border="0">'.PHP_EOL;
while ($data = mysql_fetch_array($sql))
{
$naam = stripslashes( $data['naam'] );
$uitgeleend = stripslashes( $data['dvd_uitgeleend']);
echo $uitgeleend;
$i++;
echo '<tr>'.PHP_EOL;
echo '<td class="formleft">'.PHP_EOL;
echo $i.')'.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="formdata">'.PHP_EOL;
echo '<a href="'.dvd.'?p=detail&id='.$data['id'].'" title="Bekijk de details van '.$naam.'" class="formleft">'.$naam.' </a>'.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td>'.PHP_EOL;
if ($data['dvd_uitgeleend'] == 'true') {
echo'<img src="'.coreimg.'bad.jpg" alt="" />'.PHP_EOL;
} else {
echo'<img src="'.coreimg.'good.jpg" alt="" />'.PHP_EOL;
}
echo '</td>'.PHP_EOL;
echo '</tr>'.PHP_EOL;
}
echo '</table>'.PHP_EOL;
} else {
echo 'Er zijn hier geen dvd\'s gevonden.'.PHP_EOL;
?>
}
$sql =mysql_query("
SELECT d.id, d.naam,
CASE
WHEN u.datum_terug < u.datum_weg THEN 'true'
WHEN u.datum_terug >= u.datum_weg THEN 'false'
END
AS dvd_uitgeleend
FROM dvd AS d, uitgeleend AS u
WHERE d.id = u.dvd_id
",$conn);
if ( mysql_num_rows($sql) >= 1 ) {
$i = 0;
echo '<table border="0">'.PHP_EOL;
while ($data = mysql_fetch_array($sql))
{
$naam = stripslashes( $data['naam'] );
$uitgeleend = stripslashes( $data['dvd_uitgeleend']);
echo $uitgeleend;
$i++;
echo '<tr>'.PHP_EOL;
echo '<td class="formleft">'.PHP_EOL;
echo $i.')'.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td class="formdata">'.PHP_EOL;
echo '<a href="'.dvd.'?p=detail&id='.$data['id'].'" title="Bekijk de details van '.$naam.'" class="formleft">'.$naam.' </a>'.PHP_EOL;
echo '</td>'.PHP_EOL;
echo '<td>'.PHP_EOL;
if ($data['dvd_uitgeleend'] == 'true') {
echo'<img src="'.coreimg.'bad.jpg" alt="" />'.PHP_EOL;
} else {
echo'<img src="'.coreimg.'good.jpg" alt="" />'.PHP_EOL;
}
echo '</td>'.PHP_EOL;
echo '</tr>'.PHP_EOL;
}
echo '</table>'.PHP_EOL;
} else {
echo 'Er zijn hier geen dvd\'s gevonden.'.PHP_EOL;
?>
}
Enig idee wat ik moet veranderen om alle namen uit de tabel dvd ipv uitgeleend weer te geven ?
edit: PHP tags vergeten, was onduidelijk
Gewijzigd op 01/01/1970 01:00:00 door Red Crew
Gewijzigd op 01/01/1970 01:00:00 door Dion
Deze query werd door Jelmer gemaakt
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$sql =mysql_query("
SELECT
dvd.id as id,
dvd.naam as naam,
COUNT(uitgeleend.id) as dvd_uitgeleend
FROM
dvd
LEFT JOIN
uitgeleend ON uitgeleend.dvd_id = dvd.id
AND
uitgeleend.datum_terug = '0000-00-00'
GROUP BY dvd.id
",$conn);
[/code]
$sql =mysql_query("
SELECT
dvd.id as id,
dvd.naam as naam,
COUNT(uitgeleend.id) as dvd_uitgeleend
FROM
dvd
LEFT JOIN
uitgeleend ON uitgeleend.dvd_id = dvd.id
AND
uitgeleend.datum_terug = '0000-00-00'
GROUP BY dvd.id
",$conn);
[/code]