Brauche nochmal hilfe Zeit / PHP+MYSQL

maarian

Erfahrenes Mitglied
Also so sieht meine useronline.php aus:


<?
include"inc/config.php";
$jetzt=time();
$vor5minuten=time()-2000;

$abfrage = "SELECT user FROM online WHERE zeit >='$vor5minuten' ORDER BY zeit";
$ergebnis = mysql_query($abfrage);

while($row = mysql_fetch_array($ergebnis))
{
$link = $row['user'];
echo "<a class='Stil5' href='viewprofile.php?name=".$link."' target='_parent'>".$link."</a><br>";
}
?>


In meiner DB ist zeit Timestamp also datum dann uhrzeit.....darum ist die abfrage auch glaube ich nciht korrekt sehe iochj das richtig?weis aber nicht wie ich es sonst machen soll?

und noch eins wenn ich jetzt zb:

"SELECT * FROM online WHERE zeit >='$vor5minuten' ORDER BY zeit"; mach und dann hier:

echo "<a class='Stil5' href='viewprofile.php?name=".$link."' target='_parent'>".$link."</a>$row-> alter<br>$row-> geschlecht"; zeigt der nur den namen an obwohl diese spalten auch dort verfügbar sind


:mad: :mad:
 
Also:
Du solltest den time() wert in die DB speichern,das is dann ein timestamp, also eine reine Zahl, also nicht direkt Uhrzeit und Datum wie ich es bei dir verstanden habe...
Außerdem:
PHP:
// 2000sec = ist ungefähr eine halbe stunde
$vor5minuten=time()-2000;
// 5min: 60*5 = 300
$vor5minuten=time()-60*5;

Bitte stell deine Fragen mal deutlicher ich hab kA was genau nicht funktioniert und benutzte mal die php/code tags

Probier das, ich weiß jetzt nicht ob die Leerzeichen dazwischen was ausmachen, aber so ists auf jedenfall übersichtlicher schonmal ;)
PHP:
echo "<a class='Stil5' href='viewprofile.php?name=".$link."' target='_parent'>".$link."</a>".$row->alter."<br>".$row->geschlecht;

Beschreib bitte nochmal genau was nicht funktioniert sonst kann dir keiner helfen!
 
Also ich möchte User anzeigen lassen mit Nicknamen die online sind das Funktioniert ja auch schonmal.
Leider gibt er nur den Namen aus. Möchte aber das Geschlecht ( geschlecht in DB ) und das Alter ( alter in DB ) (sind die spalten namen) ausgeben lassen.

Mache das so:

PHP:
<?
include"inc/config.php";
$jetzt=time();
$vor5minuten=time()-2000;

$abfrage = "SELECT * FROM online";
$ergebnis = mysql_query($abfrage); 

while($row = mysql_fetch_array($ergebnis))
{
  $link = $row['user'];
  echo "<a class='Stil5' href='viewprofile.php?name=".$link."' target='_parent'>".$link."</a>".$row->alter."<br>".$row->geschlecht; 
} 
?>

So und zusätzlich möchte ich wenn ein User sein Profil aktualiesiert das die Zeit in der Datenbank geupdatet wird.Jedoch klappt das nicht.Und ich möchte in der Useronline.php nur die User angezeigt haben die seit 20 Minuten Online sind <- also wenn sie ihr Profil aktualisieren bleiben sie länger Online so solls ja auch sein.

Hier die useronline.php:
PHP:
<?
include"inc/config.php";
$jetzt=time();
$vor30minuten=time()-2000;

$abfrage = "SELECT * FROM online WHERE zeit='$vor30minuten'";
$ergebnis = mysql_query($abfrage); 

while($row = mysql_fetch_array($ergebnis))
{
  $link = $row['user'];
  echo "<a class='Stil5' href='viewprofile.php?name=".$link."' target='_parent'>".$link."</a>".$row->alter."<br>".$row->geschlecht; 
} 
?>

Allerdings ist in meiner Datenbank zeit ( TImestamp )

so und meine Login seite quasi wo er in die Datenbank einträgt:

PHP:
<?php 
$heute = getdate();
$zeit=$heute['hours'].":".$heute['minutes'].":".$heute['seconds'];

$check = ("SELECT * FROM online WHERE user ='$user'");
         $check2 = mysql_query($check);
         $check3 = mysql_num_rows($check2); 
     if ($check3 != "0")
         {
         $anders = ("UPDATE online SET user = '$user', zeit = '$zeit'");
             $update = mysql_query($anders);
     echo "";
         }
         else
         {
                 $anders2 = ("INSERT INTO online SET user = '$user',
                                          zeit = '$zeit'
                                          ");
             $update2 = mysql_query($anders2);
             
     echo "";
}
?>


Please Help
 
Habe jetzt irgendwie nen anderes komsiches prob


Ich möchte jetzt nur User anzeigen die Aktiv sind diejenigen die die Seite nciht aktualisiert ahben nicht

PHP:
$vor30minuten= time()-60*4;

$abfrage = "SELECT * FROM userdb WHERE online_zeit <='$vor30minuten' AND geschlecht='m'";

was daran falsch
 
Punkt vor Strichrechnung..... time()-(60*4).
Oder alternativ:
Code:
$differenz = 60*4;
$vor30minuten = time()-$differenz;
Bei solch kleinen Aufgaben bevorzuge ich aber die 1. Möglichkeit
Abgesehen davon, 60*4 sind 4 Minuten und nicht 30.
 
Zuletzt bearbeitet:
Code:
SELECT werte FROM tabellenname WHERE online_zeit >= date_sub(NOW(), INTERVAL 240 SECOND);

Sei nochmal kurz erwähnt, für alle diejenigen, die nichtvorher Rechnen wollen und eine schnellere Abfrage haben möchten!
 
Zurück