login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Sql]Verkeerde date

Offline finduilas - 30/03/2006 17:15
Avatar van finduilasPHP gevorderde Hallo;

Wanneer ik met een formulier een datum wil ingeven wordt deze vervormd.
Ik geef in 17-04-2008 en ik krijg in de database 2017-04-20

Ik wil dus dat de datum exact wordt ingesteld zoals ik die ingeef.

datum date NOT NULL

Dit is wat in de database werd aangemaakt.

16 antwoorden

Gesponsorde links
Offline Rens - 30/03/2006 17:17
Avatar van Rens Gouden medaille

Crew algemeen
Komt door je date.
Daarvan neemt MySQL aan dat je een Amerikaanse notatie hebt.
Die is yyyy-mm-dd, en geen dd-mm-yyyy.
Je zou de datum er het beste met time() in kunnen zetten.
Is ook veel handiger als je ooit iets moet sorteren op datum.
Het outputten kan dan vervolgens met date() gedaan worden.
Die kan je time() datum omvormen tot een dd-mm-yyyy datum:
  1. <?PHP
  2. $iTime = time();
  3. echo date("d-m-Y", $iTime);
  4. ?>

Ongelooflijk onnutig voorbeeld, maar zo weet je in ieder geval wat ik bedoel.
Offline ikkedikke - 30/03/2006 17:20
Avatar van ikkedikke PHP expert dat is een beetje onzin;-) mysql heeft hele goede functies om datums om te zetten om op te slaan, ik raad je aan om in de manual van mySQL te kijken. Dat maakt een hoop duidelijk.
Offline finduilas - 30/03/2006 17:20 (laatste wijziging 30/03/2006 17:22)
Avatar van finduilas PHP gevorderde @Rensjuh:Ik snap er niet echt veel van 

@ikkedikke: Waar kan ik dat instellen?Want ik vind nergens iets die er op zou kunnen lijken.Enkel de language maar die staat al op dutch
Offline ikkedikke - 30/03/2006 18:02
Avatar van ikkedikke PHP expert je moet niks instellen, je moet alleen een functie hebben als date_format() (mysqlfunctie wel te verstaan, geen phpfunctie) die je datum omzet naar het goede formaat.
Offline finduilas - 30/03/2006 19:28 (laatste wijziging 31/03/2006 21:20)
Avatar van finduilas PHP gevorderde Zoiets?:
SELECT DATE_FORMAT(datum, '%d%m%Y') AS formatdatum FROM cupmatches

Offline Maarten - 31/03/2006 21:23 (laatste wijziging 31/03/2006 21:23)
Avatar van Maarten Erelid Indeed. Je kan wel
SELECT DATE_FORMAT(datum, '%d%m%Y') AS datum FROM cupmatches
gebruiken, aangezien je toch het veld 'datum' zelf niet gaat gebruiken (= Amerikaanse schrijfwijze) en je deze dus mag overschrijven.

En als je in PHP met de UNIX-timestamp wilt werken, en de datum is op z'n Amerikaans opgeslaan in je DB (overzichtelijker en duidelijker), kan je altijd de UNIX-waarde ervan bepalen dmv
SELECT UNIX_TIMESTAMP(datum) AS datum FROM cupmatches
Offline Ultimatum - 31/03/2006 22:45
Avatar van Ultimatum PHP expert even tussendoor, even manier van Rensjuh uitleggen aangezien het een best handige manier is die ik ook gebruik 

je slaat de datum op in je database als seconden vanaf 1970, dat doe je door de functie time(); te gebruiken

en om het te laten zien is het gewoon dit:
  1. <?php
  2. echo date("d-m-Y", $query['time']);
  3. ?>


waarbij $query['time'] de goede query is hoe je de seconden met de eerder gedefineerd time(); omzet naar een datum...

:):)
Offline finduilas - 01/04/2006 09:26 (laatste wijziging 01/04/2006 11:59)
Avatar van finduilas PHP gevorderde Euhm;
Maar hoe combineer ik dit met deze:
SELECT * FROM `cupmatches` ORDER BY `datum`
Offline MechaVore - 01/04/2006 12:09 (laatste wijziging 01/04/2006 12:10)
Avatar van MechaVore Gouden medaille

PHP gevorderde
Er uit halen ..
  1. <?
  2. $sql = mysql_query("SELECT * FROM `cupmatches` ORDER BY `datum`")or die(mysql_error());
  3. while ($assoc = mysql_fetch_assoc($sql))
  4. {
  5. echo date("d-m-Y", $assoc['datum']);
  6. }
  7. ?>


invoegen
  1. <?
  2. $sql = mysql_query("INSERT INTO `cupmatches` (datum, derest, ennogeen) VALUES ('".time()."', '','')")or die(mysql_error());
  3. ?>
Offline Ultimatum - 01/04/2006 12:26
Avatar van Ultimatum PHP expert je veld mag dan ook geen date zijn, maar iets van VARCHAR ( 10 ) zal het wel doen denk ik 
Offline finduilas - 01/04/2006 14:11 (laatste wijziging 01/04/2006 17:54)
Avatar van finduilas PHP gevorderde Waar moet ik die 2de while plaatsen?

  1. <?php
  2. $qSelect_gegevens = mysql_query('SELECT * FROM `cupmatches` ORDER BY `datum`') or die (mysql_error());
  3. while($agegevens = mysql_fetch_array($qSelect_gegevens))
  4. {
  5. echo '<tr>
  6. <td valign="top">datum</td>
  7. <td valign="top">'.$agegevens['speler1'].'</td>
  8. <td valign="top">'.$agegevens['speler2'].'</td>
  9. </tr>';
  10. }
  11. echo '</table>';
  12. }
  13. ?>
Offline derkiederkie - 01/04/2006 19:07
Avatar van derkiederkie Nieuw lid gebruik de mysql functie NOW() in plaats van time. Dit is effectiever
Offline finduilas - 01/04/2006 20:11 (laatste wijziging 01/04/2006 20:48)
Avatar van finduilas PHP gevorderde Maar hoe moet hij worden 'ingeplant'?
Offline MechaVore - 01/04/2006 21:19
Avatar van MechaVore Gouden medaille

PHP gevorderde
<td valign="top">'.date ('d-m-Y', $agegevens['datum']);.'</td>
Offline finduilas - 02/04/2006 09:19 (laatste wijziging 03/04/2006 09:06)
Avatar van finduilas PHP gevorderde Ik heb nu weer problemen met de quotes.
  1. <?php
  2. $qSelect_gegevens = mysql_query("SELECT * FROM `cupmatches` WHERE status = 'nieuw' ORDER BY `datum`") or die (mysql_error());
  3. while($agegevens = mysql_fetch_array($qSelect_gegevens))
  4. {
  5. <tr>
  6. <td valign="top">'.date ('d-m-Y', $agegevens['datum']);.'</td>
  7. <td valign="top">'.$agegevens['speler1'].'</td>
  8. <td valign="top">'.$agegevens['speler2'].'</td>
  9. </tr>
  10. ';
  11. }
  12. echo '</table>';
  13. }
  14. ?>

Ik heb al geprobeert alles buiten de php te brengen maar dan werkte m'n '.$agegevens...' niet meer.Ook nog op enkele andere manieren.Maar ik vind maar niet welke ik moet escapen.

EDIT: Had niet gezien dat er een ; achterstond.Nu werkt het.

EDIT2:Nu krijg ik een data uit het verleden 
Datum: Speler1: Speler2:
01-01-1970 Speedy Finduilas
Offline BramBo - 03/04/2006 10:26
Avatar van BramBo JS gevorderde Dat wil zeggen dat de datum leeg is of foute waarden bevat. 1-1-1970 is namelijk het begin van de Unix Timestamp. (het aantal seconde vanaf 1-1-1970 maakt de unix timestamp)

probeer eens de data te printen in zijn orginele formaat dus met var_dump() of print_r()
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.256s