WinFuture-Forum.de: Php Und Mysql Problem... - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
Seite 1 von 1

Php Und Mysql Problem...


#1 Mitglied ist offline   svenner90 

  • Gruppe: aktive Mitglieder
  • Beiträge: 146
  • Beigetreten: 30. Dezember 06
  • Reputation: 0

geschrieben 11. Januar 2007 - 18:51

Halli Hallo ich bin es mal wieder.
	  $sql = "SELECT
				datum
			FROM
				count
	   WHERE id = '".$row['Anzahl']."-1'";
	$result = mysql_query($sql) OR die(mysql_error());
	$row = mysql_fetch_assoc($result);
echo " Der letzte um  ".$row['datum'].".</a>";


Soll das Datum von dem User anzeigen, der vor einem online war. Allerdings zeigt es immernoch die Uhrzeit von dem Zeitpunkt, wenn man selber auf die Homepage geht an.

Wieso das?
0

Anzeige



#2 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 13. Januar 2007 - 12:01

moin, zeig uns bitte noch den quelltext, der die zeilen hinzufügt.
eine frage: wieso sollte für die zeile des letzten besuchers gelten: 'id = zeilenanzahl-1' und woher kommt die zeilenanzahl? wenn es die zeilenanzahl von "count" ist, müsstest du die auch nicht erst auslesen, das ließe sich gleich in diesem query erledigen (via subquery zB).
I'm mó. mo's good twin.
0

#3 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 13. Januar 2007 - 12:54

jo einfach nur den letzten datensatz auslesen. sortiert nach "id" die größte zuerst und limit 1. fertig.

SELECT
datum
FROM `count`
ORDER BY `id` DESC
LIMIT 1;
Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#4 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 13. Januar 2007 - 13:06

und warum sollte die ID des letzten datensatzes die hoechste sein? das muss erst einmal gewaehrleistet sein ...
I'm mó. mo's good twin.
0

#5 Mitglied ist offline   Gitarremann 

  • Gruppe: aktive Mitglieder
  • Beiträge: 3.263
  • Beigetreten: 04. Juni 06
  • Reputation: 3
  • Geschlecht:Männlich
  • Wohnort:Trebnitz

geschrieben 13. Januar 2007 - 13:39

Beitrag anzeigenZitat (mo: 13.01.2007, 13:06)

und warum sollte die ID des letzten datensatzes die hoechste sein? das muss erst einmal gewaehrleistet sein ...


ja da hab ich jetzt nicht dran gedacht. ich lege für id immer 'auto_increment' fest. ansonsten kann man natürlich auch gleich nach datum sortieren. das frischeste datum dürfte ja immer das aktuellste sein.

Dieser Beitrag wurde von Gitarremann bearbeitet: 13. Januar 2007 - 13:40

Der Pessimist sagt: "Das Glas ist halb leer,"
Der Optimist sagt: "Das Glas ist halb voll."
Der Realist sagt: "Bedienung, zwei Neue!"
0

#6 Mitglied ist offline   svenner90 

  • Gruppe: aktive Mitglieder
  • Beiträge: 146
  • Beigetreten: 30. Dezember 06
  • Reputation: 0

geschrieben 13. Januar 2007 - 14:58

Jo ich hab auch auto_increment festgelegt für ID.
Vorher hab ich
 $sql = "SELECT
				COUNT(*) as Anzahl
			FROM
				count";


Ich denk mal
SELECT
datum
FROM `count`
ORDER BY `id` DESC
LIMIT 1;
würde ja immer das letzte Datum nehmen. Und nicht das Datum des Users der vor einem zu letzt online war.

Hier einmal der ganze Code. In der Mitte wird überprüft, ob der User mit der IP schon online war.
<?php
include('dbconnect.php');
	$sql = "SELECT
				COUNT(*) as Anzahl
			FROM
				count
			WHERE
				ip = '".$_SERVER['REMOTE_ADDR']."'";
	$result = mysql_query($sql) OR die(mysql_error());
	$row = mysql_fetch_assoc($result);
	if($row['Anzahl']) {
		// Nur Datum Updaten
		$sql = "UPDATE
					Online
				SET
					datum = NOW()
				WHERE
					ip = '".$_SERVER['REMOTE_ADDR']."'";
		mysql_query($sql) OR die(mysql_error());
	} else {
		// Neuer eintra
		$sql = "INSERT INTO count
					(ip, datum)
				VALUES
					('".$_SERVER['REMOTE_ADDR']."', NOW())";
		mysql_query($sql) OR die(mysql_error());
	}

	 //Anzahl Ausgeben
	$sql = "SELECT
				COUNT(*) as Anzahl
			FROM
				count";
	$result = mysql_query($sql) OR die(mysql_error());
	$row = mysql_fetch_assoc($result);

	echo "<a>Insgesamt ".$row['Anzahl']." User seit dem 7. Januar 2007.";

	  $sql = "SELECT
				datum
			FROM
				count
	   WHERE id = '".$row['Anzahl']."-1'";
	$result = mysql_query($sql) OR die(mysql_error());
	$row = mysql_fetch_assoc($result);
echo " Der letzte um  ".$row['datum'].".</a>";
?>

Dieser Beitrag wurde von svenner90 bearbeitet: 13. Januar 2007 - 15:04

0

#7 Mitglied ist offline   mo 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.796
  • Beigetreten: 17. Juni 02
  • Reputation: 0
  • Wohnort:Ulm / BaWü

geschrieben 13. Januar 2007 - 15:19

dann sollte gitarremans vorschlag leicht modifiziert funktionieren:
SELECT
datum
FROM `count` 
ORDER BY `id` DESC 
LIMIT 1,1;

(Limit 1,1 statt Limi 1, waehlt also zeile 1 bis 1 aus. ungetestet, sollte aber klappen ... siehe auch SELECT Syntax, Limit abschnitt im MySQL-Handbuch)
I'm mó. mo's good twin.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0