array maken voor een query

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

J C

J C

01/05/2014 19:43:41
Quote Anchor link
Ik wil een query 3 laten herhalen.

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)
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
$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;


Om het een beetje overzichtelijk te houden is dit maar maar een klein deel van de code.
 
PHP hulp

PHP hulp

28/03/2024 23:30:41
 
Erwin H

Erwin H

01/05/2014 19:47:21
Quote Anchor link
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.
 
J C

J C

01/05/2014 19:50:51
Quote Anchor link
Er komt alleen nog die union in.

Ik heb wel de uitkomst van de query

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
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
Gewijzigd op 01/05/2014 19:53:36 door J C
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

01/05/2014 19:58:35
Quote Anchor link
Wat is eigenlijk het verschil tussen die 3 tabellen (buiten de naam)?
 
J C

J C

01/05/2014 20:03:44
Quote Anchor link
Versie 1 is van 12 jaar geleden en is heel anders opgebouwd, net als versie 2. Versie 3 is de huidige versie.

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)
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
    $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";
}


Voor de mensen die heel nieuwsgierig zijn geworden over het geheel.
Dit is de complete query.

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
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;
 
Ivo P

Ivo P

02/05/2014 02:17:57
Quote Anchor link
Ik roep het geloof ik wat vaak, maar due group-by op regel 92 is fout.
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
 
J C

J C

02/05/2014 02:28:41
Quote Anchor link
Het script is inmiddels een beetje aangepast.
Dus wellicht klopt het nu wel

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
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());
    }
 



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.