Ik wil het volgende middels een query maken: "In een MySQL tabel staan rijen met bezoekers, wanneer een IP nog nooit eerder is langsgeweest dan is deze "Totaal uniek". Welke query moet ik maken om de waarde "totaal uniek" van vandaag te berekenen?
Met de count zorg je er voor dat je slechts ip-adressen selectereerd die 1x in je database staan. Die komen dus niet vaker voor. Vervolgens pak je alleen die records die een datum van vandaag hebben. Dan ben je er toch?
Al zou het kunnen zijn dat je de COUNT() in een subquery moet zetten. Je zou het even moeten testen.
Ongetwijfeld zijn er nog andere/betere oplossingen, maar dat kun je beter aan een slimmerik vragen ;)
<?
// Aantal totaal unieke bezoekers
$sql = mysql_query("SELECT dag, maand, jaar, ip FROM onlinewebstats_hit WHERE COUNT(ip) = 1 AND dag = '".date(d)."' AND maand = '".date(m)."' AND jaar = '".date(Y)."' GROUP BY ip");
$totaal_uniek = mysql_num_rows($sql);
?>
Maar wil niet lopen (mysql_num_rows(): supplied argument is not a valid MySQL result resource in)
SELECT dag, maand, jaar ??? Wat is dit nu weer voor een vreemde constructie? Je gaat me toch niet wijsmaken dat je hiermee een datum in je database wegschrijft?
Een datum sla je op in een DATE, in het het formaat yyyy-mm-dd. En mocht je dat niet willen, dan wordt het een DATETIME !
<?
// Aantal totaal unieke bezoekers
$sql = mysql_query("SELECT dag, maand, jaar, ip FROM onlinewebstats_hit WHERE COUNT(ip) = 1 AND dag = '".date(d)."' AND maand = '".date(m)."' AND jaar = '".date(Y)."' GROUP BY ip");
$totaal_uniek = mysql_num_rows($sql);
Als je wilt weten waar de foutmelding vandaan komt, dan zou je kunnen overwegen om iets aan foutafhandeling te gaan doen. Dat mag overigens nooit ontbreken omdat queries vroeg of laat altijd fout gaan.
Tip: Zet je query in een aparte variabele en voer deze uit met mysql_query(). Dan kun je de query nog eens echoen. Wel zo handig. En gebruik uiteraard mysql_error() om de fout te achterhalen.