Avatar billede net-city Nybegynder
25. april 2005 - 22:28 Der er 12 kommentarer og
1 løsning

Noget med time() i php.

Hvor ligger fejlen ?-)


<?php
session_start();
?>


<?php
include("db.php");
$time = time();
$hentNy = mysql_query("SELECT * FROM venner WHERE hvem = '$_SESSION[brugernavn]'");
while($nyRow = mysql_fetch_array($hentNy)){

$hent1 = mysql_query("SELECT * FROM brugere WHERE brugernavn='$nyRow[ven]'")
$row1 = mysql_fetch_array($hent1);


if ($row1[loggetpaa] == "$time"){
echo "Din ven $row1[ven] er lige logget på";
}
}
?>

Som i kan se, vil jeg lave sådan hvis en ven er logget ind skal den udskrive "din ven xxx er logget på";

men det virker ikke, hvorfor?
Avatar billede net-city Nybegynder
25. april 2005 - 22:38 #1
Den giver ingen fejl..
ALtså hvis man har en ven som er logget ind og den har tiden $time(); skal den udskrive teksten..
Avatar billede hyberpreprocessor Nybegynder
25. april 2005 - 22:42 #2
if ($row1[loggetpaa] == "$time"){

Du quoter $time, man skal ikke quote variable, medmindre de skal laves om til en String.
Du kan ikke sammenligne en interger og en String.

Prøv uden quotes.
Avatar billede net-city Nybegynder
25. april 2005 - 22:44 #3
Intet held
Avatar billede hyberpreprocessor Nybegynder
25. april 2005 - 22:46 #4
prøv at revuder din kode, og evt. lave nogle psudo kode.

Forresten hedder det foo['bar'] ikke foo[bar] ! (står også meget fint i phpdocs)
Avatar billede net-city Nybegynder
25. april 2005 - 22:51 #5
kan det være fordi den skal være sat til int i databasen? :)
Avatar billede mjl Nybegynder
26. april 2005 - 00:06 #6
Hvis $time er sat et sekund før den har fundet $row1[loggetpaa], så er de jo ikke == hinanden - vel? Måske skulle den ha' lidt spillerum - hvis $time+-10sek. == $row1[loggetpaa] - så vil det måske virke bedre, eller what!?
Avatar billede coderdk Praktikant
26. april 2005 - 02:40 #7
Som mjl nævner skal der nok være en "grace period", men så får brugerne nok beskeden flere gange - For at undgå det, kunne du gemme hvem de lige har set logge på i en sessionvariabel. Det sidste har jeg ikke lavet, men jeg har lavet resten lidt om:

<?php

  session_start();
  include("db.php");
  $grace_seconds = 1;
  $sql = "
    SELECT
      v.ven
    FROM
      venner AS v
    INNER JOIN
      brugere AS b
    ON
      v.ven = b.brugernavn
    WHERE
      b.loggetpaa > ( UNIX_TIMESTAMP() - " . $grace_seconds . ")
    ";
  $qh = mysql_query( $sql ) or die( "Fejl! " . mysql_error() );
  while($row = mysql_fetch_assoc( $qh ) )
  {
    // evt. vent med at skrive noget ud, og tilføj vennen til en sessionvariabel
    // og lad være med at skrive ham ud hvis brugeren har set beskeden før
    echo "Din ven $row[ven] er lige logget på";
  }

?>
Avatar billede coderdk Praktikant
26. april 2005 - 02:40 #8
$grace_seconds = 1;

Ville jeg have sat til 60...
Avatar billede cpfrande Nybegynder
26. april 2005 - 10:07 #9
Jeg havde nok selv lavet den omvendt, altså hvor den tjekkede det på den ven, der logger på. Dem, der så har denne user som ven og som er online, vil få sendt en besked med det samme - så slipper man for at den anden bruger skal tjekke de ting.

Men... det er jo så bare min måde, hvorpå at lave de ting :-)

- Kristian
Avatar billede coderdk Praktikant
26. april 2005 - 10:58 #10
Ja, dér er jeg faktisk enig med cpfrande ;) Men klokken var også 2:40 da jeg skrev det ;)
Avatar billede cpfrande Nybegynder
26. april 2005 - 13:25 #11
Sandt nok :-)

Jeg ville i hvert fald ikke gøre det anderledes!

- Kristian
Avatar billede mjl Nybegynder
26. april 2005 - 16:17 #12
:)
Avatar billede net-city Nybegynder
21. juni 2005 - 20:31 #13
asasasas
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