sql query bij specifieke datum

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ruud van de Voort

Ruud van de Voort

06/01/2017 12:59:29
Quote Anchor link
Ik werk met een muziekautomatiseringssoftware voor radiostations, elk nummer wordt met een complex query geselecteerd. echter wil ik 1 query schrijven met verschillende mogelijkheden.. de losse scripts heb ik al, het gaat me puur om het stukje script om tussen specifieke data een van de 3 mogelijkheden te laten starten en de andere dus niet te laten uitvoeren! De software die ik gebruik kan niet een script op bepaalde data laten runnen.

mogelijkheid 1 = normale muziek (van 1-9 t/m 5-12 en van 27-12 t/m 30-4)
mogelijkheid 2 = Kerst muziek (Van 6-12 t/m 26-12)
mogelijkheid 3 = Zomer muziek (Van 1-5 t/m 31-8)

Ik heb voor alle 3 de mogelijkheden aparte scripts geschreven nu. ik zal 1 voorbeeld onderaan plaatsen...
mijn uitdaging is nu dus om 1 script te schrijven waarin ik alle 3 de opties heb verwerkt en dat deze opties op de juiste datum wordt gerund. (je wilt in de zomer toch geen kerstmuziek horen ;) )
Hopelijk kan iemand me helpen met deze uitdaging!

Het standaard script voor mogelijkheid 1 normale muziek (Deze werkt en hoeft dus niet aangepast te worden):


SELECT * FROM (
(SELECT `songs`.`ID`, `songs`.`artist`, `songs`.`title`, `songs`.`date_played`, `songs`.`artist_played`,`songs`.`id_subcat`, `songs`.`weight`, 1 AS `preference` FROM `songs`
LEFT JOIN `queuelist` ON ( `songs`.`artist` = `queuelist`.`artist`)
WHERE `songs`.`enabled` = 1
AND `songs`.`song_type` = 0
AND `songs`.`id_subcat` = 68
AND `songs`.`id_genre` = 99
AND (TIMESTAMPDIFF(MINUTE, `songs`.`date_played`, NOW()) > $TrackRepeatInterval$)
AND (TIMESTAMPDIFF(MINUTE, `songs`.`artist_played`, NOW()) > $ArtistRepeatInterval$)
AND `queuelist`.`artist` IS NULL
AND `weight`=75
ORDER BY RAND ()
LIMIT 20)

ORDER BY `date_played` asc
LIMIT 20
)
temp
ORDER BY `date_played` asc
LIMIT 1;
 
PHP hulp

PHP hulp

22/12/2024 22:03:38
 
- SanThe -

- SanThe -

06/01/2017 13:47:26
Quote Anchor link
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
<?php
$date
= date('md');
switch(true)
{
    case (
$date >= '0501' and  $date <= '0831'):
        $sql = '// zomer';
    break;
    case (
$date >= '1206' and  $date <= '1226'):
        $sql = '// kerst';
    break;
    default:

        $sql = '// normaal';
}

?>
Gewijzigd op 06/01/2017 13:52:08 door - SanThe -
 
Ruud van de Voort

Ruud van de Voort

06/01/2017 22:11:42
Quote Anchor link
Bedankt voor de snelle reactie.
Er is denk ik nog 1 probleem. Nu wordt er verwezen naar een los script als ik het goed begrijp. Dat is helaas niet mogelijk in de software. Alles moet in 1 script komen. Kan ik het stukje script welke ik eerder stuurde gewoon in plaats van $sgl='//zomer' plaatsen? Of is dat te kort door de bocht?
Sorry, mijn kennis van php en sql is nog niet zo groot en wil nog veel leren.
Hopelijk kan iemand me verder helpen!
 
- SanThe -

- SanThe -

06/01/2017 22:40:01
Quote Anchor link
Ja, $sql is de plaats waar de query voor die tijdsduur moet komen.
Onder de switch() ga je de query uitvoeren en de resultaten verwerken.
 
Ruud van de Voort

Ruud van de Voort

07/01/2017 08:58:22
Quote Anchor link
Ik ben niet heel bekend met sql en php, ik loop daarom ook tegen een hele rare foutmelding, wellicht doe ik iets heel stoms.
om het script te testen maak ik even gebruik van 3 scripts zodat het even wat overzichtelijker is!
SELECT CURDATE() as zomer
SELECT CURDATE() as Kerst
SELECT CURDATE() as Normaal
deze 3 losse scripts worden gewoon geaccepteerd in de software en geven de resultaten goed weer.
nu heb ik deze in bovenstaand script van SanThe verwerkt, maar krijg ik elke keer de melding dat er geen resultaten zijn.
Het script ziet er alsvolgt uit, hopelijk kan iemand me vertellen wat er mis zou kunnen 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
<?php
$date
= date('md');
switch(true)
{
    case (
$date >= '0501' and  $date <= '0831'):
        $sql = 'SELECT CURDATE() as zomer';
    break;
    case (
$date >= '1206' and  $date <= '1226'):
        $sql = 'SELECT CURDATE() as kerst';
    break;
    default:

        $sql = 'SELECT CURDATE() as normaal';
}

?>
 



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.