php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.08.2011, 22:36  
Neuer Benutzer
 
Registriert seit: 19.03.2011
Beiträge: 26
PHP-Kenntnisse:
Anfänger
imamk befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] MySQL Timestamp Abfrage Problem

Hallo,

ich arbeite in moment daran, einen Chat auf MySQL basis und Ajax zu programmieren und stecke fest.
Es geht darum, wenn der User sich einloggt (die loginzeit wird als timestamp gespeichert), soll er die alten nachrichten nicht sehen. Er soll alle aktuellen Nachrichten sehen können, die nach seinem login geschrieben werden.

Mit folgender Abfrage sollte es eigentlich klappen, aber es scheint so, als würde die Abfrage da noch ein Fehler haben, welches ich nicht finden kann. Er sortiert nicht nach meinem Vorhaben.

Code:
"select benutzername, message, loginzeitstempel 
from login l, nachrichten n 
where  n.userid=l.id and timestampdiff(second, n.zeitstempel, l.loginzeitstempel)>=0 
order by n.zeitstempel asc;";
Die beiden Tabellen Login und Nachrichten haben Folgende Felder:
Code:
Login:
ID int
loginzeitstempel timestamp
benutzername varchar

nachrichten:
ID int
message varchar
zeitstempel timestamp
Hoffe mal, dass ihr den Fehler findet. syntaktisch muss es korrekt sein, denn sonst würden keine Ergebnisse willkürlich ausgegeben werden.

Danke im Vorraus,

Imam K.

Geändert von imamk (10.08.2011 um 08:16 Uhr).
imamk ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 10.08.2011, 00:24  
Neuer Benutzer
 
Registriert seit: 19.03.2011
Beiträge: 26
PHP-Kenntnisse:
Anfänger
imamk befindet sich auf einem aufstrebenden Ast
Standard Verstehe die aktion jetzt nicht

Ich habe die Rechtschreibfehler korrigiert und die Quoten hinzugefügt...
Wo ist da bitte noch ein fehler?
imamk ist offline   Mit Zitat antworten
Alt 10.08.2011, 01:37  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Beim Posten von Quellcode oder strukturierten Daten bitte bbCode verwenden ([php] für PHP, [html] für HTML, [code] für den Rest (Dumps, Queries..)) und Code geeignet einrücken.


„es scheint so, als wäre da noch ein Fehler...“ ist keine sinnvolle Fehlerbeschreibung
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 10.08.2011, 09:42  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Warum machst du den Vergleich zweier Timestamps so umständlich, statt einen einfachen >= Vergleich zu machen?
Zitat:
Zitat von imamk Beitrag anzeigen
syntaktisch muss es korrekt sein, denn sonst würden keine Ergebnisse willkürlich ausgegeben werden.
Liefere bitte Testdaten, mit denen sich das nachvollziehen lässt.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 10.08.2011, 10:03  
Neuer Benutzer
 
Registriert seit: 19.03.2011
Beiträge: 26
PHP-Kenntnisse:
Anfänger
imamk befindet sich auf einem aufstrebenden Ast
Standard

Hi,

danke für die Antwort... Bin gerade noch auf der Arbeit, aber werde heute abend mal einige Test Daten präsentieren.

Wenn man im Where sagt, loginstempel <= nachrichtenstempel, werden alle Nachrichten angezeigt, auch die vor dem Login gemacht wurden sind.

Im Handbuch ist die erklärung für mich für die Timestamps nicht ganz verständlich, aber da ist von Strings und Integern die rede. Ich habe bereits auch einen String und double vergleich gemacht. Ebenfalls keine korrekte Wirkung.

Gruß
Imam K.
imamk ist offline   Mit Zitat antworten
Alt 10.08.2011, 10:14  
Erfahrener Benutzer
 
Registriert seit: 07.12.2009
Beiträge: 843
PHP-Kenntnisse:
Fortgeschritten
chorn befindet sich auf einem aufstrebenden Ast
Standard

Wenn du meinst, deine >= Abfrage sei richtig, und sie gibt dir nicht das gewünschte Ergebnis, sind ggf. deine Daten falsch. Und was du mit String und Double versuchst ist auch nicht klar, Timestamps sind einfach nur Integer.
chorn ist offline   Mit Zitat antworten
Alt 10.08.2011, 10:20  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Ich vermute eher den JOIN als Ursache des Problems ...

Schau dir erst mal an, welche Datensätze der ohne die Einschränkung des Timestamps liefert (dabei n.zeitstempel noch mit in die Spaltenliste aufnehmen) ...
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 10.08.2011, 21:08  
Neuer Benutzer
 
Registriert seit: 19.03.2011
Beiträge: 26
PHP-Kenntnisse:
Anfänger
imamk befindet sich auf einem aufstrebenden Ast
Standard

Hallo,
wie angekündigt...

Hier geht es zur Demo mit Folgenden Accounts:
Name: user1
pw: test
name: user2
pw: test
http://imam.grupdavet.biz/


hier die Ergebnisse aus der Datenbank
Es wird klar, dass beim einfachen vergleich alle Nachrichten trotzdem angezeigt werden.

1. Einmal die beiden Tabellen getrennt
http://imam.grupdavet.biz/sql/1.txt

2. Hier beide gemischt
http://imam.grupdavet.biz/sql/2.txt

3. Gemischt mit der loginzeit <= nachrichtenzeit
http://imam.grupdavet.biz/sql/3.txt

Gruß

Imam K.
imamk ist offline   Mit Zitat antworten
Alt 11.08.2011, 10:26  
Erfahrener Benutzer
 
Registriert seit: 01.06.2011
Beiträge: 389
PHP-Kenntnisse:
Anfänger
achtelpetit befindet sich auf einem aufstrebenden Ast
Standard

Ich hab' nicht die Geduld, deine Tabellen zu analysieren. Mir fällt allerdings auf, daß es die Felder "id" und "userid" gibt.
"Userid" ist klar, was "id" bedeutet, weißt Du nur selber. Tipp: Gib den Feldern klare Namen.
achtelpetit ist offline   Mit Zitat antworten
Alt 11.08.2011, 10:45  
Erfahrener Benutzer
 
Registriert seit: 03.08.2010
Beiträge: 300
PHP-Kenntnisse:
Fortgeschritten
Asterixus sorgt für eine eindrucksvolle AtmosphäreAsterixus sorgt für eine eindrucksvolle Atmosphäre
Asterixus eine Nachricht über Skype™ schicken
Standard

Deine Bedingung sagt OK, sobald ein irgendein Benutzer diese Bedingung erfüllt, du gibst keine spezifische User-Id an (oder ich verstehe deine Tabellenstruktur nicht).

Normalerweise steht der username nicht in einer Tabelle, die nicht eine Benutzer-Tabelle ist, hier steht sie beim Einloggen des Benutzers; informiere dich bitte über Normalisierung.
Asterixus ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] MySQL - Abfrage bleibt Problem! yellow PHP Einsteiger 1 01.07.2011 13:47
[Erledigt] Problem mit MYSQL Abfrage in einer While Schleife mirko911 PHP Einsteiger 1 11.04.2011 11:54
Problem mit Mysql abfrage wolfsmichel PHP Einsteiger 4 21.12.2010 22:35
SQL Abfrage Fehler nach Umstieg von MySQL4 auf MySQL 5 chefmaik PHP Tipps 2010 5 05.08.2010 16:02
PDO MySQL abfrage funktioniert nicht Bloodydead PHP Tipps 2010 8 18.06.2010 11:08
[Erledigt] MySQL Link Resource in einer statischen Variablen speichern Lenki PHP-Fortgeschrittene 8 18.03.2010 16:37
OOP Mysql Abfrage Problem Sebbi51 PHP Tipps 2009 12 21.10.2009 20:41
Timestamp problem phrain PHP Tipps 2008 2 04.04.2008 09:41
mysql Abfrage Problem mit dem Join test022 Datenbanken 5 28.04.2007 08:07
Mysql SELECT Abfrage -- Problem mit LIMIT djrace Datenbanken 2 01.05.2006 12:58
Timestamp problem -- hilfe -- Datenbanken 11 16.01.2006 18:29
timestamp in mysql Aris Sung PHP-Fortgeschrittene 9 22.11.2005 17:54
timestamp abfrage problem Datenbanken 5 29.08.2004 18:23
MySQL Problem Datenbanken 4 27.08.2004 14:42
mySQL Timestamp Problem... Datenbanken 1 16.08.2004 09:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
mysql timestamp falsch, mysql timestamp, mysql timestamp abfrage, mysql timestamp php, datenbank abfragen timestamp, mysql timestamp problem, mysql timestamp abfragen, mysql timestamp alte daten abfragen, mysql timestamp fehler, timestamp mysql 5 error, mysql timestamp bedingung, php mysql timestamp bedingung, timestamp fehler, mysql timestamp einfache abfrage, mysql timestamp benutzernummer

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum