Hoi,
Onderstaande conde geeft de datum en tijd weer [achter elkaar].
<?php
function timestamp($t = null) {
if ($t == null) {
$t = time();
}
return date('YmdHis', $t);
}
echo 'Time stamp: ' . timestamp(time());
?>
Graag zou ik daar de microseconden achter willen plakken. Is dit mogelijk? Hoe zou ik dat kunnen doen?
Ik wil hier een net ingevoerde record uniek maken.
Deze functie levert geen DATETIME op, dus eigenlijk alleen maar problemen.
Wat versta jij onder uniek? Dat kan 1 veld uit een record zijn, maar ook een combinatie van velden. Met een auto_increment op het id heb je bijvoorbeeld ook al een uniek gegeven te pakken.
ik heb twee tabellen. In 1 tabel sla ik gegevens op en in tabel 2 sla ik een gedeelte van deze gegevens op.
Maar later wil ik de gegevens kunnen combineren en vergelijken.
Ik wilde een datum in beide velden uniek maken, tot op de milliseconden, indien mogelijk.
ik heb twee tabellen. In 1 tabel sla ik gegevens op en in tabel 2 sla ik een gedeelte van deze gegevens op.
Maar later wil ik de gegevens kunnen combineren en vergelijken.
Ik wilde een datum in beide velden uniek maken, tot op de milliseconden, indien mogelijk.
grt. Kabbi
Dat is dan een fout datamodel. Gegevens sla je namelijk slechts 1x op.
Hoe ziet jouw complete datamodel eruit en hoe heb je genormaliseerd?
Ja ik weet het, maar ik wilde een dynamisch menu maken. En de gegevens voor dit menu apart in en tabel opslaan. Het menu bestaat[structuur] voor verschillende hoofdthema's uit: een hoofdthema ->subthema -> ow.
Als ik alles uit de 1e [hoofd]tabel haal, ben ik bang dat ik voor elk hoofdtheme aan aparte query moet maken. Plus ik kan niet dynamisch een hoofdthema etc toevoegen dan.
Vandaar dat ik een aparte menu tabel wilde maken, waarin ik dan de datum van toevoeging van de gegevens in de hoofdtabel opsla in de menu tabel, alsook het hoofdthema.
De id van de hoofdtabel, waar enkele gegevens in staan is auto increment. Als ik nieuwe gegevens invoer moet ik dus ook iets invoeren in de andere[menu] tabellen. Hoe voer ik nu het id.nr van de tabel waar ik zojuist de gegevens heb ingevoerd in de andere tabellen in?
Zoiets als dit?
SELECT LAST_INSERT_ID() AS hoogste_nummer
//[voor de tabel waar zojuist is ingevoerd en een id.nr is aangemaakt]
Maar wat als iemand anders tegelijkertijd ergens anders ook gegevens aan het invoeren is? Dan zou dit in de war kunnen raken, is het niet? Daarom dacht ik met een datum/tijd/incl microseconden meer zekerheid te hebben.
Met de functie mysql_insert_id() kun je het id van de uitgevoerde INSERT-query opvragen. Dat gaat bij mijn weten altijd goed. De database voert de query uit, geeft aan of dit is gelukt en stuurt het id mee. Daarna zal de database de volgende query uitvoeren.
Wanneer je het echt waterdicht wilt hebben, dan zul je met table-locking aan de slag moeten gaan of een 'echte' database gebruiken, bv. PostgreSQL. Dan maak je een API aan die alles in 1 keer voor jou regelt. Vanuit PHP voer je dan geen queries meer uit, je roept gewoon de desbetreffende API aan en stopt hier de benodigde data in. Zie http://www.postgresql.org/docs/8.1/interactive/server-programming.html voor meer informatie.