Forum › PHP / SQL › Topic

Een nieuwe topic in het forum PHP / SQL plaatsen Reageren op dit topic Forum:

[PHP/SQL] Twee dagen weergeven in resultaat

Beste,

ik haal uit de database de wedstrijden van de laatste 2 dagen (welke dagen dat zijn kan willekeurig zijn met willekeurige tussen marges).

Probleem nu is dat hij alle dagen weergeeft, en ik wil maar twee dagen weergeven.

Dit kan zijn:

3 maart en 9 maart, maar kan ook zijn 1 maart en 5 mei.

Dus gewoon 'twee' dagen die het laatst aanwezig zijn.

Ik heb nu de volgende code:

Code tonen/verbergenCodeDeze code in een nieuw vensterDeze code in een tekstveldDeze code in een zip file downloaden
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
function displayLastGames(){
    
// date array
    
$done = array();
    
    
// set query
    
$query mysql_query('SELECT * FROM site_games
                          ORDER BY date DESC'
);    
    
    
// start table
    
echo '<table class="match">';
    
    
// loop
    
while($fetch mysql_fetch_assoc($query))
    {
        
// set a query to select team info
        
$team mysql_query('SELECT * FROM site_teams
                             WHERE
                             id = "'
.mysql_real_escape_string($fetch['team_id']).'"');
        
$teamFetch mysql_fetch_assoc($team);
        
        
// set a query to select opponent info
        
$opponent mysql_query('SELECT * FROM site_teams
                             WHERE
                             id = "'
.mysql_real_escape_string($fetch['opponent_id']).'"');
        
$opponentFetch mysql_fetch_assoc($opponent);
        
        
// check if to display a header or not                         
        
if(!in_array(ucfirst(strftime("%A %d %B %G"strtotime($fetch['date']))), $done))
        {
            
// display header
            
echo '<colgroup><col class="w170"><col class="w60"><col class="w170"><col class="w70"></colgroup>
                  <thead>
                  <tr><th colspan="4"><time> '
.ucfirst(strftime("%A %d %B %G"strtotime($fetch['date']))).' </time></th></tr>
                  </thead>
                  <tbody>'
;
            
            
// add to the "done" list
            
$done[] = ucfirst(strftime("%A %d %B %G"strtotime($fetch['date'])));
            
            
// display entry
            
echo '<tr>
                    <td><img src="../../images/shirts/'
.$teamFetch['icon'].'" alt="'.$teamFetch['club'].'" /> '.$teamFetch['club'].'</td>
                    <td>-</td>
                    <td><img src="../../images/shirts/'
.$opponentFetch['icon'].'" alt="'.$opponentFetch['club'].'" /> '.$opponentFetch['club'].'</td>
                    <td>'
.$fetch['team_points'].' - '.$fetch['opponent_points'].'</td>
                  </tr>'
;
        }
        else
        {
            
// display entry without header
            
echo '<tr>
                    <td><img src="../../images/shirts/'
.$teamFetch['icon'].'" alt="'.$teamFetch['club'].'" /> '.$teamFetch['club'].'</td>
                    <td>-</td>
                    <td><img src="../../images/shirts/'
.$opponentFetch['icon'].'" alt="'.$opponentFetch['club'].'" /> '.$opponentFetch['club'].'</td>
                    <td>'
.$fetch['team_points'].' - '.$fetch['opponent_points'].'</td>
                  </tr>'
;
        }
    }
    
    
// close table
    
echo '</tbody>
    </table>'
;
}




Probleem is dat als ik de query verander naar een LIMIT 2, dat hij (natuurlijk...) maar twee entries weegeeft.

Wat ik uiteindelijk doe is een header maken met daarin de naam van de dag, maand en jaar. Vervolgens daar onder alle uitslagen.

Ik hoop dat iemand mij kan helpen
Stuur een prive bericht
Code tonen/verbergenCodeDeze code in een nieuw vensterDeze code in een tekstveldDeze code in een zip file downloaden
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
function displayLastGames()
    { 
        
$query mysql_query
            
(
                
"
                SELECT `g`.*,
                        `h`.`icon` AS `h_icon`,
                        `h`.`club` AS `h_club`,
                        `a`.`icon` AS `a_icon`,
                        `a`.`club` AS `a_club`
                FROM `site_games` AS `g`
                LEFT JOIN `site_teams` AS `h`
                ON `g`.`team_id` = `h`.`id`
                LEFT JOIN `site_teams` AS `a`
                ON `g`.`opponent_id` = `a`.`id`
                WHERE `date` IN 
                    (
                        SELECT * FROM 
                            (
                                SELECT `date`
                                FROM `site_games`
                                GROUP BY `date`
                                ORDER BY `date` DESC
                                LIMIT 2
                            )
                        ALIAS
                    )
                ORDER BY `g`.`date` DESC
                "
            
);     
         
        echo 
'
<table class="match">
    <colgroup>
        <col class="w170">
        <col class="w60">
        <col class="w170">
        <col class="w70">
    </colgroup>'
.PHP_EOL

        
$headers = array();         
        while(
$fetch mysql_fetch_assoc($query)) 
            {
                
$exp explode($fetch['date']);
                
$date mktime(0,0,0$exp[1], $exp[2], $exp[0]);

                if(!
in_array($date$headers)) 
                    {
                        if(
count($headers) > 0)
                            echo 
'    </tbody>'.PHP_EOL;
                        echo 
'
    <thead> 
        <tr>
            <th colspan="4"><time> '
.ucfirst(strftime("%A %d %B %G"$date)).' </time></th>
        </tr> 
    </thead>
    <tbody>'
.PHP_EOL;

                        
$done[] = $date;
                    }
                 
                echo 
'
        <tr> 
            <td><img src="../../images/shirts/'
.$fetch['h_icon'].'" alt="'.$fetch['h_club'].'" /> '.$fetch['h_club'].'</td> 
            <td>-</td> 
            <td><img src="../../images/shirts/'
.$fetch['a_icon'].'" alt="'.$fetch['a_club'].'" /> '.$fetch['a_club'].'</td> 
            <td>'
.$fetch['team_points'].' - '.$fetch['opponent_points'].'</td> 
        </tr>'
;

            } 

        echo 
'
    </tbody> 
</table>'
.PHP_EOL
    }




Het is sowieso niet verstandig een query in een loop te gebruiken, zorg voor hoge serverload en lange laadtijden van de pagina. Overigens is de if zwaar overbodig omdat er twee keer hetzelfde stuk instaat.

Heb bovenstaande code niet getest, dus weet niet zeker of die helemaal werkt.
Stuur een prive bericht