Check als DB record niet bij laatste 3 zit

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart B

Bart B

25/02/2014 15:26:01
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$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?
Gewijzigd op 25/02/2014 15:26:23 door Bart B
 
PHP hulp

PHP hulp

08/09/2024 02:03:50
 
Michael -

Michael -

25/02/2014 15:45:16
Quote Anchor link
Gebruik DISTINCT() of GROUP BY() in je select.

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.
Gewijzigd op 25/02/2014 15:47:57 door Michael -
 
Bart B

Bart B

25/02/2014 15:55:48
Quote Anchor link
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?


Toevoeging op 26/02/2014 14:34:10:

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 :)

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
$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());
                }

?>
Gewijzigd op 26/02/2014 14:34:41 door Bart B
 
Bart B

Bart B

06/03/2014 14:43:46
Quote Anchor link
Iemand nog een suggestie hiervoor? Hoe dit netter / beter zou kunnen?
 
Mathieu Posthumus

Mathieu Posthumus

06/03/2014 14:47:42
Quote Anchor link
Bart B Jij ben zeker van Radio 538?
 
Bart B

Bart B

06/03/2014 15:47:00
Quote Anchor link
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.
 



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.