Toon posts:

[php/mysql] time probleemtje

Pagina: 1
Acties:

Verwijderd

Topicstarter
ben bezig met een tv krantje maar nu loop ik tegen een probleempje aan en ik zie het ff niet meer :?

ik wil met mijn select query alleen laten zien wat nog op tv komt en niet wat al geweest is, dus:
PHP:
1
2
3
<?
$sql = "SELECT id, zender, TIME_FORMAT(starttime,'%H:%i')as starttime, TIME_FORMAT(endtime,'%H:%i')as endtime, genre, program  FROM tvgids where zender='$channel'";
?>

ik dacht dus om naar de endtime te vergelijken met de huidige tijd, dus:
PHP:
1
2
3
4
5
<?
 $tijd = date("H:i"); 

$sql = "SELECT id, zender, TIME_FORMAT(starttime,'%H:%i')as starttime, TIME_FORMAT(endtime,'%H:%i')as endtime, genre, program  FROM tvgids where zender='$channel'and endtime>='$tijd'";
?>

dat werk alleen laat die dan ook de programma's na 12 uur niet meer zien (logisch natuurlijk ) iemand een oplossing?

Verwijderd

Topicstarter
foutje

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 12-09 21:31

Janoz

Moderator Devschuur®

!litemod

Als je de tijd nou eens niet gaat 'formatten', dan gaat het vergelijken ook een stuk makkelijker :)

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Verwijderd

Topicstarter
Op maandag 14 januari 2002 23:17 schreef Janoz het volgende:
Als je de tijd nou eens niet gaat 'formatten', dan gaat het vergelijken ook een stuk makkelijker :)
hoe bedoel je precies?

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Je moet tijd (meestal) vergelijken via hun 'unix timestamp', oftewel aantal seconden sinds 1970
Dit kan je in PHP ophalen met de functie time().
De waarde hiervan (een getal) kan je daarna gewoon vergelijken in je SQL query zonder een TIME_FORMAT hoeven te gebruiken op de database velden.
Hope this helps.

ps. Je hebt wel een leuk icon, maar chem (p&w mod) heeft deze ook al

Verwijderd

Topicstarter
thanks..zal eens kijken
Je hebt wel een leuk icon, maar chem (p&w mod) heeft deze ook al[/sub]
Tja dat zag ik ook ja :) maar volgens mij had ik hem eerder :P

Verwijderd

Topicstarter
Op maandag 14 januari 2002 23:27 schreef Orphix het volgende:
Je moet tijd (meestal) vergelijken via hun 'unix timestamp', oftewel aantal seconden sinds 1970
Dat werkt niet...probleem is dat ik niet veel te vergelijken heb. In mijn database staat het als volgt:

id=1 07:00:00
id=2 10:00:00
id=3 15:00:00
enz
id=30 23:59:59
id=31 00:10:00

ik wil nu gewoon vanaf id=30 laten zien

Verwijderd

Topicstarter
yeah..vette pret..en als het 12 uur is geweest laat die weer alles zien :(

Verwijderd

Topicstarter
niemand :'(

  • Bartholomew
  • Registratie: Januari 2000
  • Laatst online: 12-04 12:56
PHP:
1
2
3
<?
$sql = "SELECT * FROM tvgids WHERE starttime >= now()";
?>

even versimpeld voor de leesbaarheid maar is dit niet wat je zoekt? now() geeft he huidige tijd.

Verwijderd

gewoon datetime fields of plain unixtimestamp's schuiven in int(14)'s.
De manier die jij gebruikt is erg.. euh.. 'anders'.

Verwijderd

Topicstarter
[quote]Op dinsdag 15 januari 2002 17:14 schreef Bartholomew het volgende:
PHP:
1
2
3
<?
$sql = "SELECT * FROM tvgids WHERE starttime >= now()";
?>

even versimpeld voor de leesbaarheid maar is dit niet wat je zoekt? now() geeft he huidige tijd.
[/quote

nope dat werkt dus niet...dan laat die een programma dat om 00:10 begint niet zien (terwijl dat nog wel moet beginnen)

Verwijderd

Topicstarter
mij lijkt het handigst een query die kijkt wat er nu op tv is en vervolgens alles met een hoger id en waar variable zender='$zender' laat zien...mmmm kom je toch weer in problemen met een programma dat om 07:00 begint en een die op 00:10 begint (dus eigenlijk een dag later)

Verwijderd

Topicstarter
nog ff een vraagje...

als ik de query heb:
PHP:
1
2
3
<?
$sql = "SELECT id, zender, program FROM tvgids where zender='$zender' ";
?>

en deze aanroep met de url
http://www.url.com/tvgids.php3?zender=ned1

dan krijg je (natuurlijk) netjes alle programma's op NED1 te zien. Maar ik wil nu graag dat als de url is

http://www.url.com/tvgids.php3?zender=

dus zonder "ned1" dat die alle zenders laat zien, maar nu laat die dus niets zien.

Iemand een idee wat aan te passen in de query zodat die dat wel doet (vast wel)

Verwijderd

Topicstarter
kan iemand iets zeggen over bovenstaand probleem (die url) zit echt een beetje vast |:(

  • tazitiz
  • Registratie: Augustus 1999
  • Laatst online: 09-06 22:25

tazitiz

dbprutser

ik zou zeggen :
$sql = "SELECT id, zender, program FROM tvgids";
if ($zender) {$sql = $sql." where zender='$zender' ";}


oid?

Verwijderd

Topicstarter
nog een vraagje :)

deze query
PHP:
1
2
3
<?
$sql = "SELECT id, dag, zender, starttime, endtime, genre, program  FROM tvgids where zender='$zender' and starttime >=now() ORDER BY dag ASC , starttime ASC";
?>

probleem zit hem in die starttime >=now(), films die na 12 uur worden uitgezonden (dus een dag later) laat die nu niet meer zien. Er moet in die query dus iets zitten van:

"Laat de films zien die nu bezig zijn of vandaag nog moeten beginnen plus die van de dag daarop"


idee?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Eigenlijk loopt jouw dag dus van 7:00 uur 's ochtends tot 6:59 uur de volgende dag.
en eigenlijk is 1:10 uur dus 25:10 uur.

Dit komt neer op de volgende virtuele starttijd gerekend vanaf 7:00 uur 's ochtends:
(starttijd-7:00)mod 24:00
OF:
trek er 7 uur vanaf, tenzij je dan op een negatieve tijd uitkomt, tel er dan 17 uur bij op.

Kom je er nu uit?

Het zou ongelovelijk veel simpeler worden als je niet een time veld had, maar een datetime veld. Dan had een simpele between kunnen gebruiken.

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Op dinsdag 15 januari 2002 19:58 schreef sjaak1000 het volgende:
nog ff een vraagje...

als ik de query heb:
PHP:
1
2
3
<?
$sql = "SELECT id, zender, program FROM tvgids where zender='$zender' ";
?>

en deze aanroep met de url
http://www.url.com/tvgids.php3?zender=ned1

dan krijg je (natuurlijk) netjes alle programma's op NED1 te zien. Maar ik wil nu graag dat als de url is

http://www.url.com/tvgids.php3?zender=

dus zonder "ned1" dat die alle zenders laat zien, maar nu laat die dus niets zien.
[..]
In de query niet gebruik maken van een = teken maar een like
je conditie wordt dan:
code:
1
where zender like ifnull('&zender','%')

  • nicemister
  • Registratie: Januari 2002
  • Laatst online: 19-05-2023

nicemister

Just b Nice

Misschien moet je eens proberen

<?php

if (!$zender) { $zender="alles" }

?>

Sunny day


Verwijderd

Topicstarter
Het zou ongelovelijk veel simpeler worden als je niet een time veld had, maar een datetime veld. Dan had een simpele between kunnen gebruiken.
dat snap ik niet...hoe ziet zo'n field eruit dan...want misschien kan ik dat dan wel maken..

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Een veld waarin niet alleen de tijd staat maar ook de datum. Iets als "2001-01-20 07:10"
Dan wordt het wel makkelijker, toch?

Verwijderd

Topicstarter
op die fiets..das wel te maken...en hoe ziet zo'n between er dan ongeveer uit?

  • Goodielover
  • Registratie: November 2001
  • Laatst online: 18-08 11:34

Goodielover

Only The Best is Good Enough.

Eigenlijk zou ik willen zeggen: www.mysql.com/doc zoeken op BETWEEN, maar vooruit:
code:
1
where eindtijd between "2001-01-18 17:00" and "2001-01-19 07:00"

Verwijderd

Topicstarter
[lazymode]
en eigenlijk heb jij helemaal gelijk :+

thanks...
[/lazymode]

Verwijderd

Topicstarter
weer een vraagje...

hoe kan je in een query aangeven dat die per..laten we zeggen zender...maar één resultaat geeft.

dus ik heb een query heb die alle programma's voor alle nl zenders laat zien, maar wil alleen het eerst resultaat van elke zender laten zien....soort van limit op de $zender zeg maar...
Pagina: 1