DatenUPDATE, funktioniert nicht so wie es soll
Martin Linden
- php
Seit geraumer Zeit schlage ich mich nun mit dem Skript rum.
Ich kekomme zwar keine Fehlermeldung mehr,
aber es wird trotzdem nix in die Datenbank geschrieben.
Und schon garnicht dahin, wo es hin soll.
Vielleicht mag mal einer von euch einen Blick drauf werfen:
<?
$timestamp = time();
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
$now = "$datum $uhrzeit";
include("passwort.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><a href="http://www.pro-atomkraft.de".$proatseite."">".$proatseite."</a>";
$vonhttp2 = $row->vonhttp."<br><a href="http://www.pro-atomkraft.de".$vonhttp."">".$vonhttp."</a>";
//%%%%%%%%%%%%%%%%%%%%
// /*Hier wird nun ein Update geschrieben, dass genau DIE zeile Updaten soll, in der die ID Adresse, die derjenige, der sich gerade die Seite anschaut hat. Ist die IP nicht vorhanden, dann soll es zu dem ELSE gehen, wo dann eine Neue Zeile eingeschrieben werden.
Zusätzlich wird auch noch geguckt, wie lang es her ist, dass der User auf der Seite war. Wenn dies mehr als 30 min her ist, dann soll auch eine Neue Zeile angefangen werden.
*/
//
//%%%%%%%%%%%%%%%%%%%%
$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'";
// Dort, wo die Spalte IP = der IP des Seitenbetrachters ist UND wo die Spalte UNIXT (Zahl) größer ist, als die jetzige Zeit.
mysql_select_db($dbuser)
or die("<br>Konnte nicht zur Datenbank verbinden!");
// wenn dieses Update funktioniert hat wird "EINS" nur ausgegeben, damit ich weiß on IF oder ELSE verwendet wurde
if ($update = mysql_query($aendern))
{echo mysql_error();
echo "Eins"; //Damit ich weiß, was gemacht wird
}
else
{$halbestd = 1800;
$addition = $timestamp + $halbestd;
$timestamptree = $addition;
$aendern = "UPDATE $tabelle Set dbip = '$dbip2', uhrzeit = '$uhrzeit2', userserver = '$userserver2', proatseite = '$proatseite2', vonhttp = '$vonhttp2' WHERE dbip = '$ip' AND unixt > '$timestamp'";
mysql_db_query ($dbuser, $dbanfrage, $sql);
echo "Zwei"; // Damit ich weiß, was gemacht wird
}
?>
Hi,
daran liegts wahrscheinlich nicht, aber:
$dbip2 = $row->dbid ."br". $ip;
Wo wird $row überhaupt definiert und sollte es nicht <br> statt br heißen?
MfG
Danny
Sorry, Deinen Code zu lesen empfinde ich schon als Zumutung. ;)
Empfehlung: Code übersichtlicher gestalten, z.B.
$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'
";
Es tut mir leid, du hast sicher recht, dass mein Code nicht sehr übersichtlich ist, aber es scheint jetzt zu gehen, aber auch wieder nur halb.
Weil anstelle, dass er beim ersten mal eine neue Spalte anlegt,
und ab da an nur noch in diese Spalte schreibt macht er es so, dass er erst eine Neue spalte anlegt, dann in die Angelegte spalte hineinschreibt und dann beim 3ten aufruf der Seite wieder eine neue Zeile anlegt.
Sprich, er wechselt immer zwischen IF und ELSE
Vielleicht hat da noch wer eine idee??
<?
$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");
mysql_select_db($dbname)
or die("<br>Konnte nicht zur Datenbank verbinden!");
$abfrage = "SELECT * FROM $tabelle";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
if ($row->dbip == $ip and $row->unixt > $timestamp)
{
$dbip2 = $row->dbid ."<br>". $ip;
$uhrzeit2 = $row->uhrzeit."<br>".$now;
$userserver2 = $row->userserver."<br>".$userserver;
$proatseite2 = $row->proatseite."<br><a href="http://www.pro-atomkraft.de".$proatseite."">".$proatseite."</a>";
$vonhttp2 = $row->vonhttp."<br><a href="http://www.pro-atomkraft.de".$vonhttp."">".$vonhttp."</a>";
$aendern = "UPDATE $tabelle Set dbip = '$dbip2', uhrzeit = '$uhrzeit2', userserver = '$userserver2', proatseite = '$proatseite2', vonhttp = '$vonhttp2' WHERE dbip = '$ip' AND unixt > '$timestamp'";
mysql_select_db($dbuser)
or die("<br>Konnte nicht zur Datenbank verbinden!");
}}
if ($update = mysql_query($aendern))
{echo mysql_error();
echo "Eins"; //Damit ich weiß, was gemacht wird
}
else
{$halbestd = 1800;
$addition = $timestamp + $halbestd;
$timestamptree = $addition;
$dbanfrage = "INSERT INTO $tabelle (dbip, uhrzeit, userserver, proatseite, vonhttp, unixt) VALUES ('$ip', '$uhrzeit', '$userserver', '<a href="http://www.pro-atomkraft.de$proatseite">$proatseite</a>', '<a href="http://www.pro-atomkraft.de$vonhttp">$vonhttp</a>', '$timestamptree')";
mysql_db_query ($dbuser, $dbanfrage, $sql);
echo "Zwei"; // Damit ich weiß, was gemacht wird
}
?>
Hi,
$aendern = "UPDATE $tabelle Set dbip = '$dbip2', uhrzeit = '$uhrzeit2', userserver = '$userserver2', proatseite = '$proatseite2', vonhttp = '$vonhttp2' WHERE dbip = '$ip' AND unixt > '$timestamp'";
mysql_db_query ($dbuser, $dbanfrage, $sql);
^^^^^^^^
Unabhängig von anderen Fehlern in deinem Code kann diese Abfrage nícht gehen, ausser Du hast $dbanfrage irgendwo zuvor schon definiert. Auf keinen Fall wird aber das Statement $aendern ausgeführt.
Ansonsten kann ich mich Danny nur anschliessen: sorge erstmal für lesbaren Code, da findet man dann auch die Fehler besser.
Grüsse
Frankie
Der befehl $aendern wird auch erst einige Zeilen weiter unten ausgeführt:
if ($update = mysql_query($aendern))
und das funktioniert auch so weit.
Und wie gesagt, Ich verspreche besserung.
Wenn der Code geht, dann werd ich ihn noch mal hübsch machen, alleine damit ich in 3 monaten noch verstehe, was ich da geschrieben hab
hi, <-Anrede
Der befehl $aendern wird auch erst einige Zeilen weiter unten ausgeführt:
if ($update = mysql_query($aendern))
und das funktioniert auch so weit.
Bei dem Codeschnipsel auf den ich mich bezogen hatte eben nicht. Ist mir aber auch egal. Habe allerdings bemerkt, dass Du in einer anderen Antwort bereits was diesbezüglich geändert hast.
Und wie gesagt, Ich verspreche besserung.
Wenn der Code geht, dann werd ich ihn noch mal hübsch machen, alleine damit ich in 3 monaten noch verstehe, was ich da geschrieben hab
Du solltest den Code schon jetzt hübsch machen, ansonsten geht er vielleicht nie ,-)
Grüsse
Frankie