Jan Oliver: Es wird immer 1 in die Datenbank eingetragen...

Hallo!
Ich habe folgendes Problem:
Ich möchte gerne in eine Tabelle eintragen, welcher User auf welcher Seite gerade online ist.
Dazu habe ich die Felder Userid, seitenid, time (Tabelle: www_aktuellon)
Ich habe dazu eine Funktion geschrieben:
____________________________// Code \____________________________
function setonlinelist($page,$user_id) {
    $db = new db;
    $db->connect();
    $db->select_db("wiewowarum");
    $seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");
    $anzahl = $db->num_rows("SELECT userid FROM www_aktuellon WHERE userid='".$user_id."'");
    if($anzahl == "0")
        {
            $seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");
            $db->query("INSERT INTO www_aktuellon (userid, seitenid, time) VALUES ('".$user_id."','".$seiten['seitenid']."','".time()."')");
        }
    else
        {
            $seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");
            $db->query("UPDATE www_aktuellon SET seitenid='".$seiten['seitenid']."', time='".time()."' WHERE userid='".$user_id."'");
        }
        $gesamt = $page."->".$seiten[seitenid]."|".$user_id;
        return $gesamt;
}
___________________________// code ende \_________________________

Rufe ich diese Funktion in einer Testdatei auf, klappt alles wunderbar, rufe ich sie allerdings in der Datei meiner Page (auch lokal) auf, dann wird bei seitenid immer 1 eingetragen.
echo setonlinelist(...); gibt die richtigen Werte aus.
Also wie kann das sein? Ich hoffe es kann mir jemand helfen, andere Foren haben schon gepasst...

MfG Jan oliver

--
> Wir sind zivilisiert unsere Todeszellen sind gekachelt und werden täglich gereinigt!\nby USA
  1. Hi,

    Ich möchte gerne in eine Tabelle eintragen, welcher User auf welcher Seite gerade online ist.

    hast Du nach der Absurdität dieses Unterfangens mal im Archiv gesucht?

    Rufe ich diese Funktion in einer Testdatei auf, klappt alles wunderbar, rufe ich sie allerdings in der Datei meiner Page (auch lokal) auf, dann wird bei seitenid immer 1 eingetragen.

    Welche Debug-Ausgaben hast Du mit welchen Ergebnissen durchgeführt?

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Hallo!»» Hi,

      hast Du nach der Absurdität dieses Unterfangens mal im Archiv gesucht?

      Wieso das denn? Ich kann somit überprüfen, auf welcher Seite eingeloggte User gerade sind.

      Welche Debug-Ausgaben hast Du mit welchen Ergebnissen durchgeführt?

      Hä?
      Sry bin Newby...

      --
      > Wir sind zivilisiert unsere Todeszellen sind gekachelt und werden täglich gereinigt!
      by USA
      1. Hi,

        hast Du nach der Absurdität dieses Unterfangens mal im Archiv gesucht?
        Wieso das denn?

        recherchiere diesbezüglich bitte im Archiv.

        Ich kann somit überprüfen, auf welcher Seite eingeloggte User gerade sind.

        Nein.

        Welche Debug-Ausgaben hast Du mit welchen Ergebnissen durchgeführt?
        Hä?
        Sry bin Newby...

        Gib die von Dir verwendeten Variablen und die Ergebnisse der von Dir eingesetzten Funktionen sowie die Ergebnisse von Vergleichen etc. testweise aus. Überprüfe die Ergebnisse mit dem, was Du erwartest. "Nearby" schreibt man ohne "w".

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. Ok, 1. Es ist mir vollkommen egal, ob es absurd ist, ich will es trotzdem!
          2. Wenn ich den SQL String ausgebe, kommt es richtig raus, nämlich UPDATE www_aktuellon SET seitenid='5', time='richtige zeit' WHERE userid='1'
          Eine Zeile später wird eingetragen.
          3. Sorry dass ich kein Englisch kann.

          --
          > Wir sind zivilisiert unsere Todeszellen sind gekachelt und werden täglich gereinigt!
          by USA
          1. Hi,

            Ok, 1. Es ist mir vollkommen egal, ob es absurd ist, ich will es trotzdem!

            dann rechne in diesem Forum bitte nicht mit Hilfe. Wir beteiligen uns nicht an Netzvergewaltigungen und Usertäuschung.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. OK. Da sist wieder sowas, siehe den Thread vom homepage-forum.de

              Ich frage etwas und es kommt sowas nettes!
              Im FAQ steht:

              Man kann mit verschiedenen Ansätzen eine grobe Schätzung dieser Anzahl durchführen.

              Um diese grobe Schätzung geht es mir! Außerdem funktioniert es mit eingeloggten Usern, was die Sache doch nochmal einschränkt!
              Ich will auf die Seite dann sowas in der Art schreiben:
              "blabla" ist in den letzten 5 Minuten zuletzt auf dieser Seite aktiv gewesen: "blablabla"

              Das ist also Usertäuschung! Dann tu mir bitte den Gefallen und schreib an alle großen Forensoftware entwicklern, dass sie ihre User täuschen.
              Naja, dann bedanke ich mich für die Hilfe.

              MfG Jan Oliver

              --
              > Wir sind zivilisiert unsere Todeszellen sind gekachelt und werden täglich gereinigt!
              by USA
              1. Dann tu mir bitte den Gefallen und schreib an alle großen Forensoftware entwicklern, dass sie ihre User täuschen.

                Du kennst das Sprüchlein mit den Fliegen..? ;)>

                Was Dein Problem angeht: Wenn Du der Datenbankfunktion definitiv die richtige Anweisung übergibst, solltest Du prüfen, was innerhalb der Datenbankklasse passiert (auch wenn es unwahrscheinlich ist, daß hier ein Fehler liegt) und ob Du vielleicht versehentlich weitere SQL-Anweisungen dazwischen gesetzt hast. Prüfe weiterhin den Typ der betroffenen Spalte und, falls es ein nummerischer Typ ist, nimm die Anführungszeichen aus der SQL-Anweisung raus. Versuche, Deine zitierte SQL-Anweisung über die Kommandozeile (sofern vorhanden) oder alternativ eine Datenbankverwaltung (z.B. phpMyAdmin, falls Du MySQL einsetzt) einzugeben, um zu sehen, ob das funktioniert. Versuche ebenfalls, diese SQL-Anweisung in einem PHP-Skript zu Fuß, d.h. ohne die Klasse, auszuführen.

                Gruß,
                  soenk.e

            2. häää watt jetzt mutter??

              ne heute nich!

            3. Hallo,

              dann rechne in diesem Forum bitte nicht mit Hilfe. Wir beteiligen uns nicht an Netzvergewaltigungen und Usertäuschung.

              die Sache mit der Vergewaltigung solltest du bei Gelegenheit mal erklären.

              Gruß,
              _Dirk

  2. Ich möchte gerne in eine Tabelle eintragen, welcher User auf welcher Seite gerade online ist.

    Nanu, warum denn das?

    $seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");

    Wo ist denn da die Fehlerabfrage geblieben?

    $anzahl = $db->num_rows("SELECT userid FROM www_aktuellon WHERE userid='".$user_id."'");

    Falls Deine Datenbank count() unterstützt, solltest Du vielleicht lieber dieses benutzen, dann muß die Datenbank nicht noch extra alles raussuchen. Das wäre dann in etwa

    $anzahl = $db->query_first("SELECT count(*) FROM www_seiten WHERE kennung='".$page."'");

    $seiten = $db->query_first("SELECT seitenid FROM www_seiten WHERE kennung='".$page."'");

    Diese Abfrage ist überflüssig, Du hast sie bereits oben erledigt.

    $db->query("INSERT INTO www_aktuellon (userid, seitenid, time) VALUES ('".$user_id."','".$seiten['seitenid']."','".time()."')");

    Siehe unten.

    $gesamt = $page."->".$seiten[seitenid]."|".$user_id;

    In $seiten[] fehlen Anführungszeichen.

    echo setonlinelist(...); gibt die richtigen Werte aus.

    Du solltest immer dort die Daten prüfen, wo sie auch gesetzt/benutzt werden, nicht nach oder vor weiteren Verarbeitungsschritten an einer anderen Stelle.
    In diesem Fall bedeutet das: Schau Dir an, wie eigentlich Deine SQL-Zeilen aussehen. Stimmt dort die Angabe für seitenid nicht, muß der Fehle weiter oben in Deinem Skript liegen, gehe dann Stück für Stück mit var_dump() weiter hoch.

    Gruß,
      soenk.e