array maken voor een query
Nu dacht ik dat dit wel met een array zou moeten kunnen.
Maar hij voert hem nu maar 1 keer uit, namelijk de laatste. Wat doe ik fout
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$aVersies = array('1', '2', '3');
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry ="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
}
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
echo $sVersies.$qry;
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry ="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
}
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
echo $sVersies.$qry;
Om het een beetje overzichtelijk te houden is dit maar maar een klein deel van de code.
Zo te zien sluit het haakje op regel 14 het haakje van regel 3. Oftewel $qry wordt eerst een paar keer overschreven in de foreach loop en dan..... wordt de laatste uitgevoerd erbuiten. Ik denk dat je gewoon die query call binnen de foreach loop moet zetten.
Ik heb wel de uitkomst van de query
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
SELECT bk_boekingen_kenmerk, bk_boekingen_naam, bk_boekingen_soort, bk_boekingen_datum, bk_locatie_naam
FROM bk_boekingen_versie1 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
UNION
(SELECT bk_boekingen_kenmerk, bk_boekingen_naam, bk_boekingen_soort, bk_boekingen_datum, bk_locatie_naam
FROM bk_boekingen_versie2 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
UNION
(SELECT bk_boekingen_kenmerk, bk_boekingen_naam, bk_boekingen_soort, bk_boekingen_datum, bk_locatie_naam
FROM bk_boekingen_versie3 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
ORDER BY bk_boekingen_datum DESC
FROM bk_boekingen_versie1 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
UNION
(SELECT bk_boekingen_kenmerk, bk_boekingen_naam, bk_boekingen_soort, bk_boekingen_datum, bk_locatie_naam
FROM bk_boekingen_versie2 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
UNION
(SELECT bk_boekingen_kenmerk, bk_boekingen_naam, bk_boekingen_soort, bk_boekingen_datum, bk_locatie_naam
FROM bk_boekingen_versie3 bk
LEFT JOIN bk_locatie loc ON bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE bk.bk_boekingen_datum<'1398895200' )
ORDER BY bk_boekingen_datum DESC
Gewijzigd op 01/05/2014 19:53:36 door J C
Wat is eigenlijk het verschil tussen die 3 tabellen (buiten de naam)?
Ik ben inmiddels wel achter het probleem.
$qry overschrijft zichzelf steeds.
Ik heb nu de $qry =''; buiten de foreach gezet en nu werkt het wel.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$qry ='';
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
}
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
}
Voor de mensen die heel nieuwsgierig zijn geworden over het geheel.
Dit is de complete query.
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
117
118
119
120
121
122
123
124
125
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
117
118
119
120
121
122
123
124
125
$qry ='';
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']) || isset($_GET['invoerpersnr']))
{
$qry .="
LEFT JOIN
bk_locatie loc
ON
bk.bk_boekingen_kenmerk=pers.bk_personeel_boeking_id";
}
$qry .="
LEFT JOIN
bk_locatie loc
ON
bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE
";
//datum bepalen
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 1)
{
$qry .="
bk.bk_boekingen_datum>=' ".$vandaag." '
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 2)
{
$qry .="
bk.bk_boekingen_datum<' ".$vandaag." '
AND
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 3)
{
$qry .="
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status = 20";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
bk.bk_boekingen_datum<'".$vandaag."'";
}
}
// kijken of het om een invoerpersoon gaat
if(isset($_GET['invoerpersnr']))
{
$qry .="
AND
bk_boekingen_aannemer_id='".$_GET['invoerpersnr']."'";
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
AND
bk_personeel_mw_id='".$_GET['persnr']."'";
}
$qry .="
)";
if($sVersies!=$laatsteversie)
{
$qry .="
UNION
";
}
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
GROUP BY
bk_boekingen_kenmerk";
}
$qry .="
ORDER BY
bk_boekingen_datum";
// Hoe gaan we sorteren?
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 2)
{
$qry .="
DESC";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
DESC";
}
else
{
$qry .="
ASC";
}
}
//dat is hem dan
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
echo $qry;
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']) || isset($_GET['invoerpersnr']))
{
$qry .="
LEFT JOIN
bk_locatie loc
ON
bk.bk_boekingen_kenmerk=pers.bk_personeel_boeking_id";
}
$qry .="
LEFT JOIN
bk_locatie loc
ON
bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE
";
//datum bepalen
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 1)
{
$qry .="
bk.bk_boekingen_datum>=' ".$vandaag." '
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 2)
{
$qry .="
bk.bk_boekingen_datum<' ".$vandaag." '
AND
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 3)
{
$qry .="
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status = 20";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
bk.bk_boekingen_datum<'".$vandaag."'";
}
}
// kijken of het om een invoerpersoon gaat
if(isset($_GET['invoerpersnr']))
{
$qry .="
AND
bk_boekingen_aannemer_id='".$_GET['invoerpersnr']."'";
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
AND
bk_personeel_mw_id='".$_GET['persnr']."'";
}
$qry .="
)";
if($sVersies!=$laatsteversie)
{
$qry .="
UNION
";
}
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
GROUP BY
bk_boekingen_kenmerk";
}
$qry .="
ORDER BY
bk_boekingen_datum";
// Hoe gaan we sorteren?
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 2)
{
$qry .="
DESC";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
DESC";
}
else
{
$qry .="
ASC";
}
}
//dat is hem dan
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
echo $qry;
Als je door de left join mogelijk te veel records krijgt, dan moet he dat oplossen door bjj die join aan re geven welkrecord je wilt hebben.
Met foutmelding ondrrdrukking lijkt he foute query een juist antwoord te geven, maar is dat wel zo?
Http://wiki.pfz.nl/group-by
Dus wellicht klopt het nu wel
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
117
118
119
120
121
122
123
124
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
117
118
119
120
121
122
123
124
$qry ='';
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']) || isset($_GET['invoerpersnr']))
{
$qry .="
JOIN
bk_personeel pers
ON
bk.bk_boekingen_kenmerk=pers.bk_personeel_boeking_id";
}
$qry .="
JOIN
bk_locatie loc
ON
bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE
";
//datum bepalen
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 1)
{
$qry .="
bk.bk_boekingen_datum>=' ".$vandaag." '
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 2)
{
$qry .="
bk.bk_boekingen_datum<' ".$vandaag." '
AND
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 3)
{
$qry .="
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status = 20";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
bk.bk_boekingen_datum<'".$vandaag."'";
}
}
// kijken of het om een invoerpersoon gaat
if(isset($_GET['invoerpersnr']))
{
$qry .="
AND
bk_boekingen_aannemer_id='".$_GET['invoerpersnr']."'";
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
AND
bk_personeel_mw_id='".$_GET['persnr']."'";
}
$qry .="
)";
if($sVersies!=$laatsteversie)
{
$qry .="
UNION
";
}
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
GROUP BY
bk_boekingen_kenmerk";
}
$qry .="
ORDER BY
bk_boekingen_datum";
// Hoe gaan we sorteren?
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 2)
{
$qry .="
DESC";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
DESC";
}
else
{
$qry .="
ASC";
}
}
//dat is hem dan
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
$aVersies = array('1', '2', '3');
$laatsteversie = '3';
foreach($aVersies as $sVersies)
{
//Daar gaan we dan
$qry .="
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
bk_boekingen_versie".$sVersies." bk";
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']) || isset($_GET['invoerpersnr']))
{
$qry .="
JOIN
bk_personeel pers
ON
bk.bk_boekingen_kenmerk=pers.bk_personeel_boeking_id";
}
$qry .="
JOIN
bk_locatie loc
ON
bk.bk_boekingen_locatie_id=loc.bk_locatie_id
WHERE
";
//datum bepalen
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 1)
{
$qry .="
bk.bk_boekingen_datum>=' ".$vandaag." '
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 2)
{
$qry .="
bk.bk_boekingen_datum<' ".$vandaag." '
AND
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status != 20";
}
elseif($overzicht['selectie'] == 3)
{
$qry .="
bk.bk_boekingen_datum>' ".$jaar."'
AND
bk.bk_boekingen_status = 20";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
bk.bk_boekingen_datum<'".$vandaag."'";
}
}
// kijken of het om een invoerpersoon gaat
if(isset($_GET['invoerpersnr']))
{
$qry .="
AND
bk_boekingen_aannemer_id='".$_GET['invoerpersnr']."'";
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
AND
bk_personeel_mw_id='".$_GET['persnr']."'";
}
$qry .="
)";
if($sVersies!=$laatsteversie)
{
$qry .="
UNION
";
}
}
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
GROUP BY
bk_boekingen_kenmerk";
}
$qry .="
ORDER BY
bk_boekingen_datum";
// Hoe gaan we sorteren?
if($_GET['pagina'] == "boekingen")
{
if($overzicht['selectie'] == 2)
{
$qry .="
DESC";
}
elseif(isset($_GET['do']) && $_GET['do'] == "geschiedenis")
{
$qry .="
DESC";
}
else
{
$qry .="
ASC";
}
}
//dat is hem dan
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}