query laat niks zien terwijl er wel data is (ook geen error)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Richard Duinmayer

Richard Duinmayer

17/03/2009 14:55:00
Quote Anchor link
Ik heb onderstaande query inclusief scriptje echter komt er geen resultaat bij de één na laatste IF terwijl er wel data in de database zit

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
<?php
// query's
$sql = "SELECT
          GROUP_CONCAT(
            CONCAT(
              medewerkers.voornaam,
              ' ',
              medewerkers.achternaam
            )
          ),
          medewerkers.id,
          medewerkers.kantoornummer_id,
          beschikbaarheid.dag
        FROM
          medewerkers,
          beschikbaarheid
        WHERE
          medewerkers.id = beschikbaarheid.medewerker_id
        GROUP BY
          medewerkers.id, beschikbaarheid.dag, medewerkers.voornaam, medewerkers.achternaam, medewerkers.kantoornummer_id
        ORDER BY
          RAND()"
;
                                            
if(!$result = mysql_query($sql))
{

    echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens';
    echo ': ' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql . '</pre>)';
    }

    elseif(mysql_num_rows($result) < 1)
    {

        echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens.';
        echo 'Het aantal rijen dat opgehaald is '.mysql_num_rows().' terwijl er 1 rij was verwacht. (<pre>' . $sql . '</pre>)';
        }

        else
        {    
             $titel = 'Avisi Afwasrooster<br/>';
            $subtitel = 'Een schoon kopje doet wonderen!<br/>';    
             echo $titel;
            echo $subtitel;        
             echo '<table class="stats2" cellspacing="0">' . "\n\t";
             echo '<tr>' . "\n\t\t" . '<td class="hed" colspan="5">Afwasrooster van ' . $_POST['vandate'] . ' tot ' . $_POST['totdate'] . ' </td>' . "\n\t" . '</tr>' . "\n\t";
            
            //lege variabele voor vergelijk maken
             $last_id = '';            
            $medewerkers_laatst_gebruikt = array();    
                    
            
            foreach($werkdagen as $dag)
            {

                $data = mysql_fetch_array($result);
                
                 if ($data != 0) // als er data uit de query komt
                {
                    echo '<tr>'. "\n\t\t";
                     echo '<td>';
                                             
                     if ($dag['dagnaam'] == 'Mon')
                    {

                        echo 'Maandag' . '&nbsp;';
                    }

                        elseif ($dag['dagnaam'] == 'Tue')
                        {

                            echo 'Dinsdag' . '&nbsp;';
                        }

                            elseif ($dag['dagnaam'] == 'Wed')
                            {

                                echo 'Woensdag' . '&nbsp;';
                            }

                                elseif ($dag['dagnaam'] == 'Thu')
                                {

                                    echo 'Donderdag' . '&nbsp;';
                                }

                                    else
                                    {
                                        echo 'Vrijdag' . '&nbsp;';
                                    }
                                                
                        echo '</td>'. "\n\t\t";                                                     
                         echo '<td>';
                           echo $dag['dag']. '-' .$dag['maand']. '-' .$dag['jaar'] . '&nbsp;';
                        echo '</td>'. "\n\t\t";              
                        echo '<td>';                                           
    
                         if ($dag['dagnaam'] == 'Mon' AND !in_array($data['id'], $medewerkers_laatst_gebruikt) AND $data['dag']== 'ma' )
                        {

                            echo $data['id'] . ' ' .$data['medewerkers.voornaam'] . ' ' .  $data['medewerkers.achternaam'];
                            
                            if(count($medewerkers_laatst_gebruikt) <= 10) // 10 elementen toegestaan + 1 (laatst gebruikte id)
                             {
                                $medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
                             }
                            else
                            {
                                 array_splice($medewerkers_laatst_gebruikt, 0,2); // Bij 11 of meer worden er 2 gesliced, min 9 en max 11.
                            }                                
                        }

?>
 
PHP hulp

PHP hulp

22/12/2024 09:05:49
 
Winston Smith

Winston Smith

17/03/2009 15:17:00
Quote Anchor link
Misschien moet je eens kijken naar switch()
 
Kees Schepers

kees Schepers

17/03/2009 15:21:00
Quote Anchor link
Ik zou even kijken wat de query doet in PHPMyAdmin of in de MySQL Query Browser (http://dev.mysql.com/get/Downloads/MySQLGUITools/mysql-gui-tools-5.0-r17-win32.msi/from/pick)

Voert hij daar wel uit? En zoja krijg je resultaat?
 
Richard Duinmayer

Richard Duinmayer

17/03/2009 15:22:00
Quote Anchor link
Switch doet toch in principe hetzelfde als een aantal if's en elseif's?

Daarmee komt er alsnog geen data uit de database..


@Kees,
Als ik dat doe krijg ik een lijst van alle medewerkers, maar met de voornaam en achternaam gegroepeerd... ik denk dat dat het probleem is.

Nu mijn vervolg vraag hoe geef ik een gegroepeerde (concat) naam weer? $medewerkers.voornaam, ' ', medewerkers.achternaam oid?
Gewijzigd op 01/01/1970 01:00:00 door Richard Duinmayer
 
Richard Duinmayer

Richard Duinmayer

17/03/2009 16:20:00
Quote Anchor link
Ik heb de contact weggehaald en nu werkt hij bijna goed:

Ik heb het nu zoals hieronder:

Echter één probleempje, er wordt heel vaak niks getoond in de html tabel op het scherm. Terwijl er genoeg medewerkers in de datbase aanwezig zijn om de overige dagen ook op te vullen.

Dinsdag 17-03-2009
Woensdag 18-03-2009
Donderdag 19-03-2009
Vrijdag 20-03-2009

Maandag 23-03-2009
Dinsdag 24-03-2009 101 medewerker a
Woensdag 25-03-2009
Donderdag 26-03-2009
Vrijdag 27-03-2009 100 medewerker b

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
<?php
                         if ($dag['dagnaam'] == 'Mon' AND !in_array($data['id'], $medewerkers_laatst_gebruikt) AND $data['dag']== 'ma' )
                        {

                            echo $data['id'] . ' ' .$data['voornaam'] . ' ' .  $data['achternaam'];
                          
                            if(count($medewerkers_laatst_gebruikt) <= 10) // 10 elementen toegestaan + 1 (laatst gebruikte id)
                             {
                                $medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
                             }
                            else
                            {
                                 array_splice($medewerkers_laatst_gebruikt, 0,2); // Bij 11 of meer worden er 2 gesliced, min 9 en max 11.
                            }                              
                        }
  
                                      
                         elseif ($dag['dagnaam'] == 'Tue' AND !in_array($data['id'], $medewerkers_laatst_gebruikt) AND $data['dag']== 'di' )
                        {

                            echo $data['id'] . ' ' .$data['voornaam'] . ' ' .  $data['achternaam'];
                          
                            if(count($medewerkers_laatst_gebruikt) <= 10) // 10 elementen toegestaan + 1 (laatst gebruikte id)
                             {
                                $medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
                             }
                            else
                            {
                                 array_splice($medewerkers_laatst_gebruikt, 0,2); // Bij 11 of meer worden er 2 gesliced, min 9 en max 11.
                            }                              
                        }

                         elseif ($dag['dagnaam'] == 'Wed' AND !in_array($data['id'], $medewerkers_laatst_gebruikt) AND $data['dag']== 'wo' )
                        {

                            echo $data['id'] . ' ' .$data['voornaam'] . ' ' .  $data['achternaam'];
                          
                            if(count($medewerkers_laatst_gebruikt) <= 10) // 10 elementen toegestaan + 1 (laatst gebruikte id)
                             {
                                $medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
                             }
                            else
                            {
                                 array_splice($medewerkers_laatst_gebruikt, 0,2); // Bij 11 of meer worden er 2 gesliced, min 9 en max 11.
                            }                              
                        }

                         elseif ($dag['dagnaam'] == 'Thu' AND !in_array($data['id'], $medewerkers_laatst_gebruikt) AND $data['dag']== 'do' )
                        {

                            echo $data['id'] . ' ' .$data['voornaam'] . ' ' .  $data['achternaam'];
                          
                            if(count($medewerkers_laatst_gebruikt) <= 10) // 10 elementen toegestaan + 1 (laatst gebruikte id)
                             {
                                $medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
                             }
                            else
                            {
                                 array_splice($medewerkers_laatst_gebruikt, 0,2); // Bij 11 of meer worden er 2 gesliced, min 9 en max 11.
                            }                              
                        }

                         elseif ($dag['dagnaam'] == 'Fri' AND !in_array($data['id'], $medewerkers_laatst_gebruikt) AND $data['dag']== 'vr' )
                        {

                            echo $data['id'] . ' ' .$data['voornaam'] . ' ' .  $data['achternaam'];
                          
                            if(count($medewerkers_laatst_gebruikt) <= 10) // 10 elementen toegestaan + 1 (laatst gebruikte id)
                             {
                                $medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
                             }
                            else
                            {
                                 array_splice($medewerkers_laatst_gebruikt, 0,2); // Bij 11 of meer worden er 2 gesliced, min 9 en max 11.
                            }                              
                        }
                              
?>
 
Klaasjan Boven

Klaasjan Boven

17/03/2009 16:36:00
Quote Anchor link
$sql = "SELECT
GROUP_CONCAT(
CONCAT(
medewerkers.voornaam,
' ',
medewerkers.achternaam
)
) as naam,
medewerkers.id,
medewerkers.kantoornummer_id,
beschikbaarheid.dag
FROM
medewerkers,
beschikbaarheid

nu kun $data['naam'] gebruiken
 
Kees Schepers

kees Schepers

17/03/2009 17:08:00
Quote Anchor link
In je bovenste query selecteer je eerst een group_concat maar je geeft het geen alias, hoe wil je dat dan in PHP oproepen? Want medewerkers.voornaam selecteer je niet als apart veld.

Wat Mr. Kasper bedoelt, een switch zou je code een stuk overzichtelijker en korter maken :)
 
Winston Smith

Winston Smith

17/03/2009 23:13:00
Quote Anchor link
Quote:
Wat Mr. Kasper bedoelt, een switch zou je code een stuk overzichtelijker en korter maken :)
Allereerst, mooi dat je me mr. noemt! >:)

Maar ik bedoelde inderdaad dat het gebruik van een switch je code overzichtelijker en korter maakt. Nu moest ik me onderhand een RSI-vinger scrollen om al je code te lezen. :)
 



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.