Avatar billede Milla-Tigerdyr Praktikant
05. oktober 2011 - 19:39 Der er 44 kommentarer og
1 løsning

Min kode vil ikke virke.

Den bliver ved med at sige "Maks 1 gang hver 14 dag!", selvom datoen er på f.eks 0, eller der er gået 14 dage siden sidst, hvad kan dette skyldes? :s

<?
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
$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");

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

$result = mysql_query("SELECT * FROM heste WHERE id='$id'");

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

$date = date("Ymd");// current date
$twoweeks = strtotime(date("Ymd", strtotime($date)) . " +2 week");

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

$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 NielsErikP Mester
05. oktober 2011 - 20:22 #1
Hej...
Er det ikke fordi at $twoweeks er større end $last_aeg???
Er dit format af "date" korrekt??? hvis det er siger du "+ 2 Week" for noget der kun må ske 1 gang hver 14. dag.

Bare lidt tanker håber det er dig brugbart :-)
Avatar billede majbom Novice
05. oktober 2011 - 20:26 #2
hvad indeholder $last_aeg ?
Avatar billede olsensweb.dk Ekspert
05. oktober 2011 - 21:35 #3
@Milla-Tigerdyr fik Christian_Belgien ikke løst for dig her i http://www.eksperten.dk/spm/948117 #8 ??
Avatar billede Milla-Tigerdyr Praktikant
06. oktober 2011 - 19:36 #4
Ronols, jeg har prøvet hans forslag, det virkede alligevel ikke af en eller anden grund, så jeg prøvede at rette til last_aeg :)

Splazz; Det indeholder en dato, på hvornår man sidst købte et æg.

NielsErikP, hvad mener du? Altså jeg har både prøvet $twoweek > $last_aeg og omvendt :S
Avatar billede majbom Novice
06. oktober 2011 - 20:20 #5
prøv at fortæl hvad feltet indeholder helt konkret
Avatar billede NielsErikP Mester
06. oktober 2011 - 21:37 #6
Hej...
#4:
Jeg mener, at er $twoweek ikke lig med "dags dato + 2 uger" Og $last_aeg lig "dato sidst købt æg"!!

Skal du så ikke spørge om $twoweeks er større en $last_aeg + 2 uger????

Bare en tanke!!
Avatar billede majbom Novice
07. oktober 2011 - 06:28 #7
-> #6 - selvfølgelig, godt spottet!

der skal ligges 2 uger til last_aeg og ikke noget til dags dato, eller skal der trækkes 2 uger fra dags dato og ikke noget til/fra last_aeg
Avatar billede olsensweb.dk Ekspert
07. oktober 2011 - 06:42 #8
fejlen ligger i strtotime(date("Ymd", strtotime($date)) . " +2 week");

en lille hurtig udregning fra morgenstunden:
<?php
define ("TWOWEEKS", 1209600); // (60*60*24*7*2)
// $last_aeg = $data['last_aeg'];
// $last_aeg = strtotime("20110905");
$last_aeg = strtotime("20111005");
$last_aeg_two_weeks1 = strtotime(date("Ymd", strtotime($last_aeg)) . " +2 week");
$last_aeg_two_weeks = $last_aeg+TWOWEEKS;
$today = strtotime(date("Ymd"));// current date

// test udskrivninger (fejl finding)
// echo date("Y-m-d");// current date
// echo "<br/>\n";
echo "last_aeg = ". $last_aeg;
echo "<br/>\n";
echo "last_aeg_two_weeks1 = ".$last_aeg_two_weeks1;
echo " UPS den er for lille";
echo "<br/>\n";
echo "last_aeg_two_weeks = ".$last_aeg_two_weeks;
echo "<br/>\n";
echo "current date = ".$today;
echo "<br/>\n";

// denne stump code skal bruges
if($today > $last_aeg_two_weeks){
    echo "de kan godt købe et æg";
}
else{
    echo "der skal gå mindst 14 dage mellem hvert køb af 1 æg";
}
?>


så smid udregningen af last_aeg_two_weeks1 væk
Avatar billede Milla-Tigerdyr Praktikant
09. oktober 2011 - 21:56 #9
Argh jeg er totalt forvirret nu :S
Hvad skal jeg skrive/lave om, hvor og.. jah :S
Avatar billede olsensweb.dk Ekspert
10. oktober 2011 - 13:49 #10
noget i denne stil (utested)
<?php
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">
<?php
$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
$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");

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

$result = mysql_query("SELECT * FROM heste WHERE id='$id'");
$data = mysql_fetch_assoc($result);

define ("TWOWEEKS", 1209600); // (60*60*24*7*2)
$last_aeg = $data['last_aeg'];
//$last_aeg = strtotime($data['last_aeg']);
$last_aeg_two_weeks = $last_aeg+TWOWEEKS;
$today = strtotime(date("Ymd"));// current date
if($today > $last_aeg_two_weeks){

    // echo "de kan godt købe et æg";

    $idag = date("Ymd");

    $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!";   
    // her kune man evt skrive hvornår brugeren næste gang må købe, eller bare sidst købt dato
}
?>


$idag = date("Ymd"); burde nok ligges op over if sætningen og linjen
$today = strtotime(date("Ymd"));// current date
skulle så hedde
$today = strtotime($idag);// current date
Avatar billede Milla-Tigerdyr Praktikant
10. oktober 2011 - 14:44 #11
Hvis jeg skulle skrive hvornår brugeren næste gang kan købe, hvilken værdi skal jeg så hente?

- Og jeg tester det du har skrevet.
Avatar billede Milla-Tigerdyr Praktikant
10. oktober 2011 - 14:45 #12
Så virker det :D
Avatar billede Milla-Tigerdyr Praktikant
10. oktober 2011 - 14:47 #13
Nej vent, nu kan man bare blive ved med at købe æg :S
Den sætter ikke begrænsning på :/
Avatar billede majbom Novice
10. oktober 2011 - 15:08 #14
undskyld mig, men det virker altså ikke som at du prøver ret meget selv, før du vender tilbage - du har da efterhånden fået så mange værktøjer der kan hjælpe dig. hvad med at skrive de variabler ud der definerer hvornår man må købe og ikke må og se hvad de indeholder, så er løsningen måske slet ikke så langt væk...
Avatar billede olsensweb.dk Ekspert
10. oktober 2011 - 15:23 #15
#11
jeg ville bruge $last_aeg_two_weeks


#13
hvilke dataformat er $last_aeg ??
er det en date, datetime eller string ??

det var derfor jeg overvejede $last_aeg = strtotime($data['last_aeg']);
evt $last_aeg = strtotime(date("Ymd",$data['last_aeg'] ));

prøv at echo variablen $last_aeg og today ud før if sætningen, hvad skriver de ??

>Den sætter ikke begrænsning på :/
opdaterer den feltet i db ??
Avatar billede Milla-Tigerdyr Praktikant
10. oktober 2011 - 18:40 #16
splazz - det gør jeg skam, men tro mig jeg har fumlet med det der den sidste uge, ændret på alt hvad jeg kunne komme på, også har jeg så oprettet dette spørgsmål.
Jeg har virkelig prøvet, alt hvad der kunne tænkes, i mit hoved.

ronols - Okay, det gør jeg så :)
$last_aeg, er nu bare varchar, fordi jeg har lavet noget lignene, men mindre avanceret, og der fungerede en varchar fint.

Ja, den opdateret feltet i db ^^
Avatar billede olsensweb.dk Ekspert
10. oktober 2011 - 18:54 #17
>$last_aeg, er nu bare varchar
det var så også det svar splazz efterlyste i #2

så skal $last_aeg være dette,
$last_aeg = strtotime($data['last_aeg']);
du skal jo først lave din dato string om til en datetime


beskeden i else kunne være denne
echo "De kan først købe et nyt æg d. ".date("Y-m-d",$last_aeg_two_weeks);
Avatar billede Milla-Tigerdyr Praktikant
10. oktober 2011 - 19:52 #18
Man bliver stadig ved med at kunne købe æg :S

I kan lige få koden;
<?
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
$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");

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

$result = mysql_query("SELECT * FROM heste WHERE id='$id'");
$data = mysql_fetch_assoc($result);

    $idag = date("Ymd");

define ("TWOWEEKS", 1209600); // (60*60*24*7*2)

$last_aeg = strtotime($data['last_aeg']);
$last_aeg_two_weeks = $last_aeg+TWOWEEKS;
$today = strtotime(date("Ymd"));// current date
if($today > $last_aeg_two_weeks){
    // echo "de kan godt købe et æg";


    $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!";   
    // her kune man evt skrive hvornår brugeren næste gang må købe, eller bare sidst købt dato
}
?>
Avatar billede olsensweb.dk Ekspert
11. oktober 2011 - 13:11 #19
<?php
define ("TWOWEEKS", 1209600); // (60*60*24*7*2)
require_once("db_conn.php");
$id=1;

$result = mysql_query("SELECT * FROM heste WHERE id='$id'");
$data = mysql_fetch_assoc($result);
$last_aeg = strtotime($data['last_aeg']);
$last_aeg_two_weeks = $last_aeg+TWOWEEKS;
$idag = date("Ymd");
$today = strtotime($idag);

//test udskrivnning
//echo $last_aeg; echo "<br/>";
//echo $last_aeg_two_weeks; echo "<br/>";
//echo $today; echo "<br/>";

if($today > $last_aeg_two_weeks){
    echo "de kan godt købe et æg";
}
else{
    echo "De kan først købe et nyt æg d. ".date("Y-m-d",$last_aeg_two_weeks);
}
?>


db_conn.php
<?php
    $conn = mysql_connect ("localhost", "root", "", true);
    if (! $conn )     die( 'Could not connect: ' . mysql_error ());
    mysql_select_db("test") or die('Could not select database ');
    mysql_set_charset('utf8',$conn);
?>


sql
CREATE TABLE IF NOT EXISTS `heste` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `last_aeg` varchar(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

INSERT INTO `heste` (`id`, `last_aeg`) VALUES
(1, '20110905'),
(2, '20111005');


id 1 kan købe.
id 2 kan ikke købe

jeg vil dog anbefale dig at lave last_aeg om fra en varchar til et datetime, da det vil gøre det nemmere for dig på sigt at formatere dato tid uden for databasen, hvilke også er den rigtige måde, nogle vil have det udlæst som yyyy-mm-dd, ndre vil have det som dd-mm-yyyy, nogle vil have / istedet for -, og nogle helt uden
Avatar billede Milla-Tigerdyr Praktikant
11. oktober 2011 - 16:01 #20
Jamen jeg forstår ikke..Hvad skal alt det der kode gøre godt for?
- Min kode virker jo stadig ikke, hvad skulle en ny kode der ikke passer til mit system så? :s

Jeg er totalt forvirret nu..
Avatar billede olsensweb.dk Ekspert
11. oktober 2011 - 16:21 #21
det er kun den øverste blå box du behøver kigge på, finde tilsvarende code og rette det til.
jeg har så bare lagt min database connection ud i seperat fil, for at gøre det nemmere at vedligeholde
sql filen skal du ikke bruge til noget, det var en jeg lavede for at teste med det format du oplyste din ast_aeg er i.

du kan jo afprøve det i #19, huskt at rette i db_conn.php, hvis det virker så er det nemt at rette i din fil, hvis det ikke virker, er oplysningerne fra din db ikke korrekte, så skal vi have et sql dump af din database
Avatar billede Milla-Tigerdyr Praktikant
11. oktober 2011 - 17:39 #22
Jamen jeg forstår ikke det der med id 1 kan godt og id 2 kan ikke?:S
Det har jeg jo slet ikke noget med i min kode? :/
Avatar billede olsensweb.dk Ekspert
11. oktober 2011 - 17:53 #23
>Jamen jeg forstår ikke det der med id 1 kan godt og id 2 kan ikke?:S
hvis du ser i din code
$id = $_GET['id'];
jeg gider bare ikke lave en anden form der kalder denne form.

hvis man kalder med id 1 hentes den første dato, og som du kan se i mit db dump er den mere en 14 dage gammel, hvorimod datoen fra id 2 er under 14 dage gammel.
id nummerne hedder givetvis noget andet i din database, men det kan du se i phpmyadmin, og der kan du samtidig lave et db dump
Avatar billede Milla-Tigerdyr Praktikant
11. oktober 2011 - 18:25 #24
Kunne jeg så ikke bare stadig lave mit $_GET['id']; også bare ændre på dato'en i db'en, frem for at lave et helt nyt felt osv.?
Avatar billede Milla-Tigerdyr Praktikant
13. oktober 2011 - 18:41 #25
Nu har jeg testet din kode, og den siger at jeg godt kan købe æg selvom jeg IKKE burde kunne?:S

Den udskriver dette;

-62169987600
-62168778000
1318456800
de kan godt købe et æg

Fra disse variabeller, hvilket slet ikke giver mening? :/

echo $last_aeg; echo "<br/>";
echo $last_aeg_two_weeks; echo "<br/>";
echo $today; echo "<br/>";


- Jeg hentede min ID. Min last_aeg står på datetime, og i feltet på den hest jeg valgte, står der ( i databasen)  2011-10-13 00:00:00
Avatar billede Milla-Tigerdyr Praktikant
13. oktober 2011 - 19:04 #26
Har lavet koden lidt om, så blev den lidt mere normal;

Ny kode
$result = mysql_query("SELECT * FROM heste WHERE id='$id'");
$data = mysql_fetch_assoc($result);
$last_aeg = $data['last_aeg'];
$last_aeg_two_weeks = $last_aeg+TWOWEEKS;
$idag = date("Ymd");
$today = $idag;

//test udskrivnning
echo $last_aeg echo "<br/>";
echo $last_aeg_two_weeks; echo "<br/>";
echo $today; echo "<br/>";

Koden udskriver:
0000-00-00 00:00:00
1209600
20111013
de kan godt købe et æg

Hvilket vil sige at den altså ikke henter last_aeg ordentligt, hvorfor, ved jeg ikke?:S
Avatar billede Milla-Tigerdyr Praktikant
13. oktober 2011 - 19:11 #27
Der er noget helt galt, nu prøvede jeg nemlig lig noget nyt:

[$result = mysql_query("SELECT * FROM heste WHERE id='$id'");
$data = mysql_fetch_assoc($result);
$idag = date("Ymd");
$today = $idag;
$last_aeg = $data['last_aeg'];
$last_aeg_two_weeks = $today+TWOWEEKS;]

Og der udskrev den:

0000-00-00 00:00:00
21320613
20111013
De kan først købe et nyt æg d. 1970-09-04
Avatar billede Milla-Tigerdyr Praktikant
13. oktober 2011 - 19:11 #28
RETTELSE, jeg skrev:

$result = mysql_query("SELECT * FROM heste WHERE id='$id'");
$data = mysql_fetch_assoc($result);
$idag = date("Ymd");
$today = $idag;
$last_aeg = $data['last_aeg'];
$last_aeg_two_weeks = $today+TWOWEEKS;


//test udskrivnning
echo $last_aeg; echo "<br/>";
echo $last_aeg_two_weeks; echo "<br/>";
echo $today; echo "<br/>";
Avatar billede olsensweb.dk Ekspert
13. oktober 2011 - 19:27 #29
istedet for at prøve en masse bør du nok læse lidt på functionerne
strtotime http://dk2.php.net/strtotime og date http://dk2.php.net/manual/en/function.date.php

er du sikker på dit dataformat for last_aeg er varchar ??

lav et sql dump af heste tabellen inde fra phpmyadmin, og post det her, jeg er interesseret i data structuren og 2-3 records, ligesom jeg har lavet i #19
Avatar billede Milla-Tigerdyr Praktikant
13. oktober 2011 - 19:31 #30
Citat fra #25
- Jeg hentede min ID. Min last_aeg står på datetime, og i feltet på den hest jeg valgte, står der ( i databasen)  2011-10-13 00:00:00



- Hvordan får jeg phpmyadmin til at lave et sql dump?
Avatar billede Milla-Tigerdyr Praktikant
13. oktober 2011 - 19:34 #31
Jeg forstår stadig absolut intet af det der strtotime :S
Date tror jeg at jeg har okay godt fat i..
Avatar billede olsensweb.dk Ekspert
13. oktober 2011 - 19:57 #32
#30
lagde godt mærke til 2011-10-13 00:00:00 men tidligere skrev du at feltet var en varchar se #16, og har du lavet formatet om er det klart det ikke virker.

>- Hvordan får jeg phpmyadmin til at lave et sql dump?
i phpmyadmin:
åben db hvor din heste tabel ligger
marker tabellen heste 
tryk på export i menuen oppe i toppen 
se i export kollonnen, markering er i sql,
tryk på udfør nede i bunden
Avatar billede Milla-Tigerdyr Praktikant
13. oktober 2011 - 20:21 #33
Håber jeg har gjort det rigtigt;

--
-- Struktur-dump for tabellen `heste`
--

CREATE TABLE `heste` (
  `id` int(10) NOT NULL auto_increment,
  `navn` char(30) NOT NULL default 'Unavngivet',
  `ejer` varchar(200) NOT NULL,
  `race` varchar(100) NOT NULL,
  `born` datetime NOT NULL,
  `kon` varchar(20) NOT NULL,
  `avl` char(255) NOT NULL,
  `skills` tinyint(100) NOT NULL,
  `last_trained` varchar(255) NOT NULL default '0',
  `niveau` tinyint(10) NOT NULL default '0',
  `status` varchar(25) NOT NULL,
  `pris` int(7) NOT NULL default '15000',
  `billede` varchar(255) NOT NULL,
  `billede2` varchar(255) NOT NULL,
  `billede3` varchar(255) NOT NULL,
  `tegner` varchar(255) NOT NULL default 'Ukendt',
  `beskrivelse` text NOT NULL,
  `unik` varchar(3) NOT NULL default 'Nej',
  `Mor` varchar(50) NOT NULL default 'Ukendt',
  `alder` varchar(3) NOT NULL,
  `last_aeg` datetime NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `alder` (`born`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=105 ;
Avatar billede olsensweb.dk Ekspert
13. oktober 2011 - 20:34 #34
har lige afprøvet min code fra #19, og den virkede uden ændringer

CREATE TABLE IF NOT EXISTS `heste` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `last_aeg` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;


INSERT INTO `heste` (`id`, `last_aeg`) VALUES
(1, '2011-09-05 00:00:00'),
(2, '2011-10-05 00:00:00');


det andet format jeg havde tænkt på var timestamp, men så skulle der ændres lidt (strtotime skulle slettes)
strtotime omsætter jo netop en dato string til en unix time (sek siden 01-01-1970 kl 00:00:00)


>Håber jeg har gjort det rigtigt;
se rigtig nok ud, så bør du også kunne bruge den code jeg har lavet i #19 direkte
Avatar billede Milla-Tigerdyr Praktikant
13. oktober 2011 - 21:03 #35
Jeg forstår det ikke.. den siger jeg godt kan købe æg, hvilket jeg ikke burde kunne.


MEN som sagt: jeg prøvede jo at udskrive last_aeg lige før, og den henter den jo ikke rigtigt?:S

Det er jo helt vulapyk, prøv og se;

-62169987600
-62168778000
1318456800
de kan godt købe et æg


Jeg har udskrevet:
echo $last_aeg; echo "<br/>";
echo $last_aeg_two_weeks; echo "<br/>";
echo $today; echo "<br/>";
Avatar billede olsensweb.dk Ekspert
14. oktober 2011 - 10:21 #36
#28
$idag = date("Ymd");
$today = $idag; <-- her er en kæmpe fejl
$last_aeg = $data['last_aeg'];

du kan ikke lægge idag over i today direkte, da idag er en string og today skal anvendes som et timestamp, så du skal  convaterer idag til timestamp

$idag = date("Y-m-d");
$today = strtotime($idag);
$last_aeg = $data['last_aeg'];

hvis det ikke virker må du lige poste nogle af de data der fejler, post 2-3 rows af dine insert fra dit sql dump

kunne det tænkes dine datoer indeholder ulovlige karakterer (mellemrum i starten eller slutningen feks)
Avatar billede Milla-Tigerdyr Praktikant
14. oktober 2011 - 16:04 #37
Det står der allerede, da jeg kopierede dit kode direkte.

Hvad mener du med at poste 2-3 rows fra mine insert af sql dump??
Avatar billede olsensweb.dk Ekspert
14. oktober 2011 - 17:33 #38
>Hvad mener du med at poste 2-3 rows fra mine insert af sql dump??
i dit sql dump fik du nogle data også.
hvis ikke skal du sætte flueben i data, Komplette inserts, Udvidede inserts inde i din tabel export

det kan være en god ide at sætte flueben i Send (download), så får du det ud som en fil, hvilke er rigtig godt som backup
du kan se hvordam min opsætning er her http://olsensweb.dk/test/experten/spm/948652/untitled.gif

det jeg skal bruge ser sådan ud
INSERT INTO `heste` (`id`, `last_aeg`) VALUES
(1, '2011-09-05 00:00:00'),
(2, '2011-10-05 00:00:00');

det skal selvføgelig være dem du ved fejler
Avatar billede Milla-Tigerdyr Praktikant
14. oktober 2011 - 17:36 #39
Nårh ja, jeg fik noget data.
Så får du lige noget data, fra den hest jeg bruger som "testhest", ikke?
Avatar billede Milla-Tigerdyr Praktikant
15. oktober 2011 - 11:58 #40
Nu får du fra den hest jeg bruger som testhest.

--
-- Data dump for tabellen `heste`
--

INSERT INTO `heste` (`id`, `navn`, `ejer`, `race`, `born`, `kon`, `avl`, `skills`, `last_trained`, `niveau`, `status`, `pris`, `billede`, `billede2`, `billede3`, `tegner`, `beskrivelse`, `unik`, `Mor`, `alder`, `last_aeg`) VALUES
(19, 'Worlds Champion Desire', 'Admin', 'Havur', '2011-04-23 11:48:55', 'Hoppe', 'Nej', 30, '20111012', 3, '', 20000, 'http://www.waterhorses.yup.dk/waterhorses/havur/Tears5.png', 'http://www.waterhorses.yup.dk/waterhorses/havur/Tears5.png', 'http://www.waterhorses.yup.dk/waterhorses/havur/Tears5.png', 'Tears', '', 'Nej', '', '', '2011-10-13 00:00:00'),


Håber det var det du skulle bruge?
Avatar billede olsensweb.dk Ekspert
15. oktober 2011 - 13:09 #41
har lige afprøvet din datastructur med dine data i min code fra #19 og det virkede efter hensigten
<?php
define ("TWOWEEKS", 1209600); // (60*60*24*7*2)
require_once("db_conn.php");
$id=19;

$result = mysql_query("SELECT * FROM heste WHERE id='$id'");
$data = mysql_fetch_assoc($result);
$last_aeg = strtotime($data['last_aeg']);
$last_aeg_two_weeks = $last_aeg+TWOWEEKS;
$idag = date("Y-m-d H:i:s");
$today = strtotime($idag);

// test udskrivnning
echo $last_aeg; echo "<br/>";
echo $last_aeg_two_weeks; echo "<br/>";
echo $today; echo "<br/>";
// echo date("Y-m-d H:i:s", -62169987600); echo "<br/>";

if($today > $last_aeg_two_weeks){
    echo "de kan godt købe et æg";
}
else{
    echo "De kan først købe et nyt æg d. ".date("Y-m-d k\l H:i:s",$last_aeg_two_weeks);
}
?>


når du ændre datoen i phpmyadmin, får du så gemt ændringen ??

nb: har du overvejet at teste på dit $result, før du udlæser data ??, kunne jo være du får en ugyldig id fra $_GET['id'];
Avatar billede Milla-Tigerdyr Praktikant
15. oktober 2011 - 13:17 #42
Du har ret, der er noget galt når jeg henter min ID, men hvad kan der være galt?
Mit link til siden ser således ud;

<button onclick="window.location.href='avl_aeg_nu.php?id=<?php echo $id; ?>&hest=<?php echo $navn[0]; ?>&pris=<?php echo $pris[0]; ?>&bruger=<?php echo $myusername ?>&mor=<?php echo $nymor[0]; ?>&morid=<?php echo $morid ?>'">Køb æg</button>
Avatar billede Milla-Tigerdyr Praktikant
15. oktober 2011 - 13:22 #43
Åh, jeg tror jeg har fundet fejlen. Jeg har taget ægget ID, istedet for morens :)
Avatar billede Milla-Tigerdyr Praktikant
15. oktober 2011 - 13:29 #44
Jeg har fået det hele ordnet nu, tusind tak :D!
Problemet lå i -som sagt før- at jeg tog æggets ID, istedet for morens.

- Smider du lige et svar?:)
Avatar billede olsensweb.dk Ekspert
15. oktober 2011 - 13:39 #45
så må du få et svar her så vi kan få dette sp lukket
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

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