unieke tijdstempel in database opslaan
ik ben maar eens aan een database begonnen.
lukt verder goed,
echter hoe schrijf ik een variable weg naar een database?
ik wil graag een unieke tijdstempel wegschrijven, zodat ik daar straks makkelijk op kan sorteren.
(laatste eerst )
dit is wat ik heb
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
/**
* @author danny
* @copyright 2012
*/
$con = mysql_connect("bladiebla");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("carousell", $con);
mysql_query("INSERT INTO Naam VALUES ('test3')");
mysql_query("INSERT INTO datum VALUES ('.SELECT CURTIME() + 0.')");
mysql_query("INSERT INTO text VALUES ('test21')");
mysql_close($con);
?>
/**
* @author danny
* @copyright 2012
*/
$con = mysql_connect("bladiebla");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("carousell", $con);
mysql_query("INSERT INTO Naam VALUES ('test3')");
mysql_query("INSERT INTO datum VALUES ('.SELECT CURTIME() + 0.')");
mysql_query("INSERT INTO text VALUES ('test21')");
mysql_close($con);
?>
zie nu in de databse staan bij datum
0000-00-00 00:00:00
ben de eerste keer met een simpele database bezig, krijg de naam en text wel erin omdat dit geen var is.
maar met de tijd zit ik een beetje te kloten.
hij zet nu alles op nul in de database ipv een tijdstempel.
de variablen die ken ik wel hoe ik die moet aanspreken, maar hoe zet ik deze in de databse.
ook wanneer ik deze eerst zo doe blijft het leeg of hij plaatst helemaal niets in de database.
volgends het boek zou dit moeten kunnen zo.. echter helaas..
Die(); wordt niet gebruikt, is niet echt gebruikersvriendelijk en hij geeft je exacte foutmelding in beeld. Wat betekend dat kwaadwillende zo sneller lekken kunnen ontdekken.
Maak een nette foutafhandeling voor je queries en gebruik geen die();
Heb jij een kolom die datum heet?
heb 3 kolomen gemaakt
Naam
datum
text
@ chris
ja zoals al gezegt is dit om even te kijken hoe het gaat en werkt.
dit draait dan ook niet zichtbaar voor andere.
je bedoeld dus dit:
ga ik nu ff testen
@kris
die gaan we ook even doorspitten tnx
- SanThe - op 13/08/2012 13:19:12:
INSERT INTO datum VALUES
Heb jij een kolom die datum heet?
Heb jij een kolom die datum heet?
Sorry. Ik bedoel tabel.
Laat je database structuur eens zien.
Gewijzigd op 13/08/2012 13:27:54 door - SanThe -
ik heb een database gemaakt carousell.
daarin 3 tabellen
Naam
datum
text
meer is er niet
Het lijkt erop dat je nu 3 tabellen hebt. Namelijk:
Tabel: naam
Tabel: datum
Tabel: text
Maar naar alle waarschijnlijkheid zijn dit fields ipv tabellen. En zullen deze fields in een tabel staan bijvoorbeeld log
Dan zou je query dus zo worden.
Dan kunnen je andere 3 queries ook samengevoegd worden en komt er dan zo uit te zien.
Code (php)
1
2
3
2
3
<?php
mysql_query("INSERT INTO log VALUES Naam='test3', Datum=UNIX_TIMESTAMP, Text='test21'");
?>
mysql_query("INSERT INTO log VALUES Naam='test3', Datum=UNIX_TIMESTAMP, Text='test21'");
?>
Gewijzigd op 13/08/2012 13:39:32 door Chris PHP
1 Tabel met 3 velden lijkt mij beter. Dan heb je de gegevens bij elkaar. Nu heb je een tabel met datums er in, maar wat kan je daar nu nog aan zinnige informatie uithalen. Het staat helemaal los van de naam en van de tekst.
ik ga straks eens kijken hoe dat gaat.
dan meld ik me weer.
ik weet wat je bedoeld ,
- SanThe - op 13/08/2012 13:41:19:
1 Tabel met 3 velden lijkt mij beter. Dan heb je de gegevens bij elkaar. Nu heb je een tabel met datums er in, maar wat kan je daar nu nog aan zinnige informatie uithalen. Het staat helemaal los van de naam en van de tekst.
Volgens mij moet een tabel toch minimaal 1 veld hebben om iets te kunnen schrijven? Lege tabellen kunnen toch geen insert queries op gedraaid worden?
Aangezien zijn eerste queries INSERT INTO datums VALUES 'test' is zonder enig veld op te geven, zal dat niet gaan werken lijkt me.
Waarom maak je er trouwens geen TIMESTAMP kolom van, die krijgt automatisch de huidige datum/tijd bij een insert of update (tenzij je het expliciet aangeeft)
INSERT INTO tableName VALUES('someField', 'someOtherField', UNIX_TIMESTAMP(now()))
De tip van Ger heeft overigens ook mijn voorkeur. Vergeet dat UNIX_TIMESTAMP gedoe.
Gewijzigd op 13/08/2012 22:40:34 door John D
Daarnaast kan je prima meerdere kolommen tegelijkertijd vullen:
Code (php)
1
2
2
INSERT INTO carousell
SET (naam, datum, text) VALUES ('voorbeeldnaam', NOW(), 'dit is de tekst');
SET (naam, datum, text) VALUES ('voorbeeldnaam', NOW(), 'dit is de tekst');
Als je automatisch een uniek nummer(tje) wilt kan je een kolom ID aanmaken.
En daar zet je dan de AI (Auto-Increment) aan. Die begint bij 1 te tellen en werkt zo door.
Zo werken nagenoeg alle forums met topics/berichten/webshops/artikelen etc etc etc.
Een TIMESTAMP kolom heeft hetzelfde formaat als een DATETIME kolom, dus er hoeft niets omgerekend te worden (wat anders ook niet zou moeten).