Selecteer de laatste 30 dagen, oplopend

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom Wellink

Tom Wellink

28/08/2011 22:39:25
Quote Anchor link
Beste,

Ik ben bezig om statistieken uit te draaien uit de database, ik gebruik daar onderstaande query voor. Ik zou alleen graag willen dat ik de laatste 30 dagen vertoon, doe ik dit met interval erachter? Want wil het wel oplopend hebben, dat stel op de 30e vraag ik mijn statistieken op, dat ik in de tabel ze oplopend van 1 naar 30 zie.

<code>
"SELECT * FROM stats WHERE`username`='".mysql_real_escape_string($login_user)."' LIMIT 30");
</code>
 
PHP hulp

PHP hulp

05/11/2024 11:55:56
 

28/08/2011 22:44:40
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
"SELECT * FROM stats WHERE`username`='".mysql_real_escape_string($login_user)."' GROUP BY dagen DESC LIMIT 30");


DESC of ASC 1 van de 2 is goed. Bij de ene zie je de 1e 30 en bij de andere de laatste 30 dagen.
 
Tom Wellink

Tom Wellink

28/08/2011 22:49:08
Quote Anchor link
Niet met interval dus? Ik heb in mijn tabel gewoon het veld datum, de query word dan dus

"SELECT * FROM stats WHERE`username`='".mysql_real_escape_string($login_user)."' GROUP BY datum DESC LIMIT 30");

Nu toont hij in een tabel zoals onderstaand als ik het uitdraai?

dagen: 1 2 3 4 5
Aantal: 10 15 22 45 49
 

28/08/2011 22:55:14
Quote Anchor link
Het enige wat je wil is sorteren op dagen van klein naar groot en tellen tot 30.. (volgens mij) dus ja dan zou dit het moeten zijn.
 
Tom Wellink

Tom Wellink

28/08/2011 22:58:10
Quote Anchor link
Haha het voorbeeld was tot 30... maar stel ik bezoek de pagina statistieken op de 15 September dan wil ik dus de statistieken zien van bijvoorbeeld 15 Augustus tot 15 September...
 
Jacco Brandt

Jacco Brandt

28/08/2011 23:01:33
Quote Anchor link
dan zet je er 31 neer?
 
Tom Wellink

Tom Wellink

28/08/2011 23:05:03
Quote Anchor link
@jacco

Haha dat snap ik, als ik 15 doe laat hij 15 resultaten zien, maar mijn vraag is, als ik dus het veld datum heb, wat een datetime veld is, en gebruik de query zoals gegevens, laat hij dan inderdaad als voorbeeld, van de 14 aug tot de 14 sep zien in tabel? :P
 

28/08/2011 23:08:23
Quote Anchor link
Voer de query uit en test het zou ik zeggen :)!
 
Jacco Brandt

Jacco Brandt

28/08/2011 23:09:14
Quote Anchor link
"SELECT * FROM stats WHERE`username`='".mysql_real_escape_string($login_user)."' WHERE `datum ` >= '2011-08-14' AND `datum ` <= '2011-09-14' GROUP BY datum DESC LIMIT 31");
Gewijzigd op 28/08/2011 23:09:44 door Jacco Brandt
 
Tom Wellink

Tom Wellink

29/08/2011 14:10:20
Quote Anchor link
Ik denk dat ik een beetje verkeerd begrepen word. Ik heb de volgende tabel:

ID | DATUM | WAARDE | USER
1 | 20110815 | 15 | Tom
2 | 20110816 | 22 | Tom
3 | 20110817 | 25 | Tom

Als ik hier de query "SELECT * FROM stats WHERE`username`='".mysql_real_escape_string($login_user)."' LIMIT 30");" krijg ik netjes 30 resultaten te zien. Op het moment alleen dat ik boven de 30 id's kom laat hij het niet meer goed zien. Nu wil ik dus dat in de query de laatste 30 waardes geselecteerd worden maar met datum oplopend gesorteerd.

Wat heb ik geprobeerd:
LIMIT 30 ASC - Werkt niet ivm neemt de eerste 30 bij deze query
LIMIT 30 DSC - Werkt niet ivm de laatste 30 neemt maar aflopend

Ik dacht zelf aan iets met interval maar kom hier niet verder mee.

Wat ik dus wil is als ik de query draai en ik gooi het in een tabel dat ik dit te zien krijg als ik d pagina stats bezoek:

DATUM | 11-08-2011 | 12-08-2011 | 13-08-2011
Waarde| 15 | 18 | 25
 
- SanThe -

- SanThe -

29/08/2011 14:13:12
Quote Anchor link
SELECT ... FROM ... WHERE ... ORDER BY ... ASC/DESC LIMIT ...
 
Tom Wellink

Tom Wellink

29/08/2011 15:35:34
Quote Anchor link
Wat de query van jo udoet is of de laatste op DESC nemen of de eerste 30 op ASC. Ik wil dus ongeacht de dag/aantal id's altijd de laatste 30 maar dan oplopend... Dus in mijn geest zou het iets moeten worden vna

SELECT....FROM...WHERE...LIMIT 30 ORDER BY ASC

Hierdoor selectered hij de laatste 30 id's stel ik heb 1 tot 100 id's dan wil ik dat hij de id's van 70 tot 100 selecteerd oplopend van 70 naar 100. Is het 101 dan wil ik dat hij automatisch 71 tot 101 neemt of met datum als voorbeeld, vandaag zou ik willen dat hij de waarden van 29 Juli tot 29 Augustus laat zien en morgen van 30 Juli tot 30 Augustus

Ik heb ongeveer in het hoofd hoe het moet, maar uitwerking blijf ik op hangen.....
Gewijzigd op 29/08/2011 15:48:46 door Tom Wellink
 
Jacco Brandt

Jacco Brandt

29/08/2011 16:30:52
Quote Anchor link
Probeer dit eens:
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
<?php
// get number of rows
$query = mysql_query("SELECT COUNT(`id`) AS `count` FROM `stats`");
$max = mysql_fetch_assoc($query);
$max = $max['count'];

// select rows
$query = mysql_query("SELECT * FROM `stats` ORDER BY `datum` ASC LIMIT ".($max - 30).", 30");

while ($row = mysql_fetch_assoc($query)) {

   // dingen doen.

}

?>
 



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.