User Online anzeigen

Vousak

Grünschnabel
Hey,

habe folgendes Problem. Ich bastle gerade ne kleine Community, damit man weis wer Online ist benutze ich folgendes Script:

Am Anfang jeder Seite steht:
PHP:
<?php
$id = $_SESSION["user_id"];
$username = $_SESSION["user_username"]; 
$mail = $_SESSION["user_mail"];
$vname = $_SESSION["user_vorname"];
$nname = $_SESSION["user_nachname"];
$adate = $_SESSION["user_anmeldungsdatum"];
$name = $_GET['name'];

   $connectionid  = mysql_connect ("****", "****", "***");  
   if (!mysql_select_db ("******", $connectionid))  
   {  
   die ("<font color='red'><b>Error</b></font>");  
   }
   $eins = date("H");
   $zwei = date("i");
   $drei = date("s");
   $vier = date("d.m.Y");
   $sql = mysql_query("UPDATE online SET Stunde = '$eins', Minute = '$zwei', Sekunde = '$drei', Datum = '$vier' 
                       WHERE Username = '$username'");
   
?>

Dann lass ich Anzeigen wer in den letzten fünf Minuten aktiv war.
PHP:
<?php
$connectionid  = mysql_connect ("*******", "*****", "****");  
   if (!mysql_select_db ("*****", $connectionid))  
   {  
   die ("<font color='red'>Seite kann nicht angezeigt werden !</font>");  
   } 
   $Datum = date("d.m.Y");
   $abfrage = "SELECT * FROM online WHERE Datum = '$Datum'";
   $ergebnis = mysql_query($abfrage);
   while($row = mysql_fetch_object($ergebnis))
   {
   $Stunde = $row->Stunde;
   $Minute = $row->Minute;
   $Sekunde = $row->Sekunde;
   $Datum = $row->Datum;
   $sekunden = ($Stunde * 120) + ($Minute * 60) + $Sekunde;
   $now1 = date("H");
   $now2 = date("i");
   $now3 = date("s");
   $now = ($now1 * 120) + ($now2 * 60) + $now3;
   
   if ($sekunden > $now - 300) {
   echo "<font color='green'>$row->Username ist Online !<br></font>";
   }}
   ?>

Klappt auch alles aber nun möchte ich auch beim Suchergebniss anzeigen lassen ob der jenige Online ist.
Hab es schon mit folgendem versucht.
PHP:
<?php
$Datum = date("d.m.Y");
   $abfrage3 = "SELECT * FROM online WHERE Datum = '$Datum'";
   $ergebnis3 = mysql_query($abfrage3);
   while($row3 = mysql_fetch_object($ergebnis3))
   {
   $Stunde = $row3->Stunde;
   $Minute = $row3->Minute;
   $Sekunde = $row3->Sekunde;
   $Datum = $row3->Datum;
   $sekunden = ($Stunde * 120) + ($Minute * 60) + $Sekunde;
   $now1 = date("H");
   $now2 = date("i");
   $now3 = date("s");
   $now = ($now1 * 120) + ($now2 * 60) + $now3;
  
   if ($sekunden > $now - 300) {
   $online = "<font color='green' size='4'>Online</font>";
   }}
  ?>

Da wurde aber immer jeder als Online aufgelistet obwohl nur einer Online ist.
Hier mein Suchscript:

PHP:
<?php include('header.php'); ?>
<table align="center" width="750" border="0">
 <tr>
  <td>
  <b>
  <font color="orange">Info:</font> Du musst auf Gro&szlig; und Kleinschreibung achten.<br /><br />
  <form action="search.php" method="post">
  <font size="4">Suchbegriff</font><br />
  <input type="text" name="begriff"><br /><br />
  <font size="4">Nach was m&ouml;chtest du suchen ?</font><br /><br />
  <input type="radio" name="for" value="Username"> Username<br />
  <input type="radio" name="for" value="Vorname"> Vorname<br />
  <input type="radio" name="for" value="Nachname"> Nachname<br />
  <input type="radio" name="for" value="Mail"> E-Mail Adresse<br /><br>
  <input type="submit" name="suchen" value="Suchen">
  <br><br><br><br>
  </form>
  <?php
  
  if (isset($_POST['suchen'])) {
  
  $begriff = $_POST['begriff'];
  $for = $_POST['for'];
  
  if (isset($_POST['for']) && (!empty($_POST['begriff']))) {
  
  $connectionid  = mysql_connect ("******", "*******", "*****");  
   if (!mysql_select_db ("*******", $connectionid))  
   {  
   die ("<font color='red'>Suchfunktion kann momentan nicht genutzt werden !</font>");  
   } 

   $suchen = "SELECT * FROM user WHERE $for = '$begriff'";
  $suche = mysql_query($suchen);
  $neu = mysql_num_rows($suche);
  if ($neu == "0") {
  echo "<font size='4'><b>0 Suchergebnisse</b></font><br>";
  }
  if ($neu > "0") {
  
  if ($neu == "1") {
  echo "<font size='4'><b>1 Suchergebniss</b></font><br>";
  }
  else {
  echo "<font size='4'><b>$neu Suchergebnisse</b></font><br>";
  }
  
  }

    while($row = mysql_fetch_object($ergebnis))
   {
   $result = "
   <br><br>
   <table border='0' width='500'>
    <tr>
     <th rowspan='2' width='150'><img src='Images/$row->Username.jpg' 
      width='125' height='125' border='2'>
      </td>
     <th align='left'><b>
     <font size='4'>Username:</font><font color='gold' size='4'> $row->Username</font> $online<br>
      Vorname: $row->Vorname<br>
      Nachname: $row->Nachname<br>
    </b>
    </tr>
     <tr>
      <td>
       <b>
        <form action='showuser.php?name=$row->Username&pinnpage=1' method='post'>
        &nbsp;&nbsp;<input type='submit' value='$row->Username ´s Profil'>
        </form>
        
        <form action='nwrite.php?name=$row->Username' method='post'>
        &nbsp;&nbsp;<input type='submit' value='Nachricht schreiben'>
        </form>
       </b>
      </td>
     </tr>
    </table>
   ";
   echo $result;
   }}
   else {
   echo "<font color='red'>Nach was m&ouml;chtest du suchen ?</font>";
   }}
   
   
  ?>
  <br><br><br><br>
  </b>
  </td>
 </tr>
</table>

Hoffe jemand kann mir weiterhelfen.


Gruß
Yannik
 
Böse Lösung. Versucht mal am 02.01.1970 00:01 die einzufangen die 01.01.1970 23:59 aktiv waren. Da ist aktuelles Datum ungleich dem gespeicherten Datum. Eigentlich wäre ein anderer Ansatz besser.

Zu deinem:
Lass das mySQL machen!
"SELECT ...... WHERE `datum` = $dein_datum && `stunde` = $die_stunde && `minute` > " . max(0, ($die_minute - 5));

Da siehst das nächste Problem:
Benutzer die 12:59 Online waren sollen 13:01 angezeigt werden. Ist Lösbar aber zu umständlich.

Informiere dich über TIMESTAMP ;)
 

Neue Beiträge

Zurück