[SOLVED]Sql Problem.. Syntax.. simple sache für Kenner :P

Ich füge folgenden Code in die DB ein:
$dbnamedate=date(‘d_m_y’);
$ip= $_SERVER[‘REMOTE_ADDR’];
$sql=“ALTER TABLE ip ADD $dbnamedate VARCHAR( 255 ) NOT NULL ;”;
$sql=“INSERT INTO djrazr.ip (id ,$dbnamedate)VALUES (‘NULL’, ‘$ip’);”;
$result=mysql_Query($sql,$db);
Dannach habe ich eine neue Reihe die nach dem aktuellen Datum benannt ist und in dieser füge ich die IP ein…

Nun möchte ich das mein Programm in dieser Tagesaktuellen Reihe nachschaut ob $ip schon vorhanden ist und mir dann eben true oder false zurrückgeben…
Ich versuchte folgendes ohne Erfolg:

$sql=“select * from ip”;
$result=mysql_query($sql,$db);
$row=mysql_fetch_array($result);
$iprow=$row["$dbnamedate"];
echo $iprow;
if($ip==$iprow)…

Das gibt es nicht . ich bin nicht nur ein Threadleichenschänder sondern auch ein selbstverbesserer…

Habe jez 2 Tage an dem Problem gehangen … diesen Post geschrieben und DANNACH den Denkfehler erkannt…

$sql=“select * from ip where $dbnamedate=’$ip’”;
$result=mysql_query($sql,$db);
$row=mysql_fetch_array($result);
$iprow=$row["$dbnamedate"];
…Hat sich erledigt… Danke!

Du fügst für jeden Tag eine neue Spalte ein?

Dafür sollte man eine Spalte Datum (o.ä.) einfügen in der der Zeitpunkt des Aufrufs gespeichert wird.

viel zu einfach … eugh… das mach ich dann wie? :stuck_out_tongue:

Naja du hast bspw. die Spalten ID, Datum und IP.
Dann fügst du halt die Aufrufe in die Tabelle ein:

(CURDATE; die IP könnte man auch noch als Ganzzahl speichern…)

Und in der Abfrage baust du noch eine WHERE-Klausel für’s aktuelle Datum ein:

Dann halt mit if($row[‘ID’] > 0) { … } auswerten, bringt aber nichts wenn du nicht nach einer bestimmten IP suchen willst.

Kann es sein das du einen Counter haben willst?

CREATE TABLE current_users(
  access_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  ip VARCHAR(15) UNIQUE,
  INDEX (access_time)
);
//Beim Betreten:
mysql_query("DELETE FROM current_users WHERE access_time < CURRENT_TIMESTAMP - INTERVAL 5 MINUTES");
$sql = mysql_query("SELECT 1 FROM current_users WHERE ip = '$ip'");

if(mysql_num_rows($sql)) {
  //User war schon mal hier
  mysql_query("UPDATE current_users SET access_time = CURRENT_TIMESTAMP WHERE ip = '$ip'");
} else {
  //neuer User
  mysql_query("INSERT INTO current_users (ip) VALUES ('$ip')");
}

$sql = mysql_query("SELECT COUNT(*) FROM current_users");
list($count) = mysql_fetch_row($sql);

echo "<p>There are $count users online</p>";

Hier laufen bei jedem Seitenaufruf 4 Queries ab, das kann durchaus etwas dauern. Mit etwas Geschick kann man das auf einen reduzieren, aber das ist dann schon etwas für pr0s :wink:

mysql_query(“DELETE FROM current_users WHERE access_time < CURRENT_TIMESTAMP - INTERVAL 5 MINUTES”); scheint nicht zu klappen … obwohl der in der Datenbank der einteag 2010-10-31 17:10:26 87.189.XXX ist (wir haben jetzt 17:19)

EDT:
INTERVAL ‘24’ HOUR" klappt 1A … (es müsste minute heißen) …
DANKE =)