Anoniem2 Geplaatst: 12 januari 2011 Delen Geplaatst: 12 januari 2011 Momenteel heb ik onderstaande code:\r\n[code]\r\nSELECT tabel1.nr, tabel2.datum\r\nFROM tabel1\r\nJOIN tabel2 ON tabel1.nr = tabel2.nr\r\nWHERE DATE_FORMAT( geldigtot, \'%Y\' ) = YEAR( NOW( ) )\r\nAND tabel2.datum\r\nBETWEEN DATE_FORMAT(tabel1.geldigtot - INTERVAL 2 YEAR, %Y-07-01\' )\r\nAND DATE_FORMAT( NOW( ) ,\'%Y-07-01\' )\r\n[/code]\r\n\r\nLokaal werkt het prima, zet ik het \'live\' werkt het niet. Ik krijg dan meer gegevens te zien dan ik zou verwachten. Als ik de beide date_format-gedeeltes bij between vervang door harde data en deze tussen \" \" zet gaat het wel goed. Ik zou het echter graag dynamisch hebben.\r\nVolgens mij zou ik dus \" \" om de berekende twee data moeten zien te krijgen. Ben er al de hele dag mee bezig geweest om deze code uiteindelijk te krijgen, maar dat laatste stukje lukt me (vandaag) niet meer :( Quote Link naar reactie
Anoniem2 Geplaatst: 12 januari 2011 Auteur Delen Geplaatst: 12 januari 2011 WHERE DATE_FORMAT( geldigtot, \'%Y\' ) = YEAR( NOW( ) )\n\nNiet het tabel naam toevoegen\n\nWHERE DATE_FORMAT( tabel1.geldigtot, \'%Y\' ) = YEAR( NOW( ) )\n\nMeer gegevens in meer rijen dan verwacht? Quote Link naar reactie
Anoniem2 Geplaatst: 12 januari 2011 Auteur Delen Geplaatst: 12 januari 2011 Ben al aan het stoeien geweest met het wel/niet opnemen van de tabelnaam in query. Maakte geen verschil. \nScript moet van aantal mensen bepalen hoe vaak ze in een periode aanwezig zijn geweest. Aantal rijen (mensen) klopt, maar het aantal keer aanwezig niet. \nAls ik het lokaal uitvoer, wordt netjes het aantal keer aanwezig getoond tussen de twee data, maar op de webserver telt hij alle keren aanwezig.\n\n\nedit: heb het script getest bij een andere host en daar krijg ik wel dezelfde uitkomsten als lokaal. Heeft dit te maken met php-versie en/of (beveiligings)instellingen? Quote Link naar reactie
Anoniem2 Geplaatst: 12 januari 2011 Auteur Delen Geplaatst: 12 januari 2011 heeft met mysql versie te maken denk ik. Ik heb het niet nagegaan, maar het zou zomaar kunnen dat je een functie uit mysql 5 gebruikt en die werkt dan niet op een server die nog op versie 4 draait. Daar zou je eens naar kunnen kijken.\n\n Als dat de oorzaak is zou je kunnen overwegen om alleen de data op te halen en het daadwerkelijk uitrekenen in php te programmeren. Niet zo efficient, maar dan werkt \'t tenminste. Quote Link naar reactie
Anoniem2 Geplaatst: 12 januari 2011 Auteur Delen Geplaatst: 12 januari 2011 Het werkt niet met PHP Version 5.1.2. \nWel met Version 5.2.17\nSite wordt binnenkort verhuist naar host waar het wel werkt. Tot die tijd is script dan maar niet beschikbaar.\nBlijf wel benieuwd waarom het bij de 1 wel werkt en de ander niet. Zit er nog veel verschil tussen versie 5.1 en 5.2? Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2011 Auteur Delen Geplaatst: 13 januari 2011 In 5.2 zijn een aantal functies toegevoegd die 5.1 niet heeft. Mogelijk gebruik je toevallig net één van die functies. Kun je eenvoudig nagaan op de php website.\n\nMaar toch denk ik dat het aan de mysql versie ligt en niet aan de php versie. Je gebruikt immers MySQL om een aantal rijen te selecteren, en niet php. Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2011 Auteur Delen Geplaatst: 13 januari 2011 PHP versie != mysql versie en aan gezien je hier gebruikt maakt van een mysql code kan de PHP versie geen probleem zijn. Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2011 Auteur Delen Geplaatst: 13 januari 2011 sorry :-$\nVersies blijken te zijn: 5.0.22 en 5.0.91.\nAfgaande op [url]http://dev.mysql.com/doc/refman/5.0/en/news-5-0-x.html[/url] zit er bijna 4 jaar tussen beide versies... :s Kans is groot dat dat idd de oorzaak is. Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2011 Auteur Delen Geplaatst: 13 januari 2011 Heb nog eens gekeken naar je code, en denk dat dit mogelijk het probleem is:\r\n\r\n[QUOTE=Obelix71;556039]\r\n[code]\r\nDATE_FORMAT(tabel1.geldigtot - INTERVAL 2 YEAR, %Y-07-01\' )\r\n[/code][/QUOTE]\r\n\r\nIk kan nergens in de mysql handleiding vinden dat je INTERVAL op die manier mag gebruiken.\r\n\r\nJe zou als alternatief eens iets als het volgende kunnen proberen. Heb het niet getest overigens.\r\n\r\n[CODE]DATE_ADD(DATE_FORMAT(tabel1.geldigtot, %Y-07-01\' ), - INTERVAL 2 YEAR)[/CODE] Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2011 Auteur Delen Geplaatst: 13 januari 2011 Dank voor je reactie FooBar.\n\nBen creatief, maar meeste dingen bedenk ik o.b.v. tips/trucs die ik vind op internet. Waar ik die constructie vandaan heb, zou ik overigens zo niet weten.\nHet lijkt wel te werken lokaal en bij 1 van de hostingbedrijven :) ;-)\n\nMaar DATE_ADD? Daar zou ik nou weer niet opgekomen zijn. \nHeb er even naar gekeken (lokaal) en krijg als foutmelding: \'Notice: 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\' en dan de date_add constructie.\nOpbouw zou overigens DATEADD(datepart,number,date) moeten zijn. Diverse \'varianten\' geprobeerd, de foutmelding blijft. Nu helaas druk met aantal andere zaken; zal op ander tijdstip nog eens kijken.\nAls mijn constructie geen \'officieel goedgekeurde\' scriptwijze is, waarom krijg ik daar dan geen foutmelding op? Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2011 Auteur Delen Geplaatst: 13 januari 2011 [QUOTE=Obelix71;556249]Als mijn constructie geen \'officieel goedgekeurde\' scriptwijze is, waarom krijg ik daar dan geen foutmelding op?[/QUOTE]\r\nGeen idee, maar ik kan in de handleiding niet vinden dat het zou moeten kunnen, vandaar.\r\n\r\nOok DATE_ADD zou met underscore moeten zijn ([url]http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_date-add[/url])\r\n\r\nIs tabel1.geldigtot trouwens een veld van het type DATE (of DATETIME)? In dat geval zou je naar mij idee geen DATE_FORMAT hoeven gebruiken. Quote Link naar reactie
Anoniem2 Geplaatst: 13 januari 2011 Auteur Delen Geplaatst: 13 januari 2011 Je schijnt DATE_ADD en ADDDATE te hebben :s\n\ngeldigtot is van het type DATE. Ik wil alles weten met als peildatum 1 juli van een willekeurig jaar. Daarom de formule DATE_FORMAT.\n\nBen nog even snel aan het testen geweest. \ncode aangepast in:\n[code]\nBETWEEN DATE_FORMAT(DATE_ADD(geldigtot, INTERVAL -2 YEAR), \\\'%Y-07-01\\\') AND DATE_FORMAT(NOW(), \\\'%Y-07-01\\\')\n[/code]\nGeeft lokaal de juiste (=verwachte/verlangde) info, bij de host niet.\n\nVoor dit moment geloof ik het wel. Het werkt bij de nieuwe host en dat vind ik op dit moment het belangrijkste. \nDank! Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen