datums weergeven in tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Frank Nietbelangrijk

Frank Nietbelangrijk

13/08/2013 18:00:09
Quote Anchor link
en waar komt dan die datum vandaan Davey? komt die uit de database of bereken je dat met php? laat even een klein stukje code zien aub
 
PHP hulp

PHP hulp

22/11/2024 18:21:28
 
Davey Mat

Davey Mat

13/08/2013 19:52:35
Quote Anchor link
Script is zelfde als die ik laatst heb gepost, zie:
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
<?php
define('INCLUDE_CHECK',true);

require 'inc/connect.php';

$query1="
SELECT
    m.id,
    m.voornaam,
    m.achternaam,
    d.check_date,
    IF(f.memberid IS NULL, '-', 'X') dayoff
FROM
    (SELECT
        @startdate + INTERVAL (@pos := @pos + 1) DAY check_date
    FROM
        members,
        (SELECT @pos := -1,
        @startdate := '2013-08-01') a
    LIMIT 31) d
CROSS JOIN members m
LEFT JOIN
    verlofaanvragen f
    ON m.id = f.memberid
    AND d.check_date BETWEEN f.datum1 AND f.datum2
ORDER BY m.voornaam, m.id, d.check_date"
;

$sqltitel = mysql_query($query1) or die(mysql_error());  
$member = 0; //dit is de pointer om bij te houden met welk lid we werken
$tr = '<tr>';
$tbody = ''; //voor de rijen van de tabel    
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>kalender</title>
<style>
table { border-collapse:collapse; }
td, th { border: 1px solid black; width:50px; text-align:center; }
</style>
</head>
<body>
<?php
echo '<h1><img src="/img/titel/Info.png" />Kalender</h1><hr>';
echo '<p>Kalender weergave van geaccepteerde verlofaanvragen</p>';
echo '<table border="1" cellpadding="5"><tr><th colspan="32">Augustus</th>';
while ($row = mysql_fetch_assoc($sqltitel)) {
    //controleer of het een ander lid is
    if ($row['id'] !== $member) {        
        $tbody .= $tr . '<td>' . $row['voornaam'] . ' ' . $row['achternaam'] . '</td>';
        $member = $row['id'];
        $tr = '</tr><tr>';
        $thead = '<tr><td>&nbsp;</td>'; //de head voor de titels
    }
    $thead .= '<td>' . $row['check_date'] . '</td>';
    $tbody .= '<td>' . $row['dayoff'] . '</td>';
}

echo $thead . '</tr>';
echo $tbody . '</tr>';    
echo '</table>';
?>

</body>
</html>

Dus via $row['check_date'] krijg ik nu de datums.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

13/08/2013 21:18:17
Quote Anchor link
Let op dat de checkdate een kolom is uit een derived table, je kan daar dus alle beschikbare datetime functies op uitvoeren (ook MySQL is nog wel eens lief voor de progammeurs)
 
Frank Nietbelangrijk

Frank Nietbelangrijk

13/08/2013 21:39:52
Quote Anchor link
Davey zie voor de mysql date functions bijvoorbeeld: http://www.w3schools.com/sql/func_date_format.asp

voorbeeldje dat de dag van de maand en de afgekorte naam van de dag van de week toont:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT DATE_FORMAT(NOW(),'%a %e') AS datetext



en met de query
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SET lc_time_names = 'nl_NL';
zet je hem om naar de nederlandse taal

in jouw query verweven:

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
SET lc_time_names = 'nl_NL';
SELECT
    m.id,
    m.voornaam,
    m.achternaam,
    DATE_FORMAT(d.check_date, '%a %e') AS datetext,
    IF(f.memberid IS NULL, '-', 'X') dayoff
FROM
    (SELECT
        @startdate + INTERVAL (@pos := @pos + 1) DAY check_date
    FROM
        members,
        (SELECT @pos := -1,
        @startdate := '2013-08-01') a
    LIMIT 31) d
CROSS JOIN members m
LEFT JOIN
    verlofaanvragen f
    ON m.id = f.memberid
    AND d.check_date BETWEEN f.datum1 AND f.datum2
ORDER BY m.voornaam, m.id, d.check_date";
Gewijzigd op 13/08/2013 21:48:45 door Frank Nietbelangrijk
 
Davey Mat

Davey Mat

13/08/2013 22:48:46
Quote Anchor link
Wist helemaal niet dat dat bestond! Bedankt voor de link Frank!

Als ik de query in phpmyadmin invoer krijg ik een veelbelovend resultaat, echter in php krijg ik de volgende error: 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 'SELECT m.id, m.voornaam, m.achternaam, DATE_FORMAT(d.check_dat' at line 2

----edit:
Als ik SET lc_time_names = 'nl_NL'; in de query hou staan krijg ik bovenstaande error.

Om dit op te lossen doe ik nu:
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
mysql_query("SET lc_time_names = 'nl_NL';");
$query1="
SELECT
    m.id,
    m.voornaam,
    m.achternaam,
    DATE_FORMAT(d.check_date, '%a %e') AS datetext,
    IF(f.memberid IS NULL, '-', 'X') dayoff
FROM
    (SELECT
        @startdate + INTERVAL (@pos := @pos + 1) DAY check_date
    FROM
        members,
        (SELECT @pos := -1,
        @startdate := '2013-08-01') a
    LIMIT 31) d
CROSS JOIN members m
LEFT JOIN
    verlofgeaccepteerd f
    ON m.id = f.memberid
    AND d.check_date BETWEEN f.datum1 AND f.datum2
ORDER BY m.voornaam, m.id, d.check_date";
//WHERE m.functie1 = 'Algemeen'
$sqltitel = mysql_query($query1) or die(mysql_error());


Is dit de juiste manier om dit aan te pakken? Of is er een betere manier?
In ieder geval heel veel dank zowel Frank als Ger voor de hulp! Heb veel bij geleerd en genoeg leesvoer om nog eens aandachtig door te nemen!:)
Gewijzigd op 13/08/2013 23:00:09 door Davey Mat
 
Frank Nietbelangrijk

Frank Nietbelangrijk

13/08/2013 23:18:49
Quote Anchor link
twee queries lijkt me prima
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

14/08/2013 10:38:10
Quote Anchor link
Eigenlijk kan je sowieso beter mysqli gebruiken, en daarmee kan je meerdere queries in één keer uitvoeren.
Lees meer ...
Gewijzigd op 14/08/2013 10:38:31 door Ger van Steenderen
 
Davey Mat

Davey Mat

05/09/2013 15:29:17
Quote Anchor link
Ik ben weer even aan het stoeien omdat ik de kalender wat overzichtelijker wil maken. Alle doordeweekse dagen hoeven namelijk niet getoond te worden.
Ik wil nu enkel alle vrijdagen, zaterdagen en zondagen van een maand tonen. Ik dacht door het toevoegen van WHERE datetext LIKE 'vr%' OR datetext LIKE 'za%' OR datetext LIKE 'zo%'.
Maar dit werkt niet, omdat datetext niet bestaat volgens de foutmelding. Maar ik wil de datetext uitlezen die ik op regel 7 heb van onderstaand script:
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
mysql_query("SET lc_time_names = 'nl_NL';");
$query1="
SELECT
    m.id,
    m.voornaam,
    m.achternaam,
    DATE_FORMAT(d.check_date, '%a %e') AS datetext,
    IF(f.memberid IS NULL, '-', 'X') dayoff
FROM
    (SELECT
        @startdate + INTERVAL (@pos := @pos + 1) DAY check_date
    FROM
        members,
        (SELECT @pos := -1,
        @startdate := '2013-08-01') a
    LIMIT 31) d
CROSS JOIN members m
LEFT JOIN
    verlofgeaccepteerd f
    ON m.id = f.memberid
    AND d.check_date BETWEEN f.datum1 AND f.datum2
ORDER BY m.voornaam, m.id, d.check_date";
//WHERE datetext LIKE 'vr%' OR datetext LIKE 'za%' OR datetext LIKE 'zo%'
$sqltitel = mysql_query($query1) or die(mysql_error());
Gewijzigd op 05/09/2013 15:30:14 door Davey Mat
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/09/2013 16:02:17
Quote Anchor link
Je kunt geen alias in een where clause gebruiken (dit geldt niet voor een alias in een subquery, die mag wel in de where van de hoofdquery).
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
....
WHERE WEEKDAY(d.checkdate) BETWEEN 4 AND 6

(Maandag is 0, zondag is 6)
 
Davey Mat

Davey Mat

05/09/2013 16:10:29
Quote Anchor link
Bedankt Ger!
Respect voor jouw kennis van sql!

Ik kan op google zo 123 niks vinden over 'WEEKDAY', waar zou ik daar meer informatie over kunnen vinden?

Bedankt iig! De query werkt zoals ik wil!
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

05/09/2013 16:15:16
Quote Anchor link
Hoofdstuk 12.7 in de manuel
 

Pagina: « vorige 1 2



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.