inhoud 2 tabellen in 1 overzicht weergeven
In het onderstaande voorbeeld hebik even hetzelfde tabel gebruikt met alleen een andere naam bij het tabel.
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
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
$qry = mysql_query("
SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie3
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10
ORDER BY
bk_boekingen_datum ASC");
$qry = mysql_query("
SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie2
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10
ORDER BY
bk_boekingen_datum ASC");
SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie3
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10
ORDER BY
bk_boekingen_datum ASC");
$qry = mysql_query("
SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie2
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10
ORDER BY
bk_boekingen_datum ASC");
En dat wil ik dan weergeven in 1 overzicht, waarbij ik alle inhoud wil weergeven gesorteerd op bk_boekingen_datum.
Ik hoef (denk ik) niet een complete oplossing, maar meer een duwtje in de goede richting.
Wat is absoluut niet wil ik de inhoud koppelen aan elkaar.
Gewijzigd op 01/05/2014 17:05:48 door J C
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
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
$qry = "
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie3)
UNION
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie2)
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10
ORDER BY
bk_boekingen_datum ASC)";
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
else
{
while($list = mysql_fetch_array($qry))
{}
}
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie3)
UNION
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie2)
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10
ORDER BY
bk_boekingen_datum ASC)";
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
else
{
while($list = mysql_fetch_array($qry))
{}
}
Nu even testen of dit ook zou werken.
Gewijzigd op 01/05/2014 17:27:36 door J C
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
(SELECT ....
FROM ...
WHERE...)
UNION
(SELECT ....
FROM ...
WHERE ...)
ORDER BY bk_boekingen_datum
FROM ...
WHERE...)
UNION
(SELECT ....
FROM ...
WHERE ...)
ORDER BY bk_boekingen_datum
Overigens, als je geen haakjes gebruikt, dan zal je laatste ORDER BY automatisch al alle records gebruiken, alleen omdat je die ORDER BY nu binnen de haakjes plaatst niet.
Ik doe toch iets fout, of mijn server ondersteunt Union niet.
Ik heb nu dit:
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
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
$qry = "
((SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie3
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10)
UNION
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie2
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10)
ORDER BY
bk_boekingen_datum ASC)";
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
else
{
while($list = mysql_fetch_array($qry))
{
$main .= '
<div class="homehalfcontainerrij" style="background:' . ($rijnummer++%2==0 ? "#FFF" : "#cccccc") . ';">
<div class="driekwarthalfcontainer"><a href="?pagina=boekingen&do=boeking-detail&kenmerk='.$list['bk_boekingen_kenmerk'].'">'.CutString($list['bk_boekingen_naam'],130).'</a></div>
<div class="kwarthalfcontainer">'.date("d-m-Y",$list['bk_boekingen_datum']).'</div>
</div>
';
}
}
((SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie3
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10)
UNION
(SELECT
bk_boekingen_kenmerk,
bk_boekingen_datum,
bk_boekingen_naam
FROM
bk_boekingen_versie2
WHERE
bk_boekingen_datum >='".$vandaag."'
AND
bk_boekingen_status=10)
ORDER BY
bk_boekingen_datum ASC)";
$sql = mysql_query($qry);
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
else
{
while($list = mysql_fetch_array($qry))
{
$main .= '
<div class="homehalfcontainerrij" style="background:' . ($rijnummer++%2==0 ? "#FFF" : "#cccccc") . ';">
<div class="driekwarthalfcontainer"><a href="?pagina=boekingen&do=boeking-detail&kenmerk='.$list['bk_boekingen_kenmerk'].'">'.CutString($list['bk_boekingen_naam'],130).'</a></div>
<div class="kwarthalfcontainer">'.date("d-m-Y",$list['bk_boekingen_datum']).'</div>
</div>
';
}
}
En krijg deze melding:
Er gaat iets mis in ( ((SELECT bk_boekingen_kenmerk, bk_boekingen_datum, bk_boekingen_naam FROM bk_boekingen_versie3 WHERE bk_boekingen_datum >='1398895200' AND bk_boekingen_status=10) UNION (SELECT bk_boekingen_kenmerk, bk_boekingen_datum, bk_boekingen_naam FROM bk_boekingen_versie2) WHERE bk_boekingen_datum >='1398895200' AND bk_boekingen_status=10 ORDER BY bk_boekingen_datum ASC))You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UNION (SELECT bk_boekingen_kenmerk, ' at line 11
Gewijzigd op 01/05/2014 17:36:38 door J C
Er staat een haakje teveel aan het begin van je query.
Die haakjes aan het begin en eind zijn in elk geval niet nodig. Misschien dat die ook de foutmelding opleveren.
Warning: mysql_fetch_array() expects parameter 1 to be resource, string given in /home/s010485/domains/jcsl.nl/public_html/medewerkers/paginas/home.php on line 42
De fout zit erin dat je je query string voert aan de fetch functie en niet het resultaat van de query. Dus niet $qry gebruiken, maar $sql op regel 32 hierboven.
while($list = mysql_fetch_array($qry))
moet natuurlijk
while($list = mysql_fetch_array($sql))
zijn.
Toevoeging op 01/05/2014 17:56:35:
De echte uitdaging gaat nu pas echt beginnen.
Voor mij tot nu toe de grootste qry die ik heb gemaakt.
Met deze query kan ik al onze boekingen oproepen, verdeeld op komende boekingen, afgelopen boekingen en gecancelde boekingen.
Maar een medewerker kan het ook zo selecteren dat het alleen de boekingen worden weergeven die hij heeft ingevoerd of juist waarbij hij staat in ingedeeld.
En dan wordt de truc nog om dat uit 3 tabellen te halen. (In de afgelopen 12 jaar is de opbouw van de tabellen 3 keer drastisch veranderd en niemand heeft tijd en zin om alles opnieuw in te voeren)
Als voorproefje:
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
$qry ="
SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
";
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
bk_personeel2,";
}
//
$qry .="
bk_boekingen bk
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_boekingen_kenmerk=bk_personeel_boeking_id
AND
bk_personeel_mw_id='".$_GET['persnr']."'
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
";
}
}
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
else
{
while($list = mysql_fetch_array($sql))
{
$sql = mysql_query($qry);
}
}
SELECT
bk_boekingen_kenmerk,
bk_boekingen_naam,
bk_boekingen_soort,
bk_boekingen_datum,
bk_locatie_naam
FROM
";
// kijken of het om een persoon in het algemeen gaat
if(isset($_GET['persnr']))
{
$qry .="
bk_personeel2,";
}
//
$qry .="
bk_boekingen bk
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_boekingen_kenmerk=bk_personeel_boeking_id
AND
bk_personeel_mw_id='".$_GET['persnr']."'
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
";
}
}
if($sql === false)
{
echo (" Er gaat iets mis in (".$qry .")".mysql_error());
}
else
{
while($list = mysql_fetch_array($sql))
{
$sql = mysql_query($qry);
}
}