• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Daten aus Tabelle auslesen und in Datei wiedergeben

Tobi44

Mitglied
Hallo,

bin leider noch ein Anfänger, weshalb ich mir überhaupt nicht zu helfen weiß.

Habe ein PHP Script (Counter) gefunden, welches auch zu funktionieren scheint.
Die Daten (IP & Timestamp) werden in der Tabelle "counter" gespeichert. Nun würde ich gerne in einer natürlich zugriffsgeschützten PHP-Datei die letzten 30 Besucher anzeigen lassen (also die IP und die umgewandelte Uhrzeit). Nur wie ist das möglich?

Die IP's werden in der Tabelle unter "ip" gespeichert und die Zeit unter "timestamp".

Wäre nett, wenn mir dabei jemand behilflich sein könnte.

Vielen Dank & Gruß,
Tobi44
 
Werbung:
Vielleicht liest du dich ein wenig in das Thema MySQL ein, da du offenbar noch nicht viel über Datenbankabfragen weißt.
Auf dieser Seite gibt es einen kurzen und verständlichen Einstieg in MySQL:
PHP fr dich - mySQL und phpMyAdmin

Du brauchst eine Datenbankabfrage (SELECT ...) mit den Parametern LIMIT 30 (max. 30 Einträge auslesen) und DESC (umgekehrte Reihenfolge, um die letzten 30 anzuzeigen).
 
Danke, nun ist aber schon das nächste Problem da.

Ein Teil in dem Script für den Counter lautet:
Code:
$timestamp = date(U); 
$ip = $_SERVER['REMOTE_ADDR'];
Nun habe ich gedacht, ich kann einfach noch dazuschreiben:
Code:
$ref = $HTTP_REFERER;
und anschließend die Zeile in folgendes abändern:
Code:
if(mysql_num_rows($test) != 1) { 
 mysql_query("INSERT INTO counter SET ip='$ip', timestamp='$timestamp', ref='$ref'"); //Sonst einen neuen Eintrag vornehmen 
}
, sodass ebenfalls der Referrer der Besucher abgespeichert wird.
Die Tabelle in der DB habe ich natürlich um die Spalte "ref" erweitert, aber es wird jedes Mal nur eine 0 eingetragen. Wieso?

Danke & Gruß
 
Werbung:
Jup, auf der Seite bin ich doch gerade ;)

Aber noch nichtmal das Verbinden klappt, habe nun folgendes in der php-Datei stehen (nicht included, da ich es nur in dieser Datei brauche):
Code:
  <?php
  mysql_connect("localhost","counter","passwort..."); 
  or die
    ("Keine Verbindung moeglich");
  mysql_select_db("mysql25e43........");
  or die
    ("existiert nicht");
  ?>
Aber es passiert einfach nichts. Auch wenn ich falsche Daten eintrage kommt keine der angegebenen Fehlermeldungen (keine verb. möglich / existiert nicht).

Zum Auslesen der Daten habe ich nun nach der Anleitung folgendes:
Code:
<?php
  $abfrage = "SELECT ip FROM counter LIMIT 30";
  $ergebnis = mysql_query($abfrage);
  ?>
Aber es erscheint nichts. Keine Ahnung, was ich falsch mache.

Gruß
 
Vergessen wir die Geschichte. Hier kriegt man anscheinend nur irgendwelche Links, anstatt dass einem gesagt wird, was man falsch gemacht hat.
Außerdem funktioniert dieser komische Counter auch nicht richtig, es gibt mittlerweile schon 3 Einträge, das Teil steht aber auf 2.

Wenn ich das Zeugs nicht selbst gebacken kriege, landet es halt als Auftrag bei meinem Programmierer.
 
Werbung:
Hey, das Problem mit der Null hatte ich eben auch :D
Probier mal, wenn ers noch nicht ist, in PHPmyadmin den Spaltentypen von ref in Varchar zu
ändern ;)

Code:
mysql_query("INSERT INTO `counter` (`ip`, `timestamp`, `ref`) VALUES ('$ip','$timestamp','$ref')");
So dürfte dein Insert query richtig sein.

EDIT Bin mir aber nicht ganz sicher, ob hinter die ) von Values nicht noch ein Semikolon muss ^^

Aber es erscheint nichts. Keine Ahnung, was ich falsch mache.
Das ist auch richtig so. Da soll auch so noch nichts erscheinen.
Um die IPs jetzt anzuzeigen, brauchst du eine Schleife, die die Einträge anzeigt.

Etwa so:
Code:
while($row=mysql_fetch_object($ergebnis)) {
   echo "IP:".$row->ip;
}
 
Zuletzt bearbeitet:
Naja, habe es jetzt so hingekriegt, dass er mir die letzte IP ausliest (ansonsten sind die alle hintereinander ohne auch nur eine einzige Lücke dazwischen). Dahinter wollte ich gerne den Timestamp auslesen. Aber entweder liest er den genauso aus, wie er ist (und damit kann ich natürlich nichts anfangen) oder aber er zeigt mir die aktuelle Zeit an, anstatt die Zeit die er ausliest umzuwandeln in H:i. Weißt zufällig, wie das möglich ist?

Danke & Gruß
 
ja das mit dem Datum wüsst ich auch gern , hab das Problem atm auch ^^
Und dass alle Ips hintereinander sind, löst du mit <br /> oder \n .

Also z.B:

echo "IP:".$row->ip."<br />";
 
Werbung:
Werde mich gleich mal dran begeben, die ganzen PHP-Dateien von meinem pics-upload-service zu durchforsten, da wird ja auch das Datum gespeichert und richtig ausgegeben. Das Projekt hat mein Programmierer komplett gemacht.

Das mit den IP's ist ja nun auch egal, habe mich ja nun mit einer zufrieden gegeben (immer die letzte). Die Seite ist ja nur für mich, sodass ich 1. die Anzahl der gesamten Besucher habe ab einem bestimmten Datum und 2. immer auf den ersten Blick die letzte Besucher-IP mit Datum sehen kann. Über den Sinn darüber kann man sich streiten, aber lassen wir das... :D

Gruß

Edit:

Da steht in der Auflistung der hochgeladenen Bilder auch das Datum dabei, wie ich sehe, wird das dort so wiedergegeben:
Code:
  <td>".date('d.m.Y - H:i',$pic11->zeit)."</td>
Nur wie ich das jetzt auf meinen Code übertrage, ist mir ein Rätsel:
Code:
<?php
  $abfragets = mysql_query("SELECT timestamp FROM counter ORDER BY cid DESC LIMIT 1");
  while($row = mysql_fetch_object($abfragets))
  {
    echo $row->timestamp;
  }
  ?>
 
echo "date('d.m.Y - H:i',$row->timestamp)";

So :)

Damit ersetzt du dann das $row->timestamp in der Schleife.
 
Nun sieht es so aus:
Code:
<?php
  $abfragets = mysql_query("SELECT timestamp FROM counter ORDER BY cid DESC LIMIT 1");
  while($row = mysql_fetch_object($abfragets))
  {
    echo "date('d.m.Y - H:i',$row->timestamp)";
  }
  ?>
und das Ergebnis ist noch deprimierender: "Letzter Zugriff mit IP: **.***.**.57 (date('d.m.Y - H:i',1279549320))" <-- so wird es nun ausgegeben.
 
Werbung:
Hmm
An den Counterdaten hast du doch eigentlich gar nix verändert.
Ich brauch schon mehr Informationen als es funzt nicht ^^
 
Werbung:
Klappt wieder, war nur noch das blöde $ref drin oder was es war. Aber das hat ja auch nicht geklappt mit dem Referrer.
 
Hi,

ich nochmal.

Würde gerne zu den IP's auch noch den Hostname in der Tabelle speichern.

Kann mir jemand noch sagen, wie ich 1. die Tabelle um eine weitere Spalte erweitere und 2. wie der Hostname genauso wie die IP Adresse in die Spalte gespeichert werden kann?

Vielen Dank,
Tobi44
 
1. Wenn du phpmyadmin hast dann geh auf deine tabelle und wechsel zur Struktur Ansicht. Dort steht dann unten: Feld hinzufügen
2. Ja da ändert sich nicht wirklich was. Du musst halt nur den Hostnamen übergeben über $_SERVER['REMOTE_HOST']
 
Werbung:
Hi,

nun habe ich versucht, ein "Gästebuch" zu erstellen. Die DB besteht auch mit einigen Feldern (name, text, hp, email, ip, timestamp) und die Daten werden auch erfolgreich durch das Formular eingetragen, allerdings kriege ich die Ausgabe nicht richtig hin. Beim ersten Eintrag klappt es, aber sobald ein neuer kommt, ist alles durcheinander.

Wie kriege ich jeden Eintrag geordnet?

Momentan sieht es so aus:
Code:
<?php
  $name = mysql_query("SELECT name FROM guestbook ORDER BY cid DESC LIMIT 100");
  while($row = mysql_fetch_object($name))
  echo "<b>Name:</b> ".$row->name." - ";
  
  $hp = mysql_query("SELECT hp FROM guestbook ORDER BY cid DESC LIMIT 100");
  while($row2 = mysql_fetch_object($hp))
    echo "<b>Homepage:</b> <a href=\"http://$row2->hp\" class=\"gengb\">".$row2->hp."</a><br />";
	
  $text = mysql_query("SELECT text FROM guestbook ORDER BY cid DESC LIMIT 100");
  while($row3 = mysql_fetch_object($text))
  echo "<b>Text:</b> ".$row3->text."<br />";

  ?>
Dazu stand in dem hier verlinkten PHP/MySQL-Tutorial nur, dass es zu aufwendig sei und daher nicht beschrieben sei. Schade.
 
Zurück
Oben