Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » Auslesen aus Datenbank funktioniert nicht (bzw. teilweise) Antworten
Auslesen aus Datenbank funktioniert nicht (bzw. teilweise)

Reo
Pixelschubser


Beiträge: 3


Ich habe folgendes Problem:

Ich möchte aus einer Datenbank Zeilen auslesen, die allerdings gewissen Restriktionen unterliegen.

Mein Befehl sieht folgendermaßen aus:

$datevergleich = time()-2592000;

SELECT * FROM `tabelleX` WHERE `name`='$gruppe[aktuell]' AND (`an`='$user' OR `von`='$user' OR `an`='Alle') AND `zeitpunkt`>'$info[gelesenbis]' AND `zeitpunkt`>'$datevergleich' ORDER BY `zeitpunkt` DESC";

Vorher war es so, dass jeder Nutzer einstellen konnte, bis wann seine Texte angezeigt werden sollen. Das funktioniert soweit auch wunderbar. Nun habe ich eine weiter Restriktion eingebaut, nämlich die Letzte (`zeitpunkt`>'$datevergleich').

Diese soll bewirken, dass höchtens nur noch die letzten 30 Tage angezeigt werden.

Aber das funktioniert nicht, dass heißt, es wird immer noch alles angezeigt wie vorher.
Manche Nutzer haben mir aber mitgeteilt, dass es bei Ihnen funktioniert.

Wie ist das möglich??


Danke schon einmal für die Hilfe.

Viele Grüße,
Frank

  Profil   E-Mail   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Laß dir mal das SQL ausgeben, welches du da zusammenbaust, dann entdeckt man Fehler deutlich einfacher.

---
Weaverslave

  Profil   Website   Editieren   Zitieren

Reo
Pixelschubser


Beiträge: 3


Die Anfrage in phpmyadmin eingegeben funktioniert so wie es soll.

Ein mögliches Problem könnten die Timestamps sein... ?

Allerdings ist dann immer noch nicht geklärt wie es sein kann, dass es bei manchen Usern geht und bei manchen nicht...

In wie fern kann System oder Browser für solche "Fehler" verantwortlich sein?

Wenn es ein Programmierfehler wäre, dürfte es bei niemandem funktionieren...

  Profil   E-Mail   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Die Anfrage in phpmyadmin eingegeben funktioniert so wie es soll.


Stimmt nicht - du hast eine Anfrage eingegeben - da du das SQL dynamisch zusammenbaust, gibt es die Anfrage gar nicht. Prüfe welche von PHP dort zusammengebaut wird, wenn der Fehler auftritt. Hier im Forum hast du bisher noch keine Anfrage gepostet, nur PHP-Code.

Grundsätzlich erstmal sind weder Timestamps (in welchem Format auch immer), noch Browser verantwortlich. Ich vermute eher das eine der Variablen einen ungültigen Wert enthält.

Daher nochmal die Aufforderung. Laß dir im Fehlerfall das SQL ausgeben und prüfe es.

*btw* nur am Rande $gruppe[aktuell] ist unsauber - {$gruppe['aktuell']} wäre korrekter (man kann alternativ auch den String unterbrechen). Schalte mal das Error-Reporting auf E_ALL, dann siehst du sicher eine Menge möglicher Fehlerquellen.

---
Weaverslave

  Profil   Website   Editieren   Zitieren

Reo
Pixelschubser


Beiträge: 3


Prüfe welche von PHP dort zusammengebaut wird, wenn der Fehler auftritt.


Es tritt ja in dem Sinn kein Fehler auf...

*btw* nur am Rande $gruppe[aktuell] ist unsauber - {$gruppe['aktuell']}


Warum ist das unsauber?

Schalte mal das Error-Reporting auf E_ALL


Ich weiß nicht wo man das Einstellt.

------------
Die Variablen sind richtig gefüllt, denn es wird ja soweit alles richtig angezeigt.

Er ignoriert (scheinbar nicht bei jedem User) NUR die letzte Restriktion.

`zeitpunkt`>'$datevergleich'

  Profil   E-Mail   Editieren   Zitieren

subjective
Forenheld


Beiträge: 848


Ein "Ignorieren" ist auch ein Fehler und du kannst darauf natürlich im PHP prüfen. Du kannst ja auch im PHP gucken ob Daten kommen die dieser Bedingung nicht entsprechen. Außerdem war das schon wieder PHP-Code und kein SQL.

Das Error-Reporting definiert man in der php.ini oder durch Aufruf der funktion error_reporting(). Dann sollte PHP auch über deine Array-Schreibweise schimpfen, da du die Array-Schlüssel nicht als Strings auszeichnest, sondern als Konstanten einträgst (bei nicht definierten Konstanten nimmt PHP den Namen der Konstante als String)

---
Weaverslave

Diese Nachricht wurde geändert von: subjective
  Profil   Website   Editieren   Zitieren
 

Antworten
Nach oben