traffic per datenbank

natias

Grünschnabel
also ich habe da ein kleines problem.

ich möchte über eine abfrage (sql) den traffic für den jeweiligen monat errechenen, alles zusammen addieren und ausgeben lassen:

in der datenbank sind folgende felder hinterlegt:

user_id start end bytesin bytesout
1 123456 123456 123 456


ich habe die user_id 1.
die startzeit und endzeit wird im unixtimestamp geschrieben.
bytesin und out jeweil in bytes ^^

nun möchte ich abfragen, dass er über die $session_user_id alles aus dieser datenbank ausliest.
der monat soll immer der aktuelle sein (in diesem fall september).
hierbei ( so habe ich es derzeit nehme ich die startzeit und wandel die in den monat um. )

nun soll er passend dazu die bytes in und out auslesen und zusammenaddieren.

diese sollen dann in mb umgewandelt werden.



ich probiere dass nun schon seit 3 strunden und komme immer noch nicht weiter.

vll weiß ja einer von euch nen rat oder hat durch zufall ^^ ne passende abfrage bereit.

bin euch wie immer sehr dankbar für eure hilfe
 
hat nichts mit PHP zu tun, ist pures SQL.

Was du suchst ist einmal in der WHERE-Klausel der Begriff "Between" und desweiteren den "SUM" Befehl aus SQL.

Umrechnen in MByte kannste entweder per PHP oder auch direkt in SQL, aber das kriegste ja wohl selbst hin (Division lernt man schon recht früh ;-))

mktime() hilft zum Beispiel beim Umwandeln von Daten in Timestamps etc.

eigentlich recht simpel :-)
 
ich bin hier am etsten wie ein weltmeister doch komme ich nicht auf das richtige ergeniss. daher meine frage ob du vll mal ein beispiel hast
 
na gut, BETWEEN macht da keinen allzugroßen Sinn, aber naja, ansonsten stimmts:

SELECT SUM(bytesin) AS insgesamtRein, SUM(bytesout) AS insgesamtRaus FROM tabelle WHERE user_id = 1 AND start >= TIMESTAMPANFANGMONAT AND end <= TIMESTAMPENDEMONAT

wie man Bytes in MegaByte umwandelt überlasse ich dir ... und wie man mit mktime den Timestamp vom Anfang/Ende des aktuellen Monats macht auch ;) Aber so ist das Prinzip, am Ende hast du "insgesamtRein" und "insgesamtRaus" in deinem Ergebnis und kannst damit anfangen was auch immer du willst. Und naja, vielleicht die korrekte Auszeichnung der Spaltennamen etc. (Stichwort Backticks) für den sauberen Stil ... aber ich kenn ja dein DBMS nicht.

Denke das sollte reichen :)
 
<?php
$start = mktime(0, 0, 0, $thismonth, 1, $thisyear);
$end = $start - 1;
$sqlstring6 = "SUM(bytes_in) AS bytes_in, SUM(bytes_out) AS bytes_out FROM `traffic` WHERE `anschlussnummer` = '$session_user_id' AND `time_start` >= '$start' AND `time_end` <= '$end'";
$result6 = mysql_query($sqlstring6);

$bytes_in = $out6->bytes_in;

while ($out6 = mysql_fetch_object($result6));

?>
<? echo $bytes_in; ?>



so sieht derzeit meine abfrage aus.

aber ich bekomme das hier als fehlermeldung:
mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/lhdsl/module/login.php on line 126

in reiher 126 steht das hier:

while ($out6 = mysql_fetch_object($result6));
 
@natias: Ich moechte Dich bitten Dich an Gross- und Kleinschreibung zu halten.
Weiterhin moechte ich Dich auf unsere Code-Tags hinweisen, womit Du geposteten Quellcode mit Highlighting versehen lassen kannst.
Fuer PHP kannst Du dafuer sowohl:
[ php ]PHP-Code[ /php ]
oder
[ highlight=php ]PHP-Code[ /highlight ]
nutzen. Die Leerzeichen in den eckigen Klammern musst Du dazu natuerlich entfernen.

Das ganze sieht dann so aus:
[ php ]:
PHP:
<?php
if ((!empty($_COOKIE['id'])) && (!empty($_COOKIE['password'])))
	{
		setcookie("id","",time()-3600);
		setcookie("password","",time()-3600);
	}
$logouttime=time();
mysql_query("update users set lastseen='".$logouttime."',logintime='' where id='".$id."'",$mydb);
mysql_query("update sessions set userid='0' where sessionid='".$sessionid."'",$mydb);
session_destroy();
header("Location:index.php".$sessionparm);
?>
[ highlight = php ]
PHP:
<?php
if ((!empty($_COOKIE['id'])) && (!empty($_COOKIE['password'])))
	{
		setcookie("id","",time()-3600);
		setcookie("password","",time()-3600);
	}
$logouttime=time();
mysql_query("update users set lastseen='".$logouttime."',logintime='' where id='".$id."'",$mydb);
mysql_query("update sessions set userid='0' where sessionid='".$sessionid."'",$mydb);
session_destroy();
header("Location:index.php".$sessionparm);
?>
 
mhmmm ich vermute mal das deijn post in das thema login mit cookies rein sollte und nicht hier zu diesem thema mit dem traffic.

vielen dank werde das mit den hightlight beim nächsten mal beachten
 
Mein Post ist hier schon richtig. Ich hatte nur fix irgendwelchen Code hier als Beispiel reingepastet damit Du das mit dem Highlighting siehst.

Und wie gesagt, halte Dich bitte an Gross- und Kleinschreibung.
 
Zurück