Skapa en "dagens låt funktion" ?

Permalänk
Medlem

Ok, nu så. För att få dagens datum i unixformat(sekunder från 1970) använd:

mktime(0, 0, 0, date('n'), date('j'), date('Y'));

Eftersom du vill hämta alla länkar från databasen som är FRÅN dagens start, till nästa dag, så använd:

mktime(0, 0, 0, date('n'), date('j')++, date('Y'));

Samma sak, fast en dag senare.

Alltså blir din query:

SELECT titel FROM dagenslatar WHERE datum => $dateBegin AND datum < $dateEnd LIMIT 1

där $dateBegin/end är respektive mktime rader ovan... Vet att det är lite rörigt med datumet nu, men det är värt det.

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Inaktiv
Skrivet av vobpler:

Ok, nu så. För att få dagens datum i unixformat(sekunder från 1970) använd:

mktime(0, 0, 0, date('n'), date('j'), date('Y'));

Eftersom du vill hämta alla länkar från databasen som är FRÅN dagens start, till nästa dag, så använd:

mktime(0, 0, 0, date('n'), date('j')++, date('Y'));

Samma sak, fast en dag senare.

Alltså blir din query:

SELECT titel FROM dagenslatar WHERE datum => $dateBegin AND datum < $dateEnd LIMIT 1

där $dateBegin/end är respektive mktime rader ovan... Vet att det är lite rörigt med datumet nu, men det är värt det.

Jag är lite trött just nu, men jag försöker fixa det imrogon!

Förstår dock inte var dateEnd och dateBegin kommer ifrån...

Permalänk
Inaktiv
Skrivet av anon133239:

Jag är lite trött just nu, men jag försöker fixa det imrogon!

Förstår dock inte var dateEnd och dateBegin kommer ifrån...

EDIT: Tror jag fattar, ska testa.

Får följande felmeddelande:
Fatal error: Can't use function return value in write context in C:\wamp\www\laddanermusikgratis\dagenslat.php on line 14

KOD:

<?php $con = mysql_connect("localhost","root","") or die(mysql_error()); if (!$con) { die('Could not connect: ' . mysql_error()); } else { mysql_select_db("test", $con); $dateBegin = mktime(0, 0, 0, date('n'), date('j'), date('Y')); $dateEnd = mktime(0, 0, 0, date('n'), date('j')++, date('Y')); $query = "SELECT titel, link FROM dagenslatar WHERE datum => $dateBegin AND datum < $dateEnd LIMIT 1"; $result = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($result) or die(mysql_error()); echo '<a href="' . $row['link'] . '">' . $row['titel'] . '</a>'; } ?>

Förövrigt, tack så hemskt mycket för all hjälp!!!

Permalänk
Medlem
Skrivet av anon133239:

Jag är lite trött just nu, men jag försöker fixa det imrogon!

Förstår dock inte var dateEnd och dateBegin kommer ifrån...

$dateBegin och $dateEnd är variabler som du skapar innan du kör din query. Koden som jag skrev innan genererar två datum i unixformat, den första är $dateBegin, som genererar antalet sekunder från 00:00, och den andra, $dateEnd, genererar antalet sekunder till nästa dag, alltså 24:00. I queryn använder du dom genom att välja att bara hämta dom rader där datumet är MELLAN dom två, alltså mellan två tider. Hoppas du förstår bättre nu, är inte super på att förklara.

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Medlem

Ändra $dateEnd raden till:

$dateEnd = mktime(0, 0, 0, date('n'), date('j')+1, date('Y'));

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Inaktiv

Eftersom jag har sparat unix för varje låt borde man väll kunna göra så att den låt med ett unixstamp som är mindre än det som är för tillfället visas, och sen kör man limit 1 och sen order asc? Borde det inte funka?

Permalänk
Inaktiv
Skrivet av vobpler:

Ändra $dateEnd raden till:

$dateEnd = mktime(0, 0, 0, date('n'), date('j')+1, date('Y'));

Får följande: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=> 1302220800 AND datum < 1302307200 LIMIT 1' at line 1

Dock måste jag väll använda mitt unix som finns i databasen va?

Permalänk
Medlem
Skrivet av anon133239:

Eftersom jag har sparat unix för varje låt borde man väll kunna göra så att den låt med ett unixstamp som är mindre än det som är för tillfället visas, och sen kör man limit 1 och sen order asc? Borde det inte funka?

Ja, det funkar. Men det fungerar inte om du vill lägga till fler länkar samtidigt (för framtiden), du pratade om det innan? Annars behöver du inte använda $begin/$end datum alls, det är bara att sortera efter ID...

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Medlem
Skrivet av anon133239:

Får följande: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=> 1302220800 AND datum < 1302307200 LIMIT 1' at line 1

Dock måste jag väll använda mitt unix som finns i databasen va?

Nej, det måste du inte! Du har ett syntaxfel i din query. Felet är att du har => istället för >=. Byt plats på dom så bör det funka.

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Inaktiv
Skrivet av vobpler:

Ja, det funkar. Men det fungerar inte om du vill lägga till fler länkar samtidigt (för framtiden), du pratade om det innan? Annars behöver du inte använda $begin/$end datum alls, det är bara att sortera efter ID...

Nej det jag menar är att jag sortera dem efter den som har ett unix som är mindre än det som är för tillfället men högst av dem som har mindre. Förstår du? Då sorteras ju dagens alltid? Och jag kan lägga in hur många som helst så länge de får egna unix som jag skapar själv.

Permalänk
Medlem
Skrivet av anon133239:

Nej det jag menar är att jag sortera dem efter den som har ett unix som är mindre än det som är för tillfället men högst av dem som har mindre. Förstår du? Då sorteras ju dagens alltid? Och jag kan lägga in hur många som helst så länge de får egna unix som jag skapar själv.

Smart, det funkar ja! Dumt av mig att krångla till det, skyller på att jag är trött, hehe.

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Inaktiv
Skrivet av vobpler:

Smart, det funkar ja! Dumt av mig att krångla till det, skyller på att jag är trött, hehe.

Dock fick jag det inte att funka... Ska testa lite mer tror jag

Permalänk
Medlem
Skrivet av anon133239:

Dock fick jag det inte att funka... Ska testa lite mer tror jag

Det borde bara vara: "WHERE datum <= ". time() ." ORDER BY datum DESC LIMIT 1"

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Inaktiv
Skrivet av vobpler:

Det borde bara vara: "WHERE datum <= ". time() ." ORDER BY datum DESC LIMIT 1"

Får felmeddelande: Parse error: parse error in C:\wamp\www\laddanermusikgratis\dagenslat1.php on line 16

Query:

$query = "SELECT titel, link FROM dagenslatar WHERE datum <= ". time() ." ORDER BY datum DESC LIMIT 1";

Permalänk
Medlem

Vad har du på rad 16? Du kan ta bort $dateBegin/end raderna nu om du inte redan gjort det. Kolla efter syntaxfel, du kan ha glömt ; eller " eller något.

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Inaktiv
Skrivet av vobpler:

Vad har du på rad 16? Du kan ta bort $dateBegin/end raderna nu om du inte redan gjort det. Kolla efter syntaxfel, du kan ha glömt ; eller " eller något.

La till ett ; på $unix:

$unix = time ();

Nu förstår jag fördelarna med unix. Med date() får jag inte rätt, men med unix får jag.

Återigen. tack som fan vobpler!

EDIT: För den som vill ha hela koden:

<?php $con = mysql_connect("localhost","root","") or die(mysql_error()); if (!$con) { die('Could not connect: ' . mysql_error()); } else { mysql_select_db("test", $con); $query = "SELECT titel, link FROM dagenslatar WHERE unix <= ". time() ." ORDER BY datum DESC LIMIT 1"; $result = mysql_query($query) or die(mysql_error()); $row = mysql_fetch_array($result) or die(mysql_error()); echo '<a href="' . $row['link'] . '">' . $row['titel'] . '</a>'; } ?>

Permalänk
Medlem
Skrivet av anon133239:

La till ett ; på $unix:

$unix = time ();

Nu förstår jag fördelarna med unix. Med date() får jag inte rätt, men med unix får jag.

Återigen. tack som fan vobpler!

Bra! Inga problem, bara glad att hjälpa till!.

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Inaktiv

För att göra ett simpelt sätt för en admin att lägga till låtar har jag nu gjort ett webgränssnit för att kunna lägga till dagenslåtar. Det den gör är att den hämtar unixet med högst värde, för att sedan lägga på ett dygn (86400 sekunder). Namn och länk fås via en simpel HTML-form. Datum fås via en lätt php-funktion (jag vet att den fungerar).

Dock får jag lite problem: jag kommer till en ful vit sida utan innehåll.

KOD: http://pastie.org/2024406

Jag ser inget fel i koden, ser ni?

Permalänk
Medlem

Jadu, jag ser inga syntaxfel iaf! Har du error-reporting på? Du kanske får något felmeddelande som inte syns? Prova sätta följande rad kod högst upp på sidan o se om du får något meddelande:

ini_set("error_reporting","E_ALL");

Får du inget felmeddelande kan du prova att echo:a ut text på olika ställen i koden för att se var den "bryts", sedan hitta någon lösning på problemet.

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus

Permalänk
Inaktiv
Skrivet av vobpler:

Jadu, jag ser inga syntaxfel iaf! Har du error-reporting på? Du kanske får något felmeddelande som inte syns? Prova sätta följande rad kod högst upp på sidan o se om du får något meddelande:

ini_set("error_reporting","E_ALL");

Får du inget felmeddelande kan du prova att echo:a ut text på olika ställen i koden för att se var den "bryts", sedan hitta någon lösning på problemet.

Nepp, inget error med din kod-"stipe", inget echoas ut heller och inge ny data i databasen, vad f*an?

Permalänk
Medlem
Skrivet av anon133239:

Nepp, inget error med din kod-"stipe", inget echoas ut heller och inge ny data i databasen, vad f*an?

Ingen aning vad som är fel, är trött nu med, kan inte tänka klart... :/

Visa signatur

Moderkort: ASUS P7P55D-E Pro, Grafikkort: Gigabyte HD6950 2GB, Processor: Intel i5 760 2,8GHz (3,6 GHz), Kylning: Noctua NH-U12P SE2, RAM: Corsair 4GB (2x2048MB) 1600MHz DDR3, Hårddisk: 1TB Samsung Spinpoint, Nätaggregat: Fractal Design Tesla 650W 80+, Chassi: Cooler Master HAF 912 Plus