Door
Bart B
op 25-02-2014 15:26
gewijzigd op 25-02-2014 15:26
1.346 views
Beetje lastige titel.. Maar ik heb een website, waar ik bv de playlist van 538 bijhoud, maar daar zit ik met het issue dat 538 nog wel eens een ouder nummer wil doorgeven, wat als gevolg heeft dat het nummer nog een keer voorkomt in de laatste 5 minuten, bv:
15:20 Emeli Sande Read All About It Pt.Iii
15:19 The Game Hate It Or Love It
15:15 Emeli Sande Read All About It Pt.Iii
15:12 Onerepublic Counting Stars
Hoe kan ik dit makkelijk afvangen dat het huidige nummer niet bij de laaste 3 of 4 records in de DB staat, voordat deze waardes de DB ingeschoten worden?
Nu check ik met het volgende of het laatste nummer niet hetzelfde is.
$sql = mysql_query("SELECT nummer FROM $name ORDER BY id DESC LIMIT 1") or die(mysql_error());
$check = mysql_fetch_array($sql);
if ($check["nummer"] == $nummer)
{
echo $name.' staat al in db - '.$nummer.'<br />';
}else{
//schiet in DB
}
Moet ik dan de limit op bv 3 of 4 zetten en dan met een while of loop werken?
edit: Waarom gebruik je de limit 1? Om te voorkomen dat als het nummer een uur geleden is toegevoegd wel wordt toegevoegd? Dan kun je misschien beter INTERVAL() gebruiken en de limit weg laten. Met INTERVAL() haal je dan de records op van de afgelopen 10 minuten o.i.d.
Die limit staat er nog omdat ik aan het testen en puzzelen was met limit 4 hoe ik mijn probleem moest gaan oplossen :)
Interval() zal niet werken, omdat het ook wel eens zo is dat ze een uur of langer een mix draaien. Dan krijg ik als nog dubbele records als ik het goed begrijp?
[size=xsmall]Toevoeging op 26/02/2014 14:34:10:[/size]
Hoe dit te doen via DISTINCT() of GROUP BY() begrijp ik niet helemaal. Met onderstaande code werkt het zoals ik wil, maar dit zal vast niet de mooiste / meest nette oplossing zijn :)
<?php
$sql = mysql_query("SELECT nummer FROM $name ORDER BY id DESC LIMIT 5") or die(mysql_error());
while ($check = mysql_fetch_array($sql)) {
if ($check['nummer'] == $nummer){
$checkifbestaat .= 'true';
}else{
$checkifbestaat .= 'false';
}
}
if($checkifbestaat == 'falsefalsefalsefalsefalse'){
$nummer = mysql_real_escape_string($nummer);
$artist = mysql_real_escape_string($artist);
$tijd = time();
mysql_query("INSERT INTO $name (tijd, nummer, artist, timestamp) VALUES (NOW(), '" . $nummer . "', '" . $artist . "', '" . $tijd . "')") or die(mysql_error());
}
?>
Huh? Nee :)
Ik heb een kleine website waar alle nummers worden bijgehouden welke gedraaid worden zodat ik later gemakkelijk terug kan zien welk nummer dat was wat ik bv in de auto hoorde.