abonnement Unibet Coolblue Bitvavo
pi_33840577
Ik heb de volgende tabel
1
2
3
4
5
6
7
8
9
10
11
12
<?php
CREATE TABLE
`last_reacties` (
  `
id` int(6) NOT NULL auto_increment,
  `
ber_id` int(6) NOT NULL default '0',
  `
onderwerp` varchar(35) NOT NULL default '',
  `
tijd` varchar(14) NOT NULL default '',
  `
soort` varchar(20) NOT NULL default '',
  `
IP` varchar(16) NOT NULL default '',
  
UNIQUE KEY `id` (`id`),
  
KEY `ber_id` (`ber_id`)
)
TYPE=MyISAM AUTO_INCREMENT=0 ;
?>


Met de volgende data erin;
1
2
3
4
5
6
7
8
INSERT INTO `last_reacties` VALUES (1, 8, 'Club Arma', '20060108184603', 'evenementen', '82.156.118.119');
INSERT INTO `last_reacties` VALUES (8, 59, 'Toevallig kinderporno downloaden st', '20060108185624', 'nieuws', '82.156.1');
INSERT INTO `last_reacties` VALUES (9, 6, 'Yogurtlu Corba', '20060108185915', 'recepten', '82.156.118.119');
INSERT INTO `last_reacties` VALUES (10, 60, '''Al-Zarqawi ontsnapt aan Amerikaans', '20060108191002', 'nieuws', '82.156.1');
INSERT INTO `last_reacties` VALUES (11, 60, '''Al-Zarqawi ontsnapt aan Amerikaans', '20060108191023', 'nieuws', '82.156.1');
INSERT INTO `last_reacties` VALUES (12, 38, 'nieuws', '20060108191131', 'nieuws', '82.156.118.119');
INSERT INTO `last_reacties` VALUES (13, 60, '''Al-Zarqawi ontsnapt aan Amerikaans', '20060108191216', 'nieuws', '82.156.11');
INSERT INTO `last_reacties` VALUES (14, 60, '''Al-Zarqawi ontsnapt aan Amerikaans', '20060108191526', 'nieuws', '82.156.1');


Ik heb een query om de laatste 10 'inserts' uit te lezen, samengevoegt (GROUP) op ber_id;
1SELECT id, ber_id, onderwerp, soort FROM `last_reacties` GROUP BY ber_id ORDER BY tijd DESC LIMIT 0, 10


Hij leest inderdaad de laatste 10 inserts uit, ook voegt (GROUP) hij het samen op ber_id, maar hij GROUP't ze precies andersom.
Als ik 2 records achter elkaar heb met dezelfde ber_id, dan laat hij de oudste (eerste) record zien, in plaats van de laatste.
Kijk naar id 13 en 14. Hij voegt 10, 11, 13 en 14 samen omdat ze dezelfde ber_id hebben, maar in plaats van 14 te laten zien, laat hij mij 13 zien.

Iemand een beter/juiste query voor me ?
ne okuyon, bokmu var?
pi_33843008
Korte vraag; hoe trekken jullie een leeftijd van de huidige datum af om te checken of iemand ouder is dan 18? ik doe het met dit, maar dit geeft af en toe een error

1
2
3
4
5
6
$eightien = mktime(0,0,0,date("d"),date("m"), date("Y")-18);
                
if (mktime(0,0,0, date("d"), date("m"), date("Y") - 18) > mktime(0,0,0, $_POST['day'], $_POST['month'], $_POST['year']))
{
   // ouder
}


Iemand een idee waar ik de fout in ga?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_33843100
Je volgorde van post vars klopt niet;
ie. progseltje:

$birth = mktime(0,0,0,intval($_POST['month']), intval($_POST['day']), intval($_POST['year']));
if(strtotime('+18 years', $birth) > mktime()) {
//te jong.
}

-r-
pi_33852901
Chandler of Roonaan geen oplossing voor mij ? =)
ne okuyon, bokmu var?
pi_33854882
quote:
Op maandag 9 januari 2006 00:09 schreef saban het volgende:
Chandler of Roonaan geen oplossing voor mij ? =)
Ik snap je vraag wel, maar je voorbeeld van een fout niet. Je hebt het over id's 10, 11, 13 en 14 waarvan 10 de oudste is (zover ik kan zien). Toch zeg je dat ie 13 teruggeeft?
pi_33854985
quote:
Op maandag 9 januari 2006 01:35 schreef JeRa het volgende:

[..]

Ik snap je vraag wel, maar je voorbeeld van een fout niet. Je hebt het over id's 10, 11, 13 en 14 waarvan 10 de oudste is (zover ik kan zien). Toch zeg je dat ie 13 teruggeeft?
Zover ik weet kan je niet ordenen in je group statements toch?

Ik dacht eerst dat hij wel min of max kon gebruiken maar dat gaat alleen op voor tijd. Als hij de message ook wil krijgen wordt dan ingewikkeld. Dit wordt op alfanum gesorteerd.
pi_33856805
quote:
Op zondag 8 januari 2006 19:26 schreef saban het volgende:
Ik heb de volgende tabel
[ code verwijderd ]

Met de volgende data erin;
[ code verwijderd ]

Ik heb een query om de laatste 10 'inserts' uit te lezen, samengevoegt (GROUP) op ber_id;
[ code verwijderd ]

Hij leest inderdaad de laatste 10 inserts uit, ook voegt (GROUP) hij het samen op ber_id, maar hij GROUP't ze precies andersom.
Als ik 2 records achter elkaar heb met dezelfde ber_id, dan laat hij de oudste (eerste) record zien, in plaats van de laatste.
Kijk naar id 13 en 14. Hij voegt 10, 11, 13 en 14 samen omdat ze dezelfde ber_id hebben, maar in plaats van 14 te laten zien, laat hij mij 13 zien.

Iemand een beter/juiste query voor me ?
ik gebruik deze op de weblog om de laatste (in mijn geval unieke) reacties te laten zien:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SELECT 
    r.site_id, 
    b.header,
    MAX(r.time) AS tijd
FROM 
    b JOIN reacts AS r ON (b.id = r.site_id)
WHERE 
    r.status = 'active'
AND 
    b.status = 'active'
AND 
    r.time > (UNIX_TIMESTAMP() - 259200)
GROUP BY
    r.site_id, b.header
ORDER BY 
    `tijd` DESC
LIMIT 
   0 , 8
pi_33857595
quote:
Op maandag 9 januari 2006 01:35 schreef JeRa het volgende:

[..]

Ik snap je vraag wel, maar je voorbeeld van een fout niet. Je hebt het over id's 10, 11, 13 en 14 waarvan 10 de oudste is (zover ik kan zien). Toch zeg je dat ie 13 teruggeeft?
Waarom is id 10 het oudste ? Ik sorteer op tijd, en id 14 heeft het hoogste waarde (20060108191526), maar hij geeft helaas id 13 terug.
ne okuyon, bokmu var?
pi_33857673
Nu ik er even over nadenk, is dit ook mogelijk

1
2
3
4
5
SELECT id, ber_id, onderwerp, soort
FROM `last_reacties` 
GROUP BY onderwerp
ORDER BY id DESC 
LIMIT 0 , 10 


Maar weer laat hij geen id 14 zien, en wel id 13.
ne okuyon, bokmu var?
pi_33857744
Kun je niet de query gebruiken die rickmans aanbiedt?

En ik snap 'm nu wel weer, het komt er op neer dat je geen ORDER kunt doen vóór een GROUP BY om zo de groepering aan te passen. Je kunt ORDER wel gebruiken om de resultset aan te passen though. Gebruik de MAX()-(group)functie om de hoogste waarde te vinden
pi_33859556
even een snel vraagje.

ik heb een $row->Date van zo'n 20-25 chars. Ik wil alleen de 1e 10 chars laten zien. Ik dacht dat dat kon met echo $row->Date{0,10} maar dat lijkt niet te werken. ik heb hier eventueel wel n wat uitgebreidere functie voor, maar ik dacht dat het ook op deze manier kon.

Ik heb t fout zeker
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_33859584
substr($row->Date,0,10);

?
pi_33859759
tx
As a rule, I never touch anything more sophisticated and delicate than myself.
pi_33861721
quote:
Op maandag 9 januari 2006 09:09 schreef JeRa het volgende:
Kun je niet de query gebruiken die rickmans aanbiedt?

En ik snap 'm nu wel weer, het komt er op neer dat je geen ORDER kunt doen vóór een GROUP BY om zo de groepering aan te passen. Je kunt ORDER wel gebruiken om de resultset aan te passen though. Gebruik de MAX()-(group)functie om de hoogste waarde te vinden
Ik gebruik nu de MAX functie, het werkt al iets beter, maar nog steeds niet 'bug-loos'. Helaas ben ik onbekend met JOINS.
ne okuyon, bokmu var?
pi_33863189
quote:
Op maandag 9 januari 2006 12:21 schreef saban het volgende:

[..]

Ik gebruik nu de MAX functie, het werkt al iets beter, maar nog steeds niet 'bug-loos'. Helaas ben ik onbekend met JOINS.
Hier heb je geen JOIN voor nodig. Ik heb je tabel geprobeerd en ik merk op dat je het veld 'tijd' als een VARCHAR opslaat. Dit type werkt niet zo geweldig met de MAX()-functie. Beter sla je die tijd op als een Unix Timestamp (epoch), dit is het aantal seconden vanaf 1 januari 1970. Deze kun je in MySQL opvragen als UNIX_TIMESTAMP() en neemt als UNSIGNED INT maar 4 bytes in beslag, dit in tegenstelling tot jouw huidige veld dat een veelvoud van dat inneemt.

Als je een Unix timestamp als veld gebruikt kun je wél die MAX() gebruiken dan ziet je query er zo uit:

1
2
3
4
5
SELECT id, ber_id, onderwerp, MAX( tijd ) AS mtijd, soort, IP
FROM last_reacties
GROUP BY ber_id
ORDER BY mtijd DESC
LIMIT 0 , 10
pi_33864749
Super simpele vraag misschien, maar ik kom ergens niet uit.

Ik heb een dir met daarin een 3tal bestanden.
index.php hoofdpagina, met alle opmaak
config.inc.php include file met allemaal variabelen met settings, geinclude in index.php
functions.inc.php include file met allemaal functies die gebruik maken van de variabelen uit config.inc.php, geinclude in index.php

Als ik bovenstaande doe, dan zijn de waardes van de variabelen leeg. De functies nemen de variableen niet over die gedefinieerd staan in config.inc.php. Hoe regel ik dat zij dat wel overnemen? Iets global oid maken?
pi_33864827
In principe zou je die variabelen mee moeten geven bij de functie aanroep als argumenten. Als dat echt niet mogelijk is, zou je kunnen overwegen om define() te gebruiken als het constanten betreft, of als het écht niet anders kan onderstaande te gebruiken:
1
2
3
4
5
<?php
function ugly() {
  GLOBAL
$uncleFester, $causinIt;
}
?>


-r-
pi_33864901
global gebruiken is toch vies? of mag dat tegenwoordig wel?
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_33865144
quote:
Op maandag 9 januari 2006 14:12 schreef Ro�a� het volgende:
In principe zou je die variabelen mee moeten geven bij de functie aanroep als argumenten. Als dat echt niet mogelijk is, zou je kunnen overwegen om define() te gebruiken als het constanten betreft, of als het écht niet anders kan onderstaande te gebruiken:
[ code verwijderd ]

-r-
thnx

ik definieer bv in config.inc.php het eerste woord dat na de url komt (www.example.org/woord/)
Als ik het niet global maak, moet ik iedere keer in een functie opnieuw de string uitlezen, choppen en er een var van maken. Vind ik minder handig. Zie je daar een alternatief voor?
pi_33865369
quote:
Op maandag 9 januari 2006 14:09 schreef ToBe het volgende:
Super simpele vraag misschien, maar ik kom ergens niet uit.

Ik heb een dir met daarin een 3tal bestanden.
index.php hoofdpagina, met alle opmaak
config.inc.php include file met allemaal variabelen met settings, geinclude in index.php
functions.inc.php include file met allemaal functies die gebruik maken van de variabelen uit config.inc.php, geinclude in index.php

Als ik bovenstaande doe, dan zijn de waardes van de variabelen leeg. De functies nemen de variableen niet over die gedefinieerd staan in config.inc.php. Hoe regel ik dat zij dat wel overnemen? Iets global oid maken?
Er zijn meerdere opties.

1. Zet heb in de globals array: $GLOBALS['Varname'] = "Tralala";

2. Gebruik define, zodat het een constante wordt: DEFINE(VAR, "Tralala");

3. Maak hem global in de functie:

function Foo() {
global $var;

echo $var;
}

Het mooiste is inderdaad gewoon om hem mee te geven aan de functie. Dat houdt je functie ook clean.
pi_33865381
$parts = explode('/', $_SERVER['QUERY_STRING']);
define('WOORD1', isset($parts[0]) ? $parts[0] : 'default');

if(WOORD1 == 'woord') {
}

-r-
pi_33865537
quote:
Op maandag 9 januari 2006 14:27 schreef Ro�a� het volgende:
$parts = explode('/', $_SERVER['QUERY_STRING']);
define('WOORD1', isset($parts[0]) ? $parts[0] : 'default');

if(WOORD1 == 'woord') {
}

-r-
Thnx peeps, ik neem het mee in overweging. Even spelen wat ik het lekkerst vind
pi_33865541
quote:
Op maandag 9 januari 2006 14:27 schreef Ro�a� het volgende:
$parts = explode('/', $_SERVER['QUERY_STRING']);
define('WOORD1', isset($parts[0]) ? $parts[0] : 'default');

if(WOORD1 == 'woord') {
}

-r-
Ehm, ik weet niet of het zo'n briljant plan is om misbruik te maken van constanten. Constanten horen constant te zijn, en niet variabel nu definiëer je een 'constante' die elke request anders is, daar is natuurlijk weinig constant aan en is mijns inziens nogal vies.

Beter geef je voor een functie de benodigde variabelen via de parameters door, eventueel via een volledig $config-object.
pi_33865720
quote:
Op maandag 9 januari 2006 14:32 schreef JeRa het volgende:

[..]

Ehm, ik weet niet of het zo'n briljant plan is om misbruik te maken van constanten. Constanten horen constant te zijn, en niet variabel nu definiëer je een 'constante' die elke request anders is, daar is natuurlijk weinig constant aan en is mijns inziens nogal vies.

Beter geef je voor een functie de benodigde variabelen via de parameters door, eventueel via een volledig $config-object.
Ja en nee. Ik vind het beter dan het overbodig rondslingeren van ellenlange argumentlijsten omdat een serie telkens terugkeerende runtime sermi-constanten mee te geven.
Doe jij dan nooit:
define('LANG', @$_REQUEST['lang'] == 'nl' ? 'nl' : 'en');
Of soortgelijk?

-r-
pi_33865822
quote:
Op maandag 9 januari 2006 14:37 schreef Ro�a� het volgende:

[..]

Ja en nee. Ik vind het beter dan het overbodig rondslingeren van ellenlange argumentlijsten omdat een serie telkens terugkeerende runtime sermi-constanten mee te geven.
Doe jij dan nooit:
define('LANG', @$_REQUEST['lang'] == 'nl' ? 'nl' : 'en');
Of soortgelijk?

-r-
Nee, alleen voor échte constanten waarvan ik niet verwacht dat ze binnen afzienbare tijd zullen veranderen doe ik op die manier. Voor de rest doe ik het zo (voorbeeldje):

$config = array();
...
$config['charset'] = 'iso-8859-15';
$config['lang'] = (getCookie('lang') == 'nl') ? 'nl' : 'en';
...
doSomething($config);

Of heel eventueel, als ik de parameters zat ben, dit:

function doSomething()
{
global $config;
//etc
}
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')