Avatar billede net-city Nybegynder
24. juni 2005 - 17:31 Der er 30 kommentarer og
1 løsning

Update data'er fra en anden database

Hejsa, jeg har denne kode:
mysql_query("DELETE FROM online where date < '$okidoki'");


og ville hører om man ikke kan lave noget ala:


mysql_query("UPDATE brugere SET online='nej' where date(FRA DATABASEN "ONLINE" < '$okidoki'");

på forhånd tak.
Avatar billede net-city Nybegynder
24. juni 2005 - 17:50 #1
Kan det ikke lade sig gøre?
Avatar billede coderdk Praktikant
24. juni 2005 - 17:51 #2
Ja du kan lave queries fra forskellige databaser ved at referere til databasenavnet og tabelnavnet:

SELECT t1.felt1, t2.felt2 FROM database1.tabel1 AS t1 INNER JOIN database2.tabel2 ON t1.id = t2.id WHERE t2.dato < 'noget'

Det samme gør sig gældende ved UPDATE osv.
Avatar billede net-city Nybegynder
24. juni 2005 - 17:54 #3
Kan du få det til og matche til mit system? :) - så smid også lige et scar
Avatar billede coderdk Praktikant
24. juni 2005 - 17:55 #4
Jeg kan ikke se hvad du vil, du kæder jo ikke de to tabeller sammen rigtigt...
Avatar billede net-city Nybegynder
24. juni 2005 - 17:56 #5
Den skal opdatere "online" til "nej" i tabellen "brugere" når "date" fra tabellen "online" er < '$okidoki'
Avatar billede coderdk Praktikant
24. juni 2005 - 17:57 #6
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?
Avatar billede net-city Nybegynder
24. juni 2005 - 18:29 #7
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.
Avatar billede net-city Nybegynder
24. juni 2005 - 20:26 #8
"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?"

- Ja, den skal slette alle brugerne.
Avatar billede net-city Nybegynder
24. juni 2005 - 20:26 #9
eller mener sætte online til nej ;)
Avatar billede coderdk Praktikant
24. juni 2005 - 20:55 #10
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'");
Avatar billede net-city Nybegynder
24. juni 2005 - 21:19 #11
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
Avatar billede net-city Nybegynder
24. juni 2005 - 21:20 #12
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..
Avatar billede net-city Nybegynder
24. juni 2005 - 22:34 #13
smid svar.. havde lavet forkert ved indskrivning
Avatar billede coderdk Praktikant
24. juni 2005 - 22:34 #14
Ah ok :)
Avatar billede net-city Nybegynder
24. juni 2005 - 22:44 #15
Den vil stadig ikke sætte online til "nej"
Avatar billede net-city Nybegynder
24. juni 2005 - 22:45 #16
hov, 2sek :)
Avatar billede net-city Nybegynder
24. juni 2005 - 22:53 #17
Desværre, den sætter ikke et "nej" i online.
Min kode:


mysql_query("UPDATE brugere, online SET brugere.online='nej' WHERE brugere.brugernavn = online.bruger AND online.date < '$okidoki'");


tabel online:
id, bruger, date, ip

tabel brugere:
id, brugernavn, online
Avatar billede net-city Nybegynder
24. juni 2005 - 22:59 #18
$tid = Date('U');
$okidoki = $tid-4;

-- min variabler..
Avatar billede coderdk Praktikant
24. juni 2005 - 23:23 #19
Det er det samme som at sætte:

$okidoki = time() - 4;

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?
Avatar billede net-city Nybegynder
25. juni 2005 - 00:00 #20
jo, den udskriver UPDATE brugere, online SET brugere.online='nej' WHERE brugere.brugernavn = online.bruger AND online.date < '1119650413'
Avatar billede coderdk Praktikant
25. juni 2005 - 00:07 #21
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.

$sql = "SELECT * FROM brugere, online WHERE brugere.brugernavn = online.bruger AND online.date < '$okidoki'";
$qh = mysql_query($sql);
echo mysql_num_rows( $qh ) . " rækker fundet.<br>";
while ( $row = mysql_fetch_assoc( $qh ) )
{
  echo "<pre>"; var_dump( $row ); echo "</pre>";
}
Avatar billede net-city Nybegynder
25. juni 2005 - 00:13 #22
1 rækker fundet.

array(26) {
  ["id"]=>
  string(2) "13"
  ["brugernavn"]=>
  string(6) "Netcity"
  ["kodeord"]=>
  string(9) "kode"
  ["online"]=>
  string(3) "nej"
  ["clothes"]=>
  string(1) "1"
  ["haar"]=>
  string(1) "1"
  ["tilbehor"]=>
  string(1) "1"
  ["oprettet"]=>
  string(19) "13-06-2005 23:46:20"
  ["timer"]=>
  string(5) "15357"
  ["motrikker"]=>
  string(4) "1000"
  ["topid"]=>
  string(3) "165"
  ["leftid"]=>
  string(3) "172"
  ["rum"]=>
  string(18) "Landningszonen.jpg"
  ["feltid"]=>
  string(2) "20"
  ["kon"]=>
  string(4) "mand"
  ["zindex"]=>
  string(1) "1"
  ["email"]=>
  string(19) "test@test.dk"
  ["navn"]=>
  string(6) "Netcity"
  ["fritekst"]=>
  string(504) "ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss"
  ["alder"]=>
  string(2) "14"
  ["timeout"]=>
  string(0) ""
  ["timer2"]=>
  string(5) "15357"
  ["point"]=>
  string(0) ""
  ["bruger"]=>
  string(6) "Netcity"
  ["date"]=>
  string(10) "1119650919"
  ["ip"]=>
  string(13) "127.0.0.1"
}
Avatar billede net-city Nybegynder
25. juni 2005 - 00:40 #23
.. og hvad så? :)
Avatar billede coderdk Praktikant
25. juni 2005 - 01:28 #24
Dér var "online" sat til "nej", og det er denne record som den ville sætte til "nej" hvis du kørte den anden query, så har det virket?
Avatar billede net-city Nybegynder
25. juni 2005 - 02:00 #25
Har ikke virket, for jeg kunne stadig se min anden bruger på onlinelisten selvom den havde lukket vinduet ned
Avatar billede coderdk Praktikant
25. juni 2005 - 02:03 #26
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'...
Avatar billede net-city Nybegynder
25. juni 2005 - 02:14 #27
Hmm, nu hvor jeg logger ind på min bruger og går ind og tjekke så siger den "0 rækker fundet" :\?
Avatar billede net-city Nybegynder
25. juni 2005 - 02:15 #28
underligt :\ nu siger den:
array(26) {
  ["id"]=>
  string(2) "15"
  ["brugernavn"]=>
  string(6) "Netcity"
  ["kodeord"]=>
  string(9) "kode"
  ["online"]=>
  string(2) "ja"
  ["clothes"]=>
  string(1) "1"
  ["haar"]=>
Avatar billede net-city Nybegynder
25. juni 2005 - 02:15 #29
men aligevel, den viser stadig brugerne som "online" selvom de logger ud.
Avatar billede coderdk Praktikant
25. juni 2005 - 02:38 #30
Ok, prøv dette:

$sql = "SELECT * FROM brugere, online WHERE brugere.brugernavn = online.bruger AND online.date < '$okidoki'";
$qh = mysql_query($sql);
$n = mysql_num_rows( $qh );
echo "$n rækker fundet.<br>";
if ( $n > 0 )
{
  while ( $row = mysql_fetch_assoc( $qh ) )
  {
    echo "<pre>"; var_dump( $row ); echo "</pre>";
  }
  mysql_query("UPDATE brugere, online SET brugere.online='nej' WHERE brugere.brugernavn = online.bruger AND online.date < '$okidoki'");
  $sql = "SELECT * FROM brugere, online WHERE brugere.brugernavn = online.bruger AND online.date < '$okidoki'";
  $qh = mysql_query($sql);
  $n = mysql_num_rows( $qh );
  if ( $n > 0 )
  {
      echo "De er der stadig. Weird.";
  }
  else
  {
      echo "Det virkede, de er væk.";
  }
}
Avatar billede net-city Nybegynder
25. juni 2005 - 04:05 #31
Jaeh, du har ret. Men forstår bare ikke fejlen, men ja. det virker fint. så er det et andet sted jeg har kokset!
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