Avatar billede Milla-Tigerdyr Praktikant
27. september 2011 - 16:53 Der er 11 kommentarer og
2 løsninger

14 dage mellem hvert køb.

Hej eksperter.

Jeg har et lille problem, og det er at jeg mellem hvert køb af et æg, gerne vil have at der skal gå 14 dage.

Jeg har pt. et kodestykke, der gør at man kan købe ét om dagen, men ved ikke hvordan, jeg skal lave det om til hver 14 dag.
Det kodestykke jeg har lige nu, er så hver gang man køber en hest, men pga. man køber et æg, via. hoppen, så har jeg noget der hedder "last_aeg" i min tabel, hvor jeg gemmer datoen på den sidste gang man købte et æg. Denne skal selvfølgelig kun gælde for hver HOPPE, og IKKE for hver hest/bruger :)



$data = mysql_fetch_assoc($result);
$last_aeg = $data['last_aeg'];

if(date("Ymd") > $last_aeg)
{
$idag = date("Ymd");

//her i mellem, har jeg så en sql der hedder

$sql2="UPDATE heste SET last_aeg='$idag' WHERE id='$id'";
$result2=mysql_query($sql2);

} else {
  echo "Maks 1 gang om dagen!";
}


Det der skal så laves om til hver 14 dag, hvordan gør jeg det?
Avatar billede olsensweb.dk Ekspert
27. september 2011 - 17:34 #1
se her http://www.vision.to/how-to-add-days-weeks-months-to-any-date-.php

noget i denne stil
$data = mysql_fetch_assoc($result);
$last_aeg = $data['last_aeg'];

$twoweeks = strtotime(date("Y-m-d", strtotime($date)) . " +2 week");

if($twoweeks > $last_aeg){
$idag = date("Ymd");

//her i mellem, har jeg så en sql der hedder

$sql2="UPDATE heste SET last_aeg='$idag' WHERE id='$id'";
$result2=mysql_query($sql2);

} else {
  echo "Maks 1 gang om dagen!";
}
Avatar billede Milla-Tigerdyr Praktikant
27. september 2011 - 17:37 #2
Okay super tak, men hvor kommer $date fra?:)
Avatar billede Milla-Tigerdyr Praktikant
27. september 2011 - 17:38 #3
glem det :D Havde lige overset $date variabellen i linket du sendte :P Tester det lige af :D
Avatar billede Milla-Tigerdyr Praktikant
27. september 2011 - 19:47 #4
Hej, den bliver altså bare ved med at kunne købe flere min kode ser således ud;

<?
session_start();
include("functions.php");
error_reporting(E_ALL);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<link href="style.css" rel="stylesheet" type="text/css">
<?
$userid = $_SESSION['userid'];
if(!is_numeric($userid)) { die('Af sikkerhedsmæssige årsager er siden stoppet i at loade. Kontakt webmaster hvis fejlen fortsætte'); exit(); }

$host="localhost"; // Host name
$username="users_camilla"; // Mysql username
$password=""; // Mysql password>**ER UDFYLDT**
$db_name="users_camilla"; // Database name
// Connect to server and select database.

mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");


$date = date("Y-m-d");// current date

$data = mysql_fetch_assoc($result);
$last_aeg = $data['last_aeg'];

$twoweeks = strtotime(date("Y-m-d", strtotime($date)) . " +2 week");

if($twoweeks > $last_aeg){
$idag = date("Ymd");

$id = $_GET['id'];
$navn = $_GET['hest'];
$pris = $_GET['pris'];
$bruger = $_GET['bruger'];
$mor = $_GET['mor'];
$morid = $_GET['morid'];

$sql2="UPDATE heste SET last_aeg='$idag' WHERE id='$morid'";
$result2=mysql_query($sql2);

$sql="UPDATE heste SET ejer='$bruger' WHERE id='$id'";
$result=mysql_query($sql);

$sql2="UPDATE members SET konto = konto - " . $pris . " WHERE myusername='$bruger'";
$result2=mysql_query($sql2);

$sql3="UPDATE heste SET Mor='$mor' WHERE id='$id'";
$result3=mysql_query($sql3);

if($result && $result2 && result3){
echo "Tillykke, du har nu avlet et æg!<br>
Din hoppe skal lige have lidt tid til at komme sig, så du kan avle igen,
om 14 dage.";
echo "<BR>";
}

else {
echo mysql_error();
}

} else {
  echo "Maks 1 gang hver 14 dag!";
}

?>
Avatar billede Milla-Tigerdyr Praktikant
27. september 2011 - 19:47 #5
Hov ups! Har to der hedder sql2, det er måske der fejlen ligger. Ændre lige :)
Avatar billede Milla-Tigerdyr Praktikant
27. september 2011 - 19:50 #6
Nu ser det således ud (rettet), men virker stadig ikke;


$date = date("Y-m-d");// current date

$data = mysql_fetch_assoc($result);
$last_aeg = $data['last_aeg'];

$twoweeks = strtotime(date("Y-m-d", strtotime($date)) . " +2 week");

if($twoweeks > $last_aeg){
$idag = date("Ymd");

$id = $_GET['id'];
$navn = $_GET['hest'];
$pris = $_GET['pris'];
$bruger = $_GET['bruger'];
$mor = $_GET['mor'];
$morid = $_GET['morid'];

$sql="UPDATE heste SET ejer='$bruger' WHERE id='$id'";
$result=mysql_query($sql);

$sql2="UPDATE members SET konto = konto - " . $pris . " WHERE myusername='$bruger'";
$result2=mysql_query($sql2);

$sql3="UPDATE heste SET Mor='$mor' WHERE id='$id'";
$result3=mysql_query($sql3);

$sql4="UPDATE heste SET last_aeg='$idag' WHERE id='$morid'";
$result4=mysql_query($sql4);

if($result && $result2 && $result3 && $result4){
echo "Tillykke, du har nu avlet et æg!<br>
Din hoppe skal lige have lidt tid til at komme sig, så du kan avle igen,
om 14 dage.";
echo "<BR>";
}

else {
echo mysql_error();
}

} else {
  echo "Maks 1 gang hver 14 dag!";
}
Avatar billede olsensweb.dk Ekspert
27. september 2011 - 21:22 #7
gør dig selv en tjeneste, stop med at bruge short_open_tag http://dk2.php.net/manual/en/ini.core.php#ini.short-open-tag
det er slået fra på flere og flere hoteller. ret alle dine <? til <?php



hvor er det vi skal kigge efter fejlen ??,
kommer du ind i if sætningen, med de 14 dage ??,
får du nogle fejl meldinger ??

står der det rigtige i dine sql sætninger ??
prøv at echo dem ud

$sql="UPDATE heste SET ejer='$bruger' WHERE id='$id'";
echo $sql; // kontrol
$result=mysql_query($sql);

det kan godt være du tror der står det rigtige, men bevis er bedre, det er set før der er tomme variable

eller udskriver den bare Maks 1 gang hver 14 dag!
27. september 2011 - 21:41 #8
Hvis man køber et æg idag, så bliver værdien af feltet last_aeg 27-9-2011, ikke sandt?  Hvis man så i morgen, 28-9-2011 vil købe et æg, så lægger din kode 14 dage til 28-9-2011 og får 12-10-2011, og så tillader din kode køb af æg hvis 12-10-2011 er større end 28-9-2011.  Men det vil det altid være.  Derfor tillader koden at købe æg hver dag.  (Så koden virker.) 

Det du havde i sinde er vel at lægge 14 dage til last_aeg, ikke til idag.  Hvis så idag er større end last_aeg plus 14 dage og så tillade køb af æg.  Sådan noget som (ikke testet):

$twoweeks = strtotime(date("Y-m-d", strtotime($last_aeg)) . " +2 week");

if($date > $toweeks)
{
  [tillad køb af æg og updater databasen

else echo "Maks 1 gang hver 14 dag";
Avatar billede Milla-Tigerdyr Praktikant
28. september 2011 - 15:23 #9
Christian_Belgien, ja så virker det :D
28. september 2011 - 15:47 #10
Det var godt.  Så er her et svar.
28. september 2011 - 15:48 #11
Men mit indlæg baserede sig på og videreudviklede et andet indlæg, så måske vil du bede om svar fra andre også og så dele pointene.
Avatar billede Milla-Tigerdyr Praktikant
28. september 2011 - 15:51 #12
ronols smid et svar?:)
Avatar billede olsensweb.dk Ekspert
28. september 2011 - 16:13 #13
får du her
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