Avatar billede techboy992 Praktikant
10. oktober 2012 - 20:34 Der er 9 kommentarer og
1 løsning

Mysql Timestamp mere eller mindre end 24 timer

Prover paa at faa mit script til at goere noget hvis et timestamp er over 24 timer og goere noget andet hvis under 24 timer.

Men kan ski ikke faa det til at virke

Script:
<?php
error_reporting(E_ALL ^ E_NOTICE);
define('IN_SCRIPT',1);

/* Get settings from the settings.php file */
require 'settings.php';

/* Get database connection from the database.php file */
require 'database.php';


/* Start user session or output an error */
session_name('CCOUNT');
if (!session_start()) {
    error('Cannot start a new PHP session. Please contact server administrator or webmaster!');
}

function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}
mysql_select_db("awc24h_links", $con);

$user_id = $settings['user_id'];
if ($result = mysql_query("Select * FROM Log where user_id='".$user_id."' AND url='".curPageURL()."' AND last_visit='< NOW() - INTERVAL 1 DAY'"))
// now() -interval 1 day
echo '24 hours have passed';
// $result = mysql_query("SELECT * FROM Click order by RANDOM() LIMIT 1");

else

// header("Location: show.php");
echo 'under 24 hours since last click';

?>

Databasen last_visit er = 2012-10-10 16:54:29, altsaa under 24 timer siden.

Min side siger 24 hours have passed
Avatar billede olebole Juniormester
10. oktober 2012 - 21:03 #1
<ole>

Du har vist noget rod med lighedstegn og mindre-end i slutningen af linjen, som nok skal se sådan ud:

if ($result = mysql_query("Select * FROM Log where user_id='".$user_id."' AND url='".curPageURL()."' AND last_visit<'NOW() - INTERVAL 1 DAY'"));

- men hvorfor har du ikke omtalt den parse error, det manglende semikolon efter dén linje må have smidt?

/mvh
</bole>
Avatar billede techboy992 Praktikant
10. oktober 2012 - 23:02 #2
Den kom ikke med error bare at den blev med at skrive 24 hours have passed, uanset om jeg aendrede dato
Avatar billede techboy992 Praktikant
10. oktober 2012 - 23:27 #3
Men nu kommer den saa med parse error efter der indsat ;
Avatar billede erikjacobsen Ekspert
10. oktober 2012 - 23:47 #4
if ($result = mysql_query .....)    giver altid en true, for den siger kun om der var fejl eller ej, ikke noget om antal rækker i resultatet. Kig på mysql_num_rows.

Og det der semikolon-bøvl skyldes vist en blind høne
Avatar billede olebole Juniormester
11. oktober 2012 - 00:00 #5
Ja, det er klart, der skal ikke være noget semikolon. Njahh, 'hønen' var nu kun næsten blind - og kun på det ene øje - og så har vi faktisk været skilt i mange år. Den fejl påtager jeg mig skam helt selv  =)

$user_id = $settings['user_id'];

$result = mysql_query("Select * FROM Log where user_id='".$user_id."' AND url='".curPageURL()."' AND last_visit<'NOW() - INTERVAL 1 DAY'");

if (mysql_num_rows($res)<1) {
    echo '24 hours have passed';
} else {
    echo 'under 24 hours since last click';
}

- og selvom du har set den før:  Et godt, lille råd  *o)
Avatar billede olebole Juniormester
11. oktober 2012 - 00:01 #6
if (mysql_num_rows($result)<1) {
Avatar billede techboy992 Praktikant
11. oktober 2012 - 00:20 #7
Bliver vbed med at vise under 24 hours since last click ogsaa selvom jeg aendre dato i databasen

for linket er dato nu: 2012-10-09 16:54:29
                foer: 2012-10-10 16:54:29
Avatar billede techboy992 Praktikant
11. oktober 2012 - 03:41 #8
kan vaere der er en anden loesning
Det jeg ville var at det skal disable et link for 24 timer
i mit click system saa brugeren ikke klikker forgaeves da et klik kun taelles 1 gang i doegnet, paa toplisterne, systemet registrer heller ikke clicks for 24 timer naar der er klikket. Ville vaere laekkert hvis linket kunne helt forsvinde i 24 timer.

og skulle ende ud i en besked til brugeren: there is no more links to day, come back tomorrow aftert: tispunkt for sidste klik.

systemet er allerede sat til at loade et link random af gangen, ved klik paa en knap viser den saa et nyt random link.

timestamp bliver opdateret i click.php foer redirect til den topliste som linket hoerer til.

Haaber det er forstaaeligt hvad jeg vil.
Avatar billede techboy992 Praktikant
28. oktober 2012 - 01:09 #9
Saa lykkes det endeligt at faa det til at virke efter 24 timers proeven frem og tilbage.

Faerdig script:

<?php
//Fetch the current url
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
  $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
} else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
}
return $pageURL;
}

//Make the url to a variable
$urlen = (curPageURL());
//Connect to database
  // Some connection data

//Ask for time stamp
$res = mysql_query("SELECT * From Log WHERE url='$urlen'");
while ( $row = mysql_fetch_array($res) ) {

//Make the timestamp to a variable
$mysqltime = ($row['last_visit']);
}

//Ask if time now is under 24 hours from the timestamp
if (time() - strtotime("$mysqltime") >= 60*60*24) {
// Some script if over 24 hours

}

Else {
//Some script if under 24 hours
exit();
}
?>
Avatar billede techboy992 Praktikant
28. oktober 2012 - 01:11 #10
et test script kan ses paa http://www.awc24h.com/test/
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