Avatar billede dellevela Nybegynder
21. april 2003 - 19:10 Der er 14 kommentarer og
1 løsning

top5 problem

jeg er igang med at lave en top5 online.
<font face="Verdana" size="1">
<body bgcolor="#cbc9c9">
<p align="left">Top 5 online: <br>

<?
require("db.php");
;
?>

<?
    if ($_GET[type] == 1){
          $res = mysql_query("SELECT * FROM brugersystem order by tid DESC limit 5");
    }
    elseif ($_GET[type] == 2){
        $res = mysql_query("SELECT * FROM brugersystem order by chatlines DESC limit 5");
    }
    elseif ($_GET[type] == 3){
        $res = mysql_query("SELECT * FROM brugersystem order by rubiner  DESC limit 5");
    }
    else {
          $res = mysql_query("SELECT * FROM brugersystem order by tid DESC limit 5");
    }
    $i = 1;
    while ($row = mysql_fetch_array($res)){?>
 
    <td bgcolor="#eeeeee" bordercolor="#eeeeee" width="233">
      <?=$row[brugernavn];?>

<?=$row[tid];?>  <br>

    </td>
    </tr>

  <?    $i++;} ?>

</p>

men i timer skriver den alt for meget. jeg har så prøvet i lidt tid. jeg mener at der skal sådan noget her ind i selve scriptet:
<?

$tid = $jir[tid];

$timer = floor($tid/60);

$minutter = $tid % 60;

$gee = $timer * 60;

$age = $tid - $gee;

if ($timer==0) {

echo "Du har har været online i $minutter min.<BR>";

} else {

echo "Du har har været online i $timer timer og $age min.<BR>";

}

?>

lige nu ser online tid sådan her ud.
fx står der nu:
top 5 online:
test 5314
test2 4366
test3 4354
test4 2614
test5 2214

jeg vil gerne have at den skriver:
fx:
top 5 online:
test altal rigtige timer,minutter
test2 213,42 timer
test3 34,34 timer
test4 33,32 timer
test5 22,22 timer


på forhånd tak
Avatar billede emmek Nybegynder
21. april 2003 - 19:45 #1
hvis tiden er i minutter skal du lave disse udregninger.
$timer = (int)($tid / 60);
$minutter = $tid % 60;
//Så smukificerer vi det lige lidt, sådan at det ikke bliver 1,1 men 1,01..
if($minutter < 10) $minutter = "0".$minutter;
if ($timer==0) {
echo "Du har har været online i $minutter min.<BR>";
} else {
echo "Du har har været online i $timer timer og $minutter min.<BR>";
}

//Men jeg ka ikke se hvad forskellen på $gee og $minutter er ud over en pokkers
//masse udregninger

/*
man ka også lave det med dage hvis det går rigtigt vildt for sig:

$dage = (int)($tid / (24*60));
$timer = (int)($tid / 60) % 24;
$minutter = $tid % 60;

Men det styrer du selv følgelig selv ;o)

*/
Avatar billede emmek Nybegynder
21. april 2003 - 19:48 #2
( at typecaste til integer(heltal) med (int) har samme effekt som floor, men du sparer et funktionskald, og den slags er min personlige kæpheste.. )
Avatar billede dellevela Nybegynder
21. april 2003 - 19:50 #3
jeg er ike så quick idag vil i ikke sætte det sammen i det her script:
<font face="Verdana" size="1">
<body bgcolor="#cbc9c9">
<p align="left">Top 5 online: <br>

<?
require("db.php");
;
?>

<?
    if ($_GET[type] == 1){
          $res = mysql_query("SELECT * FROM brugersystem order by tid DESC limit 5");
    }
    elseif ($_GET[type] == 2){
        $res = mysql_query("SELECT * FROM brugersystem order by chatlines DESC limit 5");
    }
    elseif ($_GET[type] == 3){
        $res = mysql_query("SELECT * FROM brugersystem order by rubiner  DESC limit 5");
    }
    else {
          $res = mysql_query("SELECT * FROM brugersystem order by tid DESC limit 5");
    }
    $i = 1;
    while ($row = mysql_fetch_array($res)){?>
 
    <td bgcolor="#eeeeee" bordercolor="#eeeeee" width="233">
      <?=$row[brugernavn];?>

<?=$row[tid];?>  <br>

    </td>
    </tr>

  <?    $i++;} ?>

</p>
Avatar billede emmek Nybegynder
21. april 2003 - 21:08 #4
<?
require("db.php");

switch($_GET[type])
{
1:
$res = mysql_query("SELECT * FROM brugersystem order by tid DESC limit 5");
break;

2:
$res = mysql_query("SELECT * FROM brugersystem order by chatlines DESC limit 5");
break;

3:
$res = mysql_query("SELECT * FROM brugersystem order by rubiner  DESC limit 5");
break;

default:
$res = mysql_query("SELECT * FROM brugersystem order by tid DESC limit 5");
break;
}

  print "<table>\n";
    while ($row = mysql_fetch_array($res))
    {
      print "<tr><td bgcolor=\"#eeeeee\" bordercolor=\"#eeeeee\" width=\"233\">\n";
      print $row[brugernavn]." "; //lille mellemrum
      $tid = $row[tid];
      $dage = (int)($tid / (24*60));
      $timer = (int)($tid / 60) % 24;
      $minutter = $tid % 60;
      $timeonlinestring = "Du har har været online i ";
      if($dage > 0) $timeonlinestring .= "$dage dage, ";
      if($timer > 0 || $dage > 0) $timeonlinestring .= "$timer timer og ";
      if($minutter > 0 || $timer > 0 || $dage > 0) $timeonlinestring .= "$minutter minutter.";
      print $timeonlinestring."</td></tr>\n";
    }
//Så ved jeg så ikke om du vil afslutte din table, men ellers kan du jo blot fjerne udkommenteringen af næste linje (\n betyder bare linjeskift..)
//print "</table>\n";
Avatar billede emmek Nybegynder
21. april 2003 - 21:11 #5
Debug!!!
erstat linjen:
if($minutter > 0 || $timer > 0 || $dage > 0) $timeonlinestring .= "$minutter minutter.";
med:
$timeonlinestring .= "$minutter minutter.";

//jeg glemte lige at den nok også skal skrive noget ud når brugeren ikke har brugt noget tid endnu.. håber d r ok?
Avatar billede emmek Nybegynder
21. april 2003 - 21:12 #6
Nåja ok, og så også lige hust kan sætte '?>' til sidst ;o)
Avatar billede dellevela Nybegynder
21. april 2003 - 21:36 #7
lige nu ser mit script sådan her ud:
<?
require("db.php");

switch($_GET[type])
{

$res = mysql_query("SELECT * FROM brugersystem order by tid DESC limit 5");
break;


$res = mysql_query("SELECT * FROM brugersystem order by chatlines DESC limit 5");
break;


$res = mysql_query("SELECT * FROM brugersystem order by rubiner  DESC limit 5");
break;


$res = mysql_query("SELECT * FROM brugersystem order by tid DESC limit 5");
break;
}

  print "<table>\n";
    while ($row = mysql_fetch_array($res))
    {
      print "<tr><td bgcolor=\"#eeeeee\" bordercolor=\"#eeeeee\" width=\"233\">\n";
      print $row[brugernavn]." "; //lille mellemrum
      $tid = $row[tid];
      $dage = (int)($tid / (24*60));
      $timer = (int)($tid / 60) % 24;
      $minutter = $tid % 60;
      $timeonlinestring = "Du har har været online i ";
      if($dage > 0) $timeonlinestring .= "$dage dage, ";
      if($timer > 0 || $dage > 0) $timeonlinestring .= "$timer timer og ";
      $timeonlinestring .= "$minutter minutter.";
      print $timeonlinestring."</td></tr>\n";
    }

?>

og den skriver den her fejL:


Parse error: parse error, unexpected T_BREAK, expecting T_CASE or T_DEFAULT or '}' in /customers/younk.dk/younk.dk/httpd.www/Ny mappe (2)/nyhedpics/top5.php on line 8
Avatar billede emmek Nybegynder
21. april 2003 - 21:39 #8
Du mangler jo også '1:', '2:', '3:' og 'default:'
Tjek lige mit igen.. og få dig en kop kaffe ;o)
Avatar billede dellevela Nybegynder
21. april 2003 - 21:41 #9
Parse error: parse error, unexpected T_LNUMBER, expecting T_CASE or T_DEFAULT or '}' in /customers/younk.dk/younk.dk/httpd.www/Ny mappe (2)/nyhedpics/top5.php on line 6
Avatar billede dellevela Nybegynder
21. april 2003 - 21:42 #10
har gjort 100% som dig. og den skriver den her fejl!
Avatar billede emmek Nybegynder
21. april 2003 - 21:44 #11
hehe ok.. nu skal jeg da vist også ned efter noget kaffe..
før '1:', '2:', '3:' og 'default:'
indsætter du 'case ' sådan at det bliver til:
'case 1:'

Så burde det også virke.. Det er noget crap ikke at skrive i en editor.. ;o)
Avatar billede dellevela Nybegynder
21. april 2003 - 21:48 #12
hvis jeg bare vil have den til at skrive:
test Du har har været online i 26,09 timer
Avatar billede emmek Nybegynder
21. april 2003 - 21:59 #13
Hvor 0,09 timer = 0,09 * 60 minutter = 5,4 minutter = 324 sekunder, ELLER
Hvor 0,09 timer = 9 minutter = 540 sekunder???

Du får lige 'while løkken for hvert af de to scenarier, som så kan skiftes ind i stedet for den gamle (du kan jo altid finde den herinde igen ;o)

//Først den hvor 0,09 timer = 324 sekunder.
    while ($row = mysql_fetch_array($res))
    {
      print "<tr><td bgcolor=\"#eeeeee\" bordercolor=\"#eeeeee\" width=\"233\">\n";
      print $row[brugernavn]." "; //lille mellemrum
      $tid = $row[tid] / 60;
      $timeonlinestring = "Du har har været online i $tid timer";
      print $timeonlinestring."</td></tr>\n";
    }

// og nu den hvor 0,09 timer = 540 sekunder..
    while ($row = mysql_fetch_array($res))
    {
      print "<tr><td bgcolor=\"#eeeeee\" bordercolor=\"#eeeeee\" width=\"233\">\n";
      print $row[brugernavn]." "; //lille mellemrum
      $tid = $row[tid];
      $timer = (int)($tid / 60);
      $minutter = $tid % 60;
      if($minutter < 10) $minutter = "0".$minutter;  //sæt 0 foran tallet.
      $timeonlinestring = "Du har har været online i $timer,$minutter";
      print $timeonlinestring."</td></tr>\n";
    }

//så har du tre løsninger hvis ikke du kan bruge nogen af dem, burde du efterhånden selv kunne gennemskue hvordan man skal ændre dem..
Avatar billede dellevela Nybegynder
21. april 2003 - 22:00 #14
tjekker imorgen gider ikke lige mere iorden ses senere! (skal jo i skole imorgen) æv
Avatar billede emmek Nybegynder
21. april 2003 - 22:03 #15
ok, men husk nu at lukke spørgsmålet hvis du får løst problemet..
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