Tijd in een INT veld

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Water Lilly

Water Lilly

16/11/2008 14:25:00
Quote Anchor link
Ik wil graag de tijd in een INT veld zetten zonder - - - : : ertussen.
Hoe zou ik dat moeten doen? =)

Deze wordt dan aangepast:

mysql_query("UPDATE `user` SET `tijd`=NOW() WHERE `user_id`='{$User->getUserId()}'");

Als ik het nu doe, vult hij alleen 2008 in. :)

Groetjes.
 
PHP hulp

PHP hulp

25/12/2024 20:10:10
 
Frank -

Frank -

16/11/2008 14:29:00
Quote Anchor link
Waarom zou je dat willen? Hoelaat is het dan nu? Oh, het kost je 3 kwartier om dat te gaan berekenen? Sterkte.

1) Kies de juiste datatypes voor de juiste soorten data. Dus een DATE, TIME of DATETIME wanneer je met datums en tijden aan het stoeien bent.
2) Backticks ` .... Schijten doe je op de pot, niet in je SQL.
3) {} horen niet thuis in SQL, weg er mee. Variabelen haal je buiten quotes.
4) Een query zet je eerst in een variabele en nooit direct in de functie die hem uitvoert. Dan kun je de query nog eens echoen wanneer je moet debuggen.
 
Water Lilly

Water Lilly

16/11/2008 16:38:00
Quote Anchor link
Het werkt gewoon helemaal hoor zoals hij daarboven staat x)
Dus dat is het probleem niet.

Hoe moet de code er volgens jou uitzien als hij zonder - - - : : in de db moet komen? :)
 
Frank -

Frank -

16/11/2008 16:44:00
Quote Anchor link
Gebruik het datatype DATETIME en dan de volgende query:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
UPDATE
  tabelnaam
SET
  datumtijd = NOW()
WHERE
  id = '345';

Dat is hoe de UPDATE-query eruit moet komen te zien om het record met id 345 van de huidige datumtijd te voorzien.

Jouw probleem wordt overigens veroorzaakt door het feit dat MySQL jouw data verknalt: "Oh, de datum met tijd '2008-11-16 16:41:34' past niet in een INT, laat ik de boel maar verneuken en alleen 2008 opslaan. Dat is vast wel goed"

Tja, MySQL... Er zijn mensen die dit normaal gedrag voor een database vinden. De sukkels.
 
Water Lilly

Water Lilly

16/11/2008 17:04:00
Quote Anchor link
Ik heb nu die regel zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_query("UPDATE user SET tijd = NOW() WHERE user_id={$User->getUserId()}");


Zonder {} werkte hij nl. niet.

Dan heb ik ook nog deze regel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
if($User->getTijd() + getal < time()){


En dan krijg je een fout melding, dan een else en dan wat je krijgt als het goed gaat.

Zie jij misschien een fout / verbeterpunt?
 
Water Lilly

Water Lilly

16/11/2008 17:05:00
Quote Anchor link
Hij zet dus wel de data er gewoon in, maar het lukt hem niet om het getal erbij op te tellen en dan dat te gaan vergelijken met de tijd.
 
Jesper Diovo

Jesper Diovo

16/11/2008 17:07:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
UPDATE user
SET tijd = DATE_FORMAT(NOW(), '%d%M%Y %H%i%s')
WHERE user = 1;


Al snap ik niet waarom je het zo doet. Zoals Frank uitlegt is een DATETIME veld vele malen beter.
 
Frank -

Frank -

16/11/2008 17:13:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$query
= "
  UPDATE
    user
  SET
    tijd = NOW()
  WHERE
    user_id= '"
.$User->getUserId()."'
"
;
mysql_query($query); // foutafhandeling doe je elders?
?>

Nu heb je geen smerige trukjes nodig om de boel werkend te krijgen: variabelen buiten quotes.

Wat de UPDATE-query met de vergelijking te maken heeft, is mij niet duidelijk. Veel vergelijkingen kun je gewoon in de database doen, daar staat de data tenslotte ook al.

In PHP kan het ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$oData
= new DateTime($User->GetTijd());
$oData->modify('+1 hour'); // uurtje er bij tellen
$oNow = new DateTime();

if($oData < $oNow){
  // doe iets
}
?>

Niet getest...

Edit: @Jezpur: Nu help je iemand van de wal in de sloot... Blijf dan bij een INT, daar heb je nog meer aan dan een waardeloze string.
Gewijzigd op 01/01/1970 01:00:00 door Frank -
 
John Cena

John Cena

16/11/2008 17:15:00
Quote Anchor link
Alsjeblieft Marlinda, ga eerst SQL en PHP goed leren gebruiken en ga leren waarom een DATE of DATETIME uberhaupt is gecreerd!!

Chilion
 
Water Lilly

Water Lilly

16/11/2008 17:24:00
Quote Anchor link
x) Jaja nu begrijp ik waarom het dom was :)

Nouja x) Weer wat geleerd =)

Je hebt me trouwens wel superblij gemaakt Frank xD Dankjewel :P
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.