user47alpha: Datum vergleichen

Hi,

ich bin gerade am Verzweifeln. Ich programmiere gerade einen kleinen Ajax-Chat. Um zu prüfen ob neue Nachrichten vorhanden sind wird per JavaScript wird ein httprequest (POST) an ein PHP-Script geschickt. Mitgesendet wird der Timestamp der letzten empfangenen Nachricht.

Das PHP-Script liest dann eine Datei ein in die die Nachrichten mit Timestamp gespeichert werden. Es soll dann nur solche Nachrichten zurückschicken, die nach dem mitgesandten Timestam erstellt wurden.

JavaScript-Teil:
xmlhttp.send("lastshown="+active_date);

PHP-Teil:

$lastshown = $_POST["lastshown"];  
...  
$shouts = explode($seperator, $daten[$a]);  
  
if ($shouts[2] > $lastshown)  
{  
echo ...  
}  

Es gelingt mir einfach nicht, die beiden Variablen $shouts[2] und $lastshown so zu konvertieren, dass sie sich vergleichen lassen. Erstere ist ein Integer (zumindest gelingt das Konvertieren mit date()), letztere ein String, wobei (int)$lastshown lediglich "0" ergibt.
Per echo angezeigt, sehe ich die Variablen korrekt.

Bitte,
wie bekomme ich das hin?

Danke!

  1. Hi,

    JavaScript-Teil:
    xmlhttp.send("lastshown="+active_date);

    das habe ich gerade mal (unter der Annahme, xmlhttp sei ein XmlHTTPRequest-Objekt) in meinem Browser ausprobiert, der den Fehler meldete, dass active_date nicht bekannt sei.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hi,

      JavaScript-Teil:
      xmlhttp.send("lastshown="+active_date);

      das habe ich gerade mal (unter der Annahme, xmlhttp sei ein XmlHTTPRequest-Objekt) in meinem Browser ausprobiert, der den Fehler meldete, dass active_date nicht bekannt sei.

      Cheatah

      Was ohne Zweifel daran liegt, dass das eine Variable ist, die vorher m jSkript deklariert wurde und den timestamp der letzten angezeigten Nachricht enthält.

      1. Hi,

        Was ohne Zweifel daran liegt, dass das eine Variable ist, die vorher m jSkript deklariert wurde und den timestamp der letzten angezeigten Nachricht enthält.

        da Du hierzu sowie zu der entsprechenden PHP-Vergleichsvariable keinerlei verwertbaren Informationen geliefert hast, nützt Dir diese Behauptung leider nichts. Dein Problem basiert wahrscheinlich auf Details eben hierzu. Genau diese Details zu verschweigen kann also schwerlich als zielführend bezeichnet werden.

        Cheatah

        --
        X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
        X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
  2. ... letztere ein String, wobei (int)$lastshown lediglich "0" ergibt.

    Hast Du das mit var_dumb(); ermittelt?

    Per echo angezeigt, sehe ich die Variablen korrekt.

    Mach mal unmittelbar vor

    if ($shouts[2] > $lastshown)

    var_dump($shouts[2]);
    var_dump($lastshown);
    var_dump(intval($lastshown));
    und teile uns das Ergebnis mit (das muß man wohl dazusagen).

    1. Hallo,

      Hast Du das mit var_dumb(); ermittelt?

      dumme Variablen? Auch nicht schlecht ... ;-)

      Ciao,
       Martin

      --
      Einer aktuellen Erhebung zufolge sind zehn von neun Ehefrauen eifersüchtig auf ihren Mann.
      1. Hast Du das mit var_dumb(); ermittelt?

        dumme Variablen? Auch nicht schlecht ... ;-)

        Ich hatte das tatsächlich mal in einem Quellcode stehen aber hier war es Absicht.

  3. Danke, ihr habt mir sehr geholfen.

    Dank var_dump konnte ich feststellen, dass im Laufe einiger Schleifendurchläufe die _POST-Variable um 3 (Leer-)Zeichen verlängert wurde, was zu den Fehlern führte.

    Nach folgendem kann ich die Variablen erfolgreich vergleichen;
    $lastshown = preg_replace('/[^0-9]/','',$lastshown);

    Danke nochmal.

    1. Dank var_dump konnte ich feststellen, dass im Laufe einiger Schleifendurchläufe die _POST-Variable um 3 (Leer-)Zeichen verlängert wurde, was zu den Fehlern führte.

      Nach folgendem kann ich die Variablen erfolgreich vergleichen;
      $lastshown = preg_replace('/[^0-9]/','',$lastshown);

      Verhindere, daß die Variable um 3 (Leer-)Zeichen verlängert wird, anstatt den Quark (bestenfalls) wieder rückgängig zu machen.