Bitte um Hilfe
Martin Linden
- php
0 Mike
Kann mir vielleicht noch mal jemand Helfen, bei diesem Quelltext.
Ich komme da einfach nicht weiter.
Ich stelle einfach hier noch mal den kompletten Quelltext hin.
Er ist dafür da eine Webstatistik zu führen, basierend auf einer Datenbank. Wenn die IP schon bekannt ist und gleichzeitig aber auch nicht älter als 30 min (1800 Sekunden) dann soll keine neue Zeile in die datenbank geschrieben werden, sondern dann solle die alte Zeite um die neuen Werte erweitert werden.
hier der Quelltext:
<?
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
$now = "$datum $uhrzeit";
include("pswd.php");
$ip = $_SERVER['REMOTE_ADDR'];
$vonhttp = $_SERVER["HTTP_REFERER"];
$uhrzeit = $now;
$proatseite = $_SERVER["REQUEST_URI"];
$ip = getenv("REMOTE_ADDR");
$ip=getenv("REMOTE_ADDR");
$userserver = gethostbyaddr($ip);
$tabelle = "userstatistik";
$sql = mysql_connect($dbhost, $dbuser, $dbpswd)
or die("<br>Konnte nicht auf die Datenbank Verbinden");
$abfrage = "SELECT * FROM $tabelle";
$ergebnis = mysql_query($abfrage);
$dbip2 = $row->dbid ."<br>". $ip;
$uhrzeit2 = $row->uhrzeit."<br>".$now;
$userserver2 = $row->userserver."<br>".$userserver;
$proatseite2 = $row->proatseite."<br>".$proatseite;
$vonhttp2 = $row->vonhttp."<br>".$vonhttp;
$aendern = "UPDATE $tabelle Set dbip = '$dbip2', uhrzeit = '$uhrzeit2', userserver = '$userserver2', proatseite = 'proatseite2', vonhttp = '$vonhttp2' WHERE dbip = '$ip' AND WHERE unixt > $timestamp";
$halbestd = 1800;
$addition = $timestamp + $halbestd;
$timestamptree = $addition;
if ($update = mysql_query($aendern))
{
}
else
{
$dbanfrage = "INSERT INTO $tabelle (dbip, uhrzeit, userserver, proatseite, vonhttp, unixt) VALUES ('$ip', '$uhrzeit', '$userserver', '$proatseite', '$vonhttp', '$timestamptree')";
mysql_db_query ($dbuser, $dbanfrage, $sql)
XX }
?>
Es wird folgender Fehler ausgespuckt:
Parse error: parse error, unexpected '}' in /www/htdocs/user/politik/statistik.php on line 55
Die Zeile 55 habe ich im Quelltext mit XX gekennzeichnet.
Vielleicht weiß ja jemand von euch, wo der Fehler liegt.
Vielen dank schon mal im vorraus.
Gruß
Martin
Moin Martin,
»» Kann mir vielleicht noch mal jemand Helfen, bei diesem Quelltext.
Ich komme da einfach nicht weiter.
mysql_db_query ($dbuser, $dbanfrage, $sql)
Hier fehlt ein Semikolon
mysql_db_query ($dbuser, $dbanfrage, $sql); <----
Gruß
Mike
Erst mal herzlichen Dank,
Theoretisch läuft das Skript jetzt,
aber, noch nicht so wie es soll.
Es scheint mir so, als ob in dieser Zeite noch ein Fehler ist:
$aendern = "UPDATE $tabelle Set dbip = '$dbip2', uhrzeit = '$uhrzeit2', userserver = '$userserver2', proatseite = 'proatseite2', vonhttp = '$vonhttp2' WHERE dbip = '$ip' AND WHERE unixt > $timestamp";
,, da immer das Else genommen wird.
Hat da noch jemand einen Tipp?
Die Spalte soll nur ge UPDATED werden, wenn die IP, die der User gerade hat schon in der Datenbank steht UND wenn die jetzige Zeit kleiner ist, als die in die Datenbank geschriebene Zeit ( die Zeit, die in die Datenbank geschrieben wird ist immer um 1800 sekunden größer als die wirkliche Zeit)
Vielleicht hat jemand eine Idee.
Gruß
Martin
Moin,
$aendern = "UPDATE $tabelle Set dbip = '$dbip2', uhrzeit = '$uhrzeit2', userserver = '$userserver2', proatseite = 'proatseite2', vonhttp = '$vonhttp2' WHERE dbip = '$ip' AND WHERE unixt > $timestamp";
Warum steht hier zweimal WHERE?
WHERE dbip = '$ip' AND WHERE unixt > $timestamp";
Das sollte so aussehen:
WHERE dbip = '$ip' AND unixt > $timestamp";
Gruß
Mike
Also ich hab das jetzt noch mal verbessert:
$aendern = "UPDATE $tabelle Set dbip = '$dbip2', uhrzeit = '$uhrzeit2', userserver = '$userserver2', proatseite = '<a href="http://www.pro-atomkraft.de$proatseite2">$proatseite2</a>', vonhttp = '<a href="http://www.pro-atomkraft.de$vonhttp2">$vonhttp2</a>' WHERE dbip = '$ip' AND unixt > '$timestamp'";
aber es ist immer noch so, dass die bestehende Zeile nicht ge Updated wird.
Was kann ich da noch falsch haben?
gruß
Martin
Moin,
aber es ist immer noch so, dass die bestehende Zeile nicht ge Updated wird.
Frage bitte mal das Ergebnis des Query ab. Habe gerade den Syntax nicht zur Hand.
mysql_error() so irgendwie.
regds
Mike