webForumDet fria alternativet

DATETIME i php/mysql?

9 svar · 497 visningar · startad av ChrisK

ChrisKMedlem sedan feb. 200522 inlägg
#1

Har problem med en sak. Kör en mambo-portal och i en mysql-databas lagras datum när någon loggar in med hjälp av DATETIME i fältet "lastvisitDate". Men tiden är fel, det är fel tidszon och hjälper inte att ändra tidsoffset i mambon.
Sen har jag också ett php-script som visar när användare senast loggade in, kan man ändra tiden där?

Problemet finns postat här:
http://www.mambers.com/showthread.php?t=20168

Tack för all hjälp jag kan få!

MVH

Christer

jboy_87Medlem sedan aug. 20011 105 inlägg
#2

är det i databasen värdet visas fel eller i php scriptet?

ChrisKMedlem sedan feb. 200522 inlägg
#3

Värdet blir ju fel i databasen och även i php-scriptet. antingen får jag på nåt sätt fixa så att DATETIME sätter rätt värde eller att 6 timmar adderas till värdet av php-scriptet så att det blir korrekt på sidan, men huur?

jOOOLMedlem sedan sep. 200438 inlägg
#4

du får nog ta och använda substr på $row->lastvisitDate och ta ut timmarna sedan plussa på 6timmar och om det blir större än 24 plussa på en på dagen också...

ChrisKMedlem sedan feb. 200522 inlägg
#5

Låter som en ide, men hur gör jag det?

jOOOLMedlem sedan sep. 200438 inlägg
#6

Det skulle kunna se ut såhär, fast då kan det hända att det står att man varit inne 32:a mars osv...

iaf här är koden.

<?php
$test = $row->lastvisitDate;
$timme = substr($test,'11','2') + 6;
if($timme > 24) {
$nytimme = ($timme - 24);
if($nytimme < 10) { $nytimme = "0$nytimme"; }
$dag = substr($test,'8','2') + 1;
if($dag < 10) { $dag = "0$dag"; }
$nyttdatum = substr($test,'0','8').$dag." ".$nytimme.substr($test,'13');
} else {
if($timme < 10) { $timme = "0$nytimme"; }
$nyttdatum = substr($test,'0','11').$timme.substr($test,'13');
}
echo $nyttdatum;
?>

ChrisKMedlem sedan feb. 200522 inlägg
#7

perfa

Suveränt!

din kod funkar fint men kan du implementera den koden i min befintliga kod så vore det guld! (Och lite mindre huvudbry för en novis som mig..;))

defined( '_VALID_MOS' ) or die( 'Direct Access to this location is not allowed.' );

global $mosConfig_offset;

$count = @$params->count ? intval( $params->count ) : 5;

$query = "SELECT id, username, name, lastvisitDate"
. "\nFROM #__users"
. "\nWHERE block='0'"
. "\nORDER BY lastvisitDate DESC LIMIT $count";
// initialise the query in the $database connector
// this translates the '#__' prefix into the real database prefix

$database->setQuery( $query );

// retrieve the list of returned records as an array of objects

$rows = $database->loadObjectList();

// cycle through the returned rows displaying them in a table
// with links to the content item
// escaping in and out of php is now permitted
?>
<table cellpadding="1" cellspacing="1" border="0">
<?php foreach ($rows as $row) { ?>
<tr>
<td valign="top"><img src="<?php echo $mosConfig_live_site;?>/images/M_images/arrow.png" alt="" /></td>
<td><?php echo $row->username ?> <i>(<?php echo $row->name ?>)</i><br><span="smalldark">(<?php echo $row->lastvisitDate ?>)</span></td>
</tr>
<?php
}
?>

ChrisKMedlem sedan feb. 200522 inlägg
#8

joool, fick det att funka men om klockan är innan 10 på dagen så blir tiden 2005-03-08 0:16:41
Det fattas altså en timsiffra = 2005-03-08 0HÄR:16:41

ChrisKMedlem sedan feb. 200522 inlägg
#9

Fattar inte, nåt fel med if($timme < 10)-delen

ChrisKMedlem sedan feb. 200522 inlägg
#10

Ändrade lite och fick det att funka, tack joool!

Genererad på 382 ms · cache AV · v20260730165559-full.f96bc7eb