Avatar billede find_p Nybegynder
27. august 2008 - 07:52 Der er 13 kommentarer og
1 løsning

Hjælp til SQL syntax

Hvordan får jeg "indflættet" følgende:

$sql = "SELECT `bruger_id` FROM `brugere` WHERE EXISTS (SELECT `ip` FROM `online` WHERE `online`.`ip` = `brugere`.`ip` AND `brugere`.`bruger_id` != '')";

i:


$query=mysql_query("SELECT *,ROUND((UNIX_TIMESTAMP(`time`)-UNIX_TIMESTAMP(`first_time`))/60) AS online_time FROM `online`,`brugere`  WHERE `online`.`ip` = `brugere`.`ip` AND `brugere`.`bruger_id` != '' ORDER BY time DESC");
while($row = mysql_fetch_array($query)) {

echo '<tr><td>'.$myrow['bruger_id'].'</td><td>' .$row['ip'].'</td><td>'.$row['url'].'</td><td>'.$row['tid'].'</td><td>'.$row['online_time'].'&nbsp;min.</td></tr>';
   
}
Avatar billede jakobdo Ekspert
27. august 2008 - 08:28 #1
SELECT `b.bruger_id`, `o.ip`,*,ROUND((UNIX_TIMESTAMP(`o.time`)-UNIX_TIMESTAMP(`o.first_time`))/60) AS online_time FROM `brugere` b INNER JOIN `online` o ON `o.ip` = `b.ip`
Avatar billede find_p Nybegynder
27. august 2008 - 08:47 #2
Tak igen ;o)

Den brokker sig over:

Parse error: syntax error, unexpected '`' in /customers/...........
Avatar billede jakobdo Ekspert
27. august 2008 - 09:04 #3
Prøv evt bare for test, at fjern alle `
Avatar billede find_p Nybegynder
27. august 2008 - 09:20 #4
Hermed gjort

Resultat:

Parse error: syntax error, unexpected T_STRING in /customers.....
Avatar billede jakobdo Ekspert
27. august 2008 - 09:45 #5
Så har du en anden fejl.. :o)
Avatar billede find_p Nybegynder
27. august 2008 - 10:15 #6
Nu bliver jeg i tvivl, hvilken af nedenstående er korrekt?

1)

$query=mysql_query("SELECT `b.bruger_id`, `o.ip`,*,ROUND((UNIX_TIMESTAMP(`o.time`)-UNIX_TIMESTAMP(`o.first_time`))/60) AS online_time FROM `brugere` b INNER JOIN `online` o ON `o.ip` = `b.ip`");
   
while($row = mysql_fetch_array($query)) {   

echo '<tr><td>'.$myrow['bruger_id'].'</td><td>' .$row['ip'].'</td><td>'.$row['url'].'</td><td>'.$row['tid'].'</td><td>'.$row['online_time'].'&nbsp;min.</td></tr>';
     
}

Denne giver følgende fejl:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /customers/............

2)

$sql = "SELECT `b.bruger_id`, `o.ip`,*,ROUND((UNIX_TIMESTAMP(`o.time`)-UNIX_TIMESTAMP(`o.first_time`))/60) AS online_time FROM `brugere` b INNER JOIN `online` o ON `o.ip` = `b.ip`";

$result=mysql_query($sql,$db) or die (mysql_error());
while($myrow = mysql_fetch_assoc($result))
if  ($result)
   
{
    echo '<tr><td>'.$myrow['bruger_id'].'</td><td>' .$row['ip'].'</td><td>'.$row      ['url'].'</td><td>'.$row['tid'].'</td><td>'.$row['online_time'].'&nbsp;min.</td></tr>';
     
  }

Denne giver følgende fejl:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '*,ROUND((UNIX_TIMESTAMP(`o.time`)-UNIX_TIMESTAMP(`o.first_time`))/60) AS online_' at line 1
Avatar billede jakobdo Ekspert
27. august 2008 - 10:22 #7
Du kan jo smide en or die(mysql_error()); på nummer 1)
Måske du får samme fejl.

Dog vil * ikke virke.
Da det skal være: o.* eller b.* og ikke bare *
Avatar billede find_p Nybegynder
27. august 2008 - 10:43 #8
Har prøvet at ændre 2) til o.* eller b.*

Fejl:

Unknown column 'b.bruger_id' in 'field list'
Avatar billede jakobdo Ekspert
27. august 2008 - 11:04 #9
har du bruger_id i tabellen brugere ?
Avatar billede find_p Nybegynder
27. august 2008 - 11:17 #10
Ja, det har jeg ;o)

Følgende Sql:

$sql = "SELECT `bruger_id` FROM `brugere` WHERE EXISTS (SELECT `ip` FROM `online` WHERE `online`.`ip` = `brugere`.`ip` AND `brugere`.`bruger_id` != ''ORDER BY time DESC)";
  $result=mysql_query($sql,$db) or die (mysql_error());
  while($myrow = mysql_fetch_assoc($result))
  if  ($result)
    { 
echo '<tr><td>'.$myrow['bruger_id'].'</td><td>' .$row['ip'].'</td><td>'.$row['url'].'</td><td>'.$row['tid'].'</td><td>'.$row['online_time'].'&nbsp;min.</td></tr>';
     
}


Bruger_ID:    IP-adresse:    Befinder sig på:    Log in tid:    Online tid:
Find                                                                    min.
Find (Job)                                                              min.
Totter                                                                  min.

Og denne giver:

$query=mysql_query("SELECT *,ROUND((UNIX_TIMESTAMP(`time`)-UNIX_TIMESTAMP(`first_time`))/60) AS online_time FROM `online`,`brugere`  WHERE `online`.`ip` = `brugere`.`ip` AND `brugere`.`bruger_id` != '' ORDER BY time DESC");
while($row = mysql_fetch_array($query)) {

echo '<tr><td>'.$myrow['bruger_id'].'</td><td>' .$row['ip'].'</td><td>'.$row['url'].'</td><td>'.$row['tid'].'</td><td>'.$row['online_time'].'&nbsp;min.</td></tr>';
   
}

Bruger_ID:    IP-adresse:    Befinder sig på:  Log in tid:      Online tid:
              85.81.20.***  /                  09:50:27        1 min.
              83.92.34.***  /                  15:04:21        0 min.
              80.62.130.***  /                  09:55:00        0 min.

Resultatet jeg ønsker:


Bruger_ID:    IP-adresse:    Befinder sig på:  Log in tid:      Online tid:
Find          85.81.20.***  /                  09:50:27        1 min.
Find (Job)    83.92.34.***  /                  15:04:21        0 min.
Totter        80.62.130.***  /                  09:55:00        0 min.
Avatar billede cronick Nybegynder
28. august 2008 - 12:38 #11
Såfremt cellen præcis hedder Bruger_ID i din tabel, så prøv at ændre det i din query også. Sæt også lige 'or die(mysql_error());' bag på din query ;)
Avatar billede find_p Nybegynder
29. august 2008 - 07:51 #12
-> cronick

Tak for din interesse.

Jeg har fået følgende til at gøre som jeg ønsker:

$sql = "SELECT *,ROUND((UNIX_TIMESTAMP(`time`)-UNIX_TIMESTAMP(`first_time`))/60) AS online_time FROM online LEFT JOIN brugere ON online.ip = brugere.ip WHERE `bruger_id` != '' ORDER BY time DESC";

$result=mysql_query($sql,$db) or die (mysql_error());
while($myrow = mysql_fetch_assoc($result))
if  ($result)
   
{

echo '<tr><td>'.$myrow['bruger_id'].'</td><td>' .$myrow['ip'].'</td><td>'.$myrow['url'].'</td><td>'.$myrow['tid'].'</td><td>'.$myrow['online_time'].'&nbsp;min.</td></tr>';
           
}
    mysql_close
Avatar billede jakobdo Ekspert
29. august 2008 - 08:17 #13
Er det så ikke lukke tid ?
Avatar billede find_p Nybegynder
29. august 2008 - 08:31 #14
Jo, tusind tak for jeres interesse og god weekend
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