Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  11 1133
I scriptet mitt har jeg en loggut knapp mittdomene.no/?logout, når jeg klikker på linken og skal logge ut får jeg SQL Error: Duplicate entry '416' for key. Er det da en feil i databasen eller scriptet (index.php) ?

Kan poste kodesnutt hvis dere trenger det for å hjelpe meg.


- Krishagenaa
Det er nok scriptet. PHP-snutt og SQL for den aktuelle tabellen øker sjansen for å få hjelp.

Du kan skrive ut create table-setningen fra shell med setningen under:
echo "show create table <tabell>" | mysql -u <bruker> --password=<passord> <database>
<?php
if(! defined('BASEPATH') ){ exit('Unable to view file.'); }

$sql = $db->Query("SELECT * FROM `game_stats` ORDER BY last_updated DESC LIMIT 1");
$game_stats = $db->FetchArray($sql);

$user_stats = unserialize($game_stats['user_stats']);
$player_stats = unserialize($game_stats['player_stats']);
$money_stats = unserialize($game_stats['money_stats']);
$online_stats = unserialize($game_stats['online_stats']);
$messages_stats = unserialize($game_stats['messages_stats']);
$forum_stats = unserialize($game_stats['forum_stats']);
$logevent_stats = unserialize($game_stats['logevent_stats']);
?>
<div style="margin: 0 auto; width: 630px;">
<div class="left" style="width: 310px;">
<div class="bg_c c_1 t_justify" style="width: 290px; margin: 10px 0 10px -1px;">
<p style="margin-top: 5px;">Spillet &aring;pnet <b><?=View::Time($game_stats['last_updated'], true)?></b>.<br /><span style="color: #555555;"><?=View::strTime(time() - $game_stats['last_updated'], 1, ', ')?> siden.</span></p>
<p><b>Flest antall spillere p&aring;logget samtidig:</b><br /><span style="color: #b04600;"><?=View::CashFormat($online_stats['highest_online'])?> spillere</span> - <?=View::Time($online_stats['highest_online'][1], true)?></p>
</div>
Database

DROP TABLE IF EXISTS `game_stats`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `game_stats` (
`user_stats` text,
`player_stats` text,
`money_stats` text,
`online_stats` text,
`messages_stats` text,
`forum_stats` text,
`logevent_stats` text,
`last_updated` int(64) DEFAULT '0'
) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0;
/*!40101 SET character_set_client = @saved_cs_client */;
Jeg tviler på det er den snutten der som genererer feilmeldingen. Nå har jeg ikke studert den veldig nøye, men feilmeldingen du får kommer an en INSERT eller en UPDATE hvor du prøver å skrive inn en nøkkel (antakelig en primary key) som er satt til unique. En SELECT vil ikke gi deg denne feilmeldingen.
user_stats int(225) Ja NULL
player_stats int(255) Ja NULL
money_stats bigint(255) Ja 0
online_stats int(225) Ja 0
messages_stats int(225) Ja 0
forum_stats int(1) Ja 1
logevent_stats int(255) Ja NULL
last_updated datetime Nei 2012-11-11 12:04:00

Postet feil, beklager
Det ser ut som tabellen er en singleton, hvis det går an å si det om SQL-tabeller. Den har ingen primærnøkkel eller andre nøkler og jeg vil tro at den bare har ei rekke.

Sjekk hvor mange rekker den har og legg inn snutten under i starten av fila.

Kode

ini_set('display_errors', '1');
Med litt flaks får du mer informasjon om hva som går åt skogen. For meg ser det ikke ut som feilen har noe med tabellen å gjøre.
Har allerede prøvd ini_set display errors uten noe resultat.. har vært oppe i hele natt for å finne feilen uten resultat. Håper på hjelp, noen som har en liten anelse om hva feilen kan være?
Lag en indeks for den aktuelle nøkkelen, aktiver auto increment.
Kan du poste SQL-linjen som gir feilmeldingen?

Dersom View klassen din skriver til tabellene, så er det ønskerlig å se hva den koden gjør også. Som sagt, så tror jeg ikke feilen ligger i koden du har postet, med mindre View klassen manipulerer tabeller.
Oi har postet feil koder her beklager det hehe.

id int(255) Nei auto_increment
Userid varchar(32) latin1_swedish_ci Nei
IP varchar(120) latin1_swedish_ci Ja
User_agent varchar(1000) latin1_swedish_ci Ja
Time_start int(225) Ja 0
Last_updated int(225) Ja 0
Expires int(225) Ja 1200
Active int(1) Ja 1


Kodesnutt:

<?php
$starttime = microtime(true);

define('BASEPATH', true);
require_once('../system/config.php');

if (!IS_ONLINE)
{
header("Location: ../index.php?orign=" . rawurlencode($_SERVER['REQUEST_URI']));
exit;
}

/*
IS ONLINE
*/

$wanted_reset_price = 5;
$wanted_reset_price = round($wanted_reset_price/100 * View::AsPercent(Player:ata('wanted-level'), $config['max_wanted-level']), 0);
if ($wanted_reset_price < 1)
$wanted_reset_price = 1;

// Log out.
if (isset($_GET['logout']))
{
$online_user->logout('IN-1');
header("Location: /?logout");
exit;
}
Jeg ser ingen inserts her heller Med mindre user objektet ditt inserter records på logout.
Send meg en pm så sender jeg deg scriptet, vil ikke dele hele koden min her dessverre..