login  Naam:   Wachtwoord: 
Registreer je!
 Forum

date functie doet vreemd

Offline Guardian - 10/07/2007 22:51
Avatar van GuardianNieuw lid Hallo allemaal,

hierbij post ik mijn script voor het in/uit-schrijven in mijn nieuwsbrief systeem.
Nu ken ik aan elke aanmelding een uniek id toe (op basis van de datum) via

$num1 = date("Ymdhis");

dit sla ik dan ook op in mijn database dmv
mysql_query();

nu wanneer ik $num1 in mijn query laat opslaan in de databank veranderd dit getal altijd naar het volgende getal: 2147483647

en ik heb echt geen flauw idee waarom?

hier mijn code:
http://www.plaatscode.be/5970/

op regel 28 zie je de declaratie van $num1,

op regels: 82 tem 87 neem ik hem op in de links om te bevestigen / weigeren die dan via mail verzonden worden (in de mail geeft $num1 wel nog de juiste waarde aan)
en dan op regel 101 - 102 wordt de query uitgevoerd en is het fout...dan is het getal opeens volledig anders.

Kan iemand me helpen?
ik begrijp het echt niet meer.:?:

11 antwoorden

Gesponsorde links
Offline JBke - 10/07/2007 23:04 (laatste wijziging 10/07/2007 23:05)
Avatar van JBke PHP gevorderde hoe is je tabel opgebouwd is je veld een int of date??

Dit wijst me op een fout van je veld bepaling in je database en niet aan je script of hoe je het uitleest?? gebruik in je query dateformat bij het uitlezen.
Offline Abbas - 10/07/2007 23:05 (laatste wijziging 10/07/2007 23:14)
Avatar van Abbas Gouden medaille

Crew .NET
Vergeet wat ik zei, ik had niet gelezen dat je het echt als een nummer wou gebruiken...
Offline marten - 10/07/2007 23:09
Avatar van marten Beheerder Staat het veld waarin de waarde $num1 komt wel op date of datetime? Anders gaat het nooit lukken. En dan kan je ook weer wat code weglaten door hetvolgende te doen in de query:

  1. <?php
  2. $query = "INSERT into mailing(naam,achternaam,email,conf) values('".$naam."','".$achternaam."','".$email."', NOW());";
  3. ?>
Offline Guardian - 10/07/2007 23:09 (laatste wijziging 10/07/2007 23:10)
Avatar van Guardian Nieuw lid een int dus ;)
@ marten,dit is niet nodig he, ik wil dat getal als integer gebruiken niet als date 
Offline Abbas - 10/07/2007 23:13 (laatste wijziging 10/07/2007 23:14)
Avatar van Abbas Gouden medaille

Crew .NET
Je hebt een ";" teveel aan het einde van je query op regel 101...
Het moet )"; zijn in plaats van );";

En ik denk dat het is "or die(mysql_error())"...
Offline smoos - 10/07/2007 23:16
Avatar van smoos PHP gevorderde Je getal is te groot voor het veld.

Waarom sla je het niet op in een datetime veld? daar is het voor bedoelt. En mysql heeft veel krachtige date functies
Offline marten - 10/07/2007 23:22
Avatar van marten Beheerder Als je het als nummer op wilt slaan moet je geen date gebruiken maar dan moet of mktime of strtotime gebruiken. Een date geeft namelijk niet standaard een integer terug.
PHP.net: mktime
PHP.net: strtotime
Offline Guardian - 10/07/2007 23:26
Avatar van Guardian Nieuw lid @titjes, die ; op het einde heb ik weggedaan (hoewel ik die altijd geburuik) maar maakt jammer genoeg geen verschil. Die error(); functie is een functie die ik zelf gemaakt heb.

@smoos:
Mijn int veld is 50chars groot, dus ruimschoots groot genoeg voor mijn $num1.
Die datetime veld kan er niets mee te maken hebben volgens mij, want ik wilhet puur als cijfer opslaan en niet als date...
Offline Simon - 10/07/2007 23:53
Avatar van Simon PHP expert Het maakt niet uit hoe groot je INT veld is, het ondersteunt maar tot een bepaald aantal, daarna moet je overgaan naar BIGINT (of MEDIUMINT, ik weet niet precies hoeveel deze ondersteunen)
Offline Guardian - 11/07/2007 00:13 (laatste wijziging 11/07/2007 20:53)
Avatar van Guardian Nieuw lid Het moet er echt aan liggen dat date(); geen integer terug geeft.

met settype(); of casten geeft hij gewoon 1 weer als waarde (wat me dus niet vooruit helpt)...

Iemand een id hoe ik het kan converten naar een integer en het dus deftig in de database kan zetten?
Offline Gerard - 12/07/2007 03:26
Avatar van Gerard Ouwe rakker 1) Maak gebruik van DATE of DATETIME velden in de database
2) Als je toch een integer wilt gebruiken, gebruik dan een timestamp

Wat je nu doet is zwaar nutteloos omdat je namelijk totaal geen berekeningen meer kan uitvoeren op die datum die je opslaat.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.275s