Avatar billede Thomasrn Seniormester
12. oktober 2018 - 10:43 Der er 7 kommentarer

database automatisk ændre tal

har en tabel der hedder måneder i min database og være gange der er gåede 30 dage skal den plus de måneder der står i forvejen med +1 nogle der har en ide om hvordan det kan gøres
På forhånd tak :)
Avatar billede Slater Ekspert
12. oktober 2018 - 14:08 #1
Du kan gøre det med et cronjob der kører en gang om måneden, men det er en dum måde at gøre det.

Meget smartere er at gemme en fast dato når rækken oprettes, og når du så skal vide hvor mange måneder der er gået, trækker du den dato fra den nuværende dato.
Avatar billede Thomasrn Seniormester
17. oktober 2018 - 15:38 #2
Ja lyder som en god ide men hvad gør man så når årtallet ændre sig?
Avatar billede Slater Ekspert
17. oktober 2018 - 16:31 #3
Det kommer an på hvad du mener der skal ske.

Det mest normale vil være, at hvis noget blev oprettet for f.eks. 2 år siden, så vil der stå der er gået 24 måneder. I så fald skal du ikke gøre noget - det er udgangspunktet når du trækker to datoer fra hinanden.

F.eks. kan du gøre:
$d1 = new DateTime('2016-03-01');
$d2 = new DateTime();
$diff = $d2->diff($d1);


Den første dato skal naturligvis være den du henter fra databaseb. $diff vil nu indeholde et DateTime-objekt med forskellen på de to datoer, så du kan udskrive antal år og måneder (eller gange år med 12 og lægge det oven i måneder, hvis du vil have antal måneder).

Men hvis du ønsker noget andet end det, må du gerne beskrive det.
Avatar billede Thomasrn Seniormester
18. oktober 2018 - 07:30 #4
tror jeg er noglelunde med men hvis vi siger han er oprettet den 15/06/2017 så er der gået 8 måneder 15/02/2018 så skal der lægges 8 til men der må jeg jo ikke gange 1 med 12 selv om året har ændret sig for så får jeg jo lige pludselig 20 stedfor 8
Avatar billede Slater Ekspert
18. oktober 2018 - 09:11 #5
Det er slet ikke noget problem, for det du får ud af diff-funktionen er et DateInverval objekt, altså et objekt der repræsenterer hvor lang tid der er mellem de to datoer.

Mellem 15/06/2017 og 15/02/2018 vil du altså få et objekt bestående af
y => 0
m => 8

Det betyder intet om året er skiftet. Den er kun interesseret i tiden mellem de to.
Avatar billede Slater Ekspert
18. oktober 2018 - 09:11 #6
DateInterval* naturligvis
Avatar billede Thomasrn Seniormester
18. oktober 2018 - 13:11 #7
brugte den her
$dato1 = new DateTime('2010-01-19');
$dato2 = new DateTime('now');
$interval = $dato2->diff($dato1);

echo $interval->format('%m month');

altså dato1 skal laves om til dato da det er variablen er det der hvor jeg opretter personerne ($dato = date("Ymd")
men bare i tvivl om hvor jeg skal placer koden
kode hvor jeg opretter personer


<?php
include("app.php");
$app = new minAwesomeApp;
?>
<?php

$fuldenavn = ($_POST ['fuldenavn']);
$position = ($_POST ['position']);
$alder = ($_POST ['alder']);
$land = ($_POST ['land']);
$vægt = rand(65, 105);
$højde = rand(160, 205);
$classes = array('Højre','Venstre', 'Begge');
$ben = $classes[array_rand($classes)];
$skud = rand(3, 13);
$straffe = rand(3, 13);
$friskspark = rand(3, 13);
$hjørne = rand(3, 13);
$hurtighed = rand(3, 13);
$acceleration = rand(3, 13);
$udenholdenhed = rand(3, 13);
$kampånd = rand(3, 13);
$spring = rand(3, 13);
$aflervering = rand(3, 13);
$lederskab = rand(3, 13);
$dato = date("Ymd") ;








$app->DatabaseInsert(
  'spillere',
  array('fuldenavn','position','alder','land', 'vægt', 'højde', 'ben', 'skud', 'straffe', 'frispark', 'hjørne', 'hurtighed', 'acceleration', 'udenholdenhed', 'kampånd', 'spring', 'aflevering', 'lederskab', 'oprettelsedato'),
  array($fuldenavn, $position, $alder, $land, $vægt, $højde, $ben, $skud, $straffe, $friskspark, $hjørne, $hurtighed, $acceleration, $udenholdenhed, $kampånd, $spring, $aflervering, $lederskab, $dato,)
);


?>
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester