Jeg har en database fyldt med forskellig brugerdata. Nu kunne jeg så godt tænke mig at jeg kunne sætte en dato ud for hver bruger, hvor denne udløber og skal fornyes. Der skal egentlig ikke ske noget når tiden udløber udover at den skal rette feltet "Aktiv" i databasen fra ja til nej, og selvfølgelig tilbage til ja når jeg har skrevet en ny slutdato ind.
Derudover vil jeg gerne have en funktion ud for hver bruger hvor den viser antal dage indtil den skal fornyes.
Nogen der har en idé til hvordan denne funktion lettest laves?
Jeg vil tro den letteste måde at gøre det på er at bruge ctime, hvis du ved hvad det er, også kaldet date(u).
date(u) er en funktion der viser sekunder siden UNIX, altså den 1 januar 1970.
Så det du kan gøre er at når en bruger opretter sig eller hvad den gør, så skal den skrive date(u) ind i din database f.eks i et felt sommer hedder ctime_created.
Så laver du også et felt som hedder ctime_end, og der skal du så have ctime for hvornår brugeren udløber. - Dette kan fås ved at regne det i sekunder, 1time er f.eks 3600sek.
Så laver du bare en if, der tjekker om der er nogle af dine brugeres ctime_end der er større end den nuværende ctime, hvis der er det skal den deaktivere den.
hvis du vil have vist dagen skal du bare igang med at regne.
Håber du kunne bruge noget at det jeg har sagt, ellers må du sige til.
tak for dit svar. jeg har dog valgt at gå lidt en anden vej.
Jeg har taget udgangspunkt i PHPs dato-funktion date('d/m-Y') - og tilsvarende lavet tre felter i min database til "D", "M" og "Y".
Mit spørgsmål er dog så bare nu hvordan jeg får den til at sige hvor mange dage der er tilbage inden den indtastede dato. Den skal på en eller anden måde først se om der er forskel på årstalle, derefter om der er forskel på måneden og til sidst dagen... og hvis der er forskelle skal den jo vide hvor mange dage det er.
men det betyder jo så også at den skal vide hvor mange dage der er i de forskellige måneder... Med mindre jeg vælger at lade den sige:
Der er 2 år, 1 måned og 16 dage tilbage.
Dette er egentlig fint nok, men kan ikke lige se hvordan det laves på den letteste måde.
Derfor det skal laves i en ctime / date(u), som jeg nævnte i mit tidligere svar.
PHP har ingen funktion til at regne det ud, og det bliver en lang slave kode at få lavet, hvis du vil gøre det på den måde som du siger der, det bliver rigtig mange if's.
Tænk lidt over det og vend tilbage, jeg kan godt hjælpe dig med at lave et script som fungere med ctime.
Okay, jeg har lyttet til rådene, og har fundet et script jeg har rettet lidt i. Det er følgende:
----------------------------------------------------------- <?php // Set den dato der tælles ned til (år, måned, dag, time, minutter) taelned(2010,6,19,00,00);
function taelned($aar, $maaned, $dag, $time, $minutter) { $taelned_dato = mktime($time, $minutter, 0, $maaned, $dag, $aar, -1); // Hent den korekte dato $i_dag = time(); $difference = $taelned_dato - $i_dag; if ($difference < 0) $difference = 0;
/* Sæt datoformat til dansk */ setlocale(LC_ALL, 'da_DK.ISO_8859-1');
// Hvis $dage_tilbage er = 0 skrives gøres der opmærksom på udløb if ($dage_tilbage == 0) { $udlob = "kontrakten er udløbet og skal fornys"; $farve = "CA0000"; $s_farve = "FFFFFF"; } else { // Og ellers fortæller vi hvor lang tid der er igen $udlob = "Der er ".$dage_tilbage." dage tilbage af kontraktperioden "; $farve = "F6F43C"; $s_farve = "000000"; } } ?>
Fejlen er "Call to undefined function taelned". Dvs. at du i linje 282 prøver at kalde funktionen taelned(); men den funktion er ikke defineret i search.php.
På dansk betyder det, at funktionen taelned (som du har skrevet koden til ovenfor) ikke er en del af filen search.php Du mangler højst sandsynligt at inkludere den fil hvor taelned funktion er i.
// Hvis $dage_tilbage er = 0 skrives gøres der opmærksom på udløb if ($days == 0) { $udlob = "kontrakten er udløbet og skal hurtigst muligt forlænges!"; $farve = "CA0000"; $s_farve = "FFFFFF"; } else { // Og ellers fortæller vi hvor lang tid der er igen $udlob = "Der er $days dage tilbage af kontraktperioden "; $farve = "F6F43C"; $s_farve = "000000"; } ?>
Tusind tak for hjælpen alle sammen.
DGudiksen, det var trods alt dig der bragte mig ind på sporet, så smid et svar og endnu engang tak.
Hvis du fik den fejl skyldes det, at du prøvede at kalde en funktionen der ikke eksisterede. Sådan er det.
Men fint du fik det til at virke.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.