Ik heb een heel raar probleem. Ik heb 2 servers bij 2 verschillende webhosters staan. wanneer ik mijn administratiesysteem gebruik bij server 1 doet hij het wel, de datums worden goed weergegeven naar de database, niets aan de hand dus. Wanneer ik alles precies hetzelfde doe bij server 2 dan worden de datum's niet goed weergegeven. Alles wordt opgeslagen als 0000-00-00, 1970-01-01 of als 1999-11-30. Oke, dus ik probeer het zelf thuis via localhost. Installeer XAMPP en ik doe weer het zelfde als hiervoor. Nu krijg ik dus wederom die datum fout. Ik snap er niets van. Op 1 server werkt het wel en de andere 2 niet. Wat is hier tegen te doen, waar kan het aan liggen? Iemand een idee.
Alvast bedankt.
?
Onbekende gebruiker
21-04-2008 16:03
Misschien handig als je de code laat zien wat het 'fout' weergeeft...
Tja, MySQL, je kiest er zelf voor. Nu mag jij gaan raden waar het fout gaat, een goede database had je allang getrakteerd op een bruikbare foutmelding.
0000-00-00 => Een string die geen datum is of een leeg veld
1970-01-01 => Klinkt als een unix-timestamp, die begon op 1-1-1970, kun je verder niks mee.
1999-11-30 => Lijkt me een goede datum, maar ik ken de input niet.
1) Hoe maak jij de datums aan?
2) Gebruik je overal de php-functie checkdate() om te controleren of de datum wel een datum is?
3) Zet jij overal de gecontroleerde datum wel in de juiste volgorde?
4) Gebruik je wel overal een DATE of DATETIME om een datum (met tijd) op te slaan?
Offtopic: Debuggen gaat je waarschijnlijk meer tijd kosten dat het zoeken van een provider met een echte database en het ombouwen van je script... MySQL is slecht en blijft slecht, het is van a tot z onbetrouwbaar, zie de handleiding, daar staat het haarfijn in uitgelegd. Onbegrijpelijk dat mensen kiezen voor deze ellende...
?
Onbekende gebruiker
21-04-2008 16:11
@pgFrank, ik wordt (kots) misselijk van je gevit op MySQL. Iedereen weet inmiddels dat SQLLite, PostgresQL etc. beter is, dit hoef je niet bij elk (lees: ELKE) erin te vermelden.
Als ik voor elke vermelding over 'hoe-slecht-MySQL-wel-niet-is' 1 cent zou krijgen, dan zou ik miljonair zijn!
@pgFrank, ik wordt (kots) misselijk van je gevit op MySQL. Iedereen weet inmiddels dat SQLLite, PostgresQL etc. beter is, dit hoef je niet bij elk (lees: ELKE) erin te vermelden.
Als ik voor elke vermelding over 'hoe-slecht-MySQL-wel-niet-is' 1 cent zou krijgen, dan zou ik miljonair zijn!
hahahaha! Wordt maar eens doodziek van MySQL en stop met het accepteren van dit soort onzinnige bugs. Dit soort topics laten precies zien waarom MySQL een kloteproduct is. En nu vind jij mij lastig omdat ik de vinger op de zere plek leg? Momentje, zal ik even wat zout in de gapende MySQL-wonden strooien... hahahaha!
@pgFrank, ik wordt (kots) misselijk van je gevit op MySQL. Iedereen weet inmiddels dat SQLLite, PostgresQL etc. beter is, dit hoef je niet bij elk (lees: ELKE) erin te vermelden.
Als ik voor elke vermelding over 'hoe-slecht-MySQL-wel-niet-is' 1 cent zou krijgen, dan zou ik miljonair zijn!
Geheel mee eens.
Een tijdje/keertje is leuk, maar dit is hoogst irritant aan het worden.
?
Onbekende gebruiker
21-04-2008 16:18
pgFrank schreef op 21.04.2008 16:16
[quote='GaMer13 schreef op 21.04.2008 16:11']@pgFrank, ik wordt (kots) misselijk van je gevit op MySQL. Iedereen weet inmiddels dat SQLLite, PostgresQL etc. beter is, dit hoef je niet bij elk (lees: ELKE) erin te vermelden.
Als ik voor elke vermelding over 'hoe-slecht-MySQL-wel-niet-is' 1 cent zou krijgen, dan zou ik miljonair zijn!
hahahaha! Wordt maar eens doodziek van MySQL en stop met het accepteren van dit soort onzinnige bugs. Dit soort topics laten precies zien waarom MySQL een kloteproduct is. En nu vind jij mij lastig omdat ik de vinger op de zere plek leg? Momentje, zal ik even wat zout in de gapende MySQL-wonden strooien... hahahaha!
Dit zijn allemaal gedeeltes uit mijn script. De rest hebben jullie niets aan. Dit gaat over de datum. De functie DatumLijst staat appart in de functions.php.
@pgFrank: Zoals we de vorige post over gehad hebben, wordt nu alles opgeslagen als DATE, dit heb ik geheel omgezet. Alleen checkdate() gebruik ik niet, maar ik weet niet goed hoe ik hier gebruik van moet maken, ik heb me er nog niet in verdiept
Waarom zou je in hemelsnaam eerst met mktime() een timestamp creeren om deze vervolgens met date() om te zetten naar een datum die je in je INSERT query gebruikt?
Het lijkt erop dat je uit je formulier een dag, maand en jaar terug krijgt? Controleer dan eerst met checkdate() of het een geldige datum is, en zet hem daarna in het juiste formaat om in je INSERT query te gebruiken. Optellen van een bepaald aantal dagen bij een datum laat je aan de database over:
$sQuery = "
INSERT INTO tabel
(
factuurdatum,
betaaldatum
)
VALUES
(
'".$sDatum."',
'".$sDatum."' + INTERVAL 14 DAY
)
";
}
?>
Overigens is het vrij nutteloos om de betaaldatum op te slaan, aangezien dit een directe afgeleide is van de factuur datum. Die kun je dus ook gewoon weg laten.