Så vil den jo sætte alle brugeres "online" til "nej", jeg synes ikke lige det giver meget mening - Er der et brugerid som du glemmer at kæde dem sammen med?
Nej, for den skal jo sætte alle brugere "online" til nej efter en vis tid.
her er mit system <?php session_start(); ?>
<?php include("db.php");
$tid = Date('U'); $ip = $_SERVER["REMOTE_ADDR"]; $okidoki = $tid-4; $result = mysql_query("SELECT * FROM online WHERE ip like '$ip'"); if (mysql_num_rows($result) == 0) {
mysql_query("INSERT INTO online (ip,date, bruger) values ('$ip',$tid,'$_SESSION[brugernavn]')"); } else { mysql_query("UPDATE online SET date=$tid WHERE ip like '$ip'"); }
mysql_query("DELETE FROM online where date < '$okidoki'"); ?>
ved mysql_query("DELETE FROM online where date < '$okidoki'"); skal den også sætte brugerenes "online" til nej.
"Så vil den jo sætte alle brugeres "online" til "nej", jeg synes ikke lige det giver meget mening - Er der et brugerid som du glemmer at kæde dem sammen med?"
Ok, det lader til at du snakker om to tabeller, ikke to databaser. Og så tror jeg heller ikke at det er hver bruger der skal fjernes, men kun dem der "gamle". Prøv denne:
mysql_query("UPDATE brugere, online SET brugere.online='nej' where brugere.brugernavn = online.brugernavn and online.date < '$okidoki'");
Fungere ikke rigtigt, men tæt på. Altså jeg har dette system. <?php session_start(); ?>
<?php include("db.php");
$tid = Date('U'); $ip = $_SERVER["REMOTE_ADDR"]; $okidoki = $tid-4; $result = mysql_query("SELECT * FROM online WHERE ip like '$ip'"); if (mysql_num_rows($result) == 0) {
mysql_query("INSERT INTO online (ip,date, bruger) values ('$ip',$tid,'$_SESSION[brugernavn]')"); } else { mysql_query("UPDATE online SET date=$tid WHERE ip like '$ip'"); } mysql_query("DELETE FROM online where date < '$okidoki'"); ?>
der ved mysql_query("DELETE FROM online where date < '$okidoki'"); skal den sætte brugere med date < '$oki' til online='nej'
er det svært og forstå? :\ for så må jeg vist hellere finde en anden løsning
det eks. du gav mig fik alle til og sættes til online = "nej" . og du skal hellere ikke udtrække et hvis brugernavn, da den skal slette inaktive brugere..
Altså at trække 4 sekunder fra nuværende tidspunkt.
Prøv lige at ændre:
mysql_query("UPDATE brugere, online SET brugere.online='nej' WHERE brugere.brugernavn = online.bruger AND online.date < '$okidoki'");
til:
$sql = "UPDATE brugere, online SET brugere.online='nej' WHERE brugere.brugernavn = online.bruger AND online.date < '$okidoki'"; echo $sql; mysql_query($sql);
og fortæl hvad den skriver ud - For øvrigt skal du naturligvis køre denne FØR du sletter fra online-tabellen! Du HAR et felt der hedder brugernavn i brugertabellen, ikke? Og det har samme indhold som brugerfeltet i onlinetabellen?
Det lader jo til at være korrekt - Prøv evt. at køre en lignende SELECT-query, og se hvad du får ud - Evt. bare kigge direkte i din database og se om det ikke er rigtigt.
Prøv for sjov køre den SELECT query igen, verificér at den stadig er der, sæt derefter "online" til "ja", og prøv så at køre den update query igen... Den update tager nøjagtigt de records du ser i den select, og ændre brugere.online til 'nej'...
Jaeh, du har ret. Men forstår bare ikke fejlen, men ja. det virker fint. så er det et andet sted jeg har kokset!
Synes godt om
Ny brugerNybegynder
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.