naar recod van volgende(vorige) datum linken
In mijn wedstrijden database staan ± 4500 wedstrijden die, uiteraard, allemaal op een andere dag + tijdstip gespeeld zijn.
Iedere wedstrijd heeft velden voor het seizoen, de teams, de uitslag etc etc en een veld: "Game_DateTime".
De wedstrijden zijn niet op een volgend in de database ingevoerd, omdat er soms historische wedstrijden aan toegevoegd worden.
Wat ik nu zoek is een methode om op datum een hyperlink naar de volgende (en vorige) wedstrijd te kunnen maken.
Voorbeeld
ik heb deze data
1906-01-07 14:00:00
1965-11-10 00:00:00
1970-04-14 00:00:00
2022-03-25 21:00:00
2022-12-11 14:30:00
Ik zit in het record met de datum [1970-04-14 00:00:00] dan zou ik graag naar [2022-03-25 21:00:00] willen linken. hoe zou ik dat kunnen doen?
Gewijzigd op 04/12/2022 12:25:50 door Mar kla
Code (php)
1
2
3
4
5
2
3
4
5
select * from foo
where (
id = IFNULL((select min(id) from foo where id > 4),0)
or id = IFNULL((select max(id) from foo where id < 4),0)
)
where (
id = IFNULL((select min(id) from foo where id > 4),0)
or id = IFNULL((select max(id) from foo where id < 4),0)
)
Gewijzigd op 04/12/2022 13:07:29 door - Ariën -
Dank voor je snelle reactie. maar ik begrijp even niet hoe ik dat in mijn situatie zou moeten toepassen :-|
Ik heb deze data in veld [Game_DateTime] van de tabel [games] staan:
1906-01-07 14:00:00
1965-11-10 00:00:00
1970-04-14 00:00:00
2022-03-25 21:00:00
2022-12-11 14:30:00
De wedstrijd met de datum "1970-04-14 00:00:00" heb ik nu geselecteerd en in mijn scherm staan.
wat ik nu zou willen is de optie:
een terug = [1965-11-10 00:00:00]
actieve = [1970-04-14 00:00:00]
en verder = [2022-03-25 21:00:00]
Ik zie even niet hoe ik dat met jou code kan doen......
datum < huidige datum limit 1
datum >= huidige datum limit 1
Als er geen datum is die groter of kleiner is dan de huidige datum dan blijf je op de huidige datum.
Toevoeging op 04/12/2022 14:03:06:
Hier een uitgebreide code om plaatjes te zoeken met of zonder recept erbij.
Het maakt weer onderdeel uit van een groter geheel.
Vraag me niet om het uit te leggen, heb er dagen over gedaan om het goed te krijgen.
Het werkt.
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
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
function btn_prev( $prev, $useRecpe )
{
global $db;
$idp = $db->real_escape_string( $prev );
$firstTrue = "&isFirst=true";
$Recp_1p = ( $useRecpe ? " WHERE recipe = 1" : "" );
$selectQuery_1 = "SELECT min(pid) AS firstPid FROM " . _PIX . $Recp_1p;
$fPid = $db->query( $selectQuery_1 );
$first = $fPid->fetch_object();
$theFirst = $first->firstPid;
$fPid->close();
$Recp_2p = ( $useRecpe ? " AND recipe = 1" : "" );
$selectQuery_2 = "SELECT pid FROM " . _PIX . " WHERE pid <= " . $idp . $Recp_2p . " ORDER BY pid DESC LIMIT 1";
echo '<pre>' . $selectQuery_2 . '</pre>';
$result = $db->query( $selectQuery_2 );
$row = $result->fetch_object();
$thePid = isset($row->pid) ? $row->pid : 1;
if ( $thePid > $theFirst ):
$firstTrue = '';
endif;
header("Location: ?pid=" . $thePid . $firstTrue);
exit();
} // end function btn_prev
function btn_next( $pd, $useRecpe )
{
global $db;
$id = $db->real_escape_string($pd);
$lastTrue = "&isLast=true";
$Recp_1n = ( $useRecpe == TRUE ? " WHERE recipe = 1" : "" );
$selectQuery_1 = "SELECT max(pid) AS lastPid FROM " . _PIX . $Recp_1n;
$lPid = $db->query( $selectQuery_1 );
$last = $lPid->fetch_object();
$theLast = $last->lastPid;
$Recp_2n = ( $useRecpe == TRUE ? " AND recipe = 1" : "" );
$selectQuery_2 = "SELECT pid FROM " . _PIX . " WHERE pid >= " . $id . $Recp_2n . " ORDER BY pid ASC LIMIT 1";
echo '<pre>' . $selectQuery_2 . '</pre>';
$result = $db->query( $selectQuery_2 );
$row = $result->fetch_object();
$thePid = isset($row->pid) ? $row->pid : 99999;
if ( $thePid < $theLast ):
$lastTrue = '';
endif;
header("Location: ?pid=" . $thePid . $lastTrue);
exit();
} // end function btn_next
$useRecp = ( isset($recept) ? ( $recept == 1 ? TRUE : FALSE ) : FALSE );
if ( isset( $_REQUEST["prev"] ) && ( $_REQUEST["prev"] > 0 ) && ( is_numeric( $_REQUEST["prev"] ) ) ):
$previous = (int) $_REQUEST["prev"] -1;
btn_prev( $previous, $useRecp );
endif;
if ( isset( $_REQUEST["next"] ) && ( $_REQUEST["next"] > 0 ) && ( is_numeric( $_REQUEST["next"] ) ) ):
$next = (int) $_REQUEST["next"] +1;
btn_next( $next, $useRecp );
endif;
?>
function btn_prev( $prev, $useRecpe )
{
global $db;
$idp = $db->real_escape_string( $prev );
$firstTrue = "&isFirst=true";
$Recp_1p = ( $useRecpe ? " WHERE recipe = 1" : "" );
$selectQuery_1 = "SELECT min(pid) AS firstPid FROM " . _PIX . $Recp_1p;
$fPid = $db->query( $selectQuery_1 );
$first = $fPid->fetch_object();
$theFirst = $first->firstPid;
$fPid->close();
$Recp_2p = ( $useRecpe ? " AND recipe = 1" : "" );
$selectQuery_2 = "SELECT pid FROM " . _PIX . " WHERE pid <= " . $idp . $Recp_2p . " ORDER BY pid DESC LIMIT 1";
echo '<pre>' . $selectQuery_2 . '</pre>';
$result = $db->query( $selectQuery_2 );
$row = $result->fetch_object();
$thePid = isset($row->pid) ? $row->pid : 1;
if ( $thePid > $theFirst ):
$firstTrue = '';
endif;
header("Location: ?pid=" . $thePid . $firstTrue);
exit();
} // end function btn_prev
function btn_next( $pd, $useRecpe )
{
global $db;
$id = $db->real_escape_string($pd);
$lastTrue = "&isLast=true";
$Recp_1n = ( $useRecpe == TRUE ? " WHERE recipe = 1" : "" );
$selectQuery_1 = "SELECT max(pid) AS lastPid FROM " . _PIX . $Recp_1n;
$lPid = $db->query( $selectQuery_1 );
$last = $lPid->fetch_object();
$theLast = $last->lastPid;
$Recp_2n = ( $useRecpe == TRUE ? " AND recipe = 1" : "" );
$selectQuery_2 = "SELECT pid FROM " . _PIX . " WHERE pid >= " . $id . $Recp_2n . " ORDER BY pid ASC LIMIT 1";
echo '<pre>' . $selectQuery_2 . '</pre>';
$result = $db->query( $selectQuery_2 );
$row = $result->fetch_object();
$thePid = isset($row->pid) ? $row->pid : 99999;
if ( $thePid < $theLast ):
$lastTrue = '';
endif;
header("Location: ?pid=" . $thePid . $lastTrue);
exit();
} // end function btn_next
$useRecp = ( isset($recept) ? ( $recept == 1 ? TRUE : FALSE ) : FALSE );
if ( isset( $_REQUEST["prev"] ) && ( $_REQUEST["prev"] > 0 ) && ( is_numeric( $_REQUEST["prev"] ) ) ):
$previous = (int) $_REQUEST["prev"] -1;
btn_prev( $previous, $useRecp );
endif;
if ( isset( $_REQUEST["next"] ) && ( $_REQUEST["next"] > 0 ) && ( is_numeric( $_REQUEST["next"] ) ) ):
$next = (int) $_REQUEST["next"] +1;
btn_next( $next, $useRecp );
endif;
?>
Ziet er inderdaad niet uit als code die je even 1.2.3. uit je mouw schud :-)
Zelf zit ik ook al een hele tijd te klooien en telkens voor me uitgeschoven.