Cookies-alter Wert wird angezeigt obwohl neuer drin steht

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Cookies-alter Wert wird angezeigt obwohl neuer drin steht

    Hi,

    mein Problem:

    ich schicke eine ID von Frame1 an Frame2, über diese ID wird ein Wert aus einem Array gelesen, dieser Wert ist dann die Id einer Tabelle, die erzeugt wird.

    Beim ersten aufruf soll die Tabelle auf unsichtbar gesetzt werden, den Status der Tabelle speicher ich in Cookies.

    Beim ersten Aufruf der Seite (noch keine ID vorhanden) schreib ich meine Cookies:

    $subid ist die ID der jeweiligen Tabelle

    PHP Code:
    if($id=="" or $id==0)
    {
    echo 
    "<script> document.cookie = escape(".$subid.") + '=' + escape('none'); </script>";

    dann beim erzeugen der Tabelle weiter unten im Code:

    #wenn die Id mit dem Wert der Id der Tabelle übereinstimmt
    PHP Code:
    if($id==$subid)
    {
        
    #schaut nach welcher Wert gerade für die Tabelle im Cookie steht
        
    if($_COOKIE[$subid]=="none")
        {
        echo 
    "<script> document.cookie = escape(".$subid.") + '=' escape('block')</script>";
        }
        else
        {
        echo 
    "<script> document.cookie = escape(".$subid.") + '=' escape('none')</script>";
        }
    }

    #erzeugen des Tabellenkopfes
    if($_COOKIE[$subid]=="block")
    {
        echo 
    "<table id=".$subid." style='display:block' >";
    }
    else
    {
        echo 
    "<table id=".$subid." style='display:none' >";

    brauche dringend Hilfe, bin nun total verwirrt.

    hab mittels Firefox festgestellt (beim anschauen der Cookies), das die Werte richtig gesetzt werden, aber beim Anzeigen der Cookies im Script selber

    PHP Code:
    echo $_COOKIE[$subid]; 
    das der alte Wert drinsteht, es entsteht also eine Verzögerung und da liegt mein Problem. wenn man mindestens einmal aktualisiert, beim zweiten mal setzt er alles auf none.



    Hilfe!!!!
    carpe noctem

    schon wieder ist es Tag!!!!

  • #2
    Re: Cookies-alter Wert wird angezeigt obwohl neuer drin steht

    Wieso versuchst du die Cookies denn per Javascript zu setzen? Warum benutzt du nicht die PHP-Funktion dafür?

    Und wenn du ein Cookie erst clientseitig setzt - dann nimmst du doch wohl nicht ernsthaft an, dass du es schon vorher serverseitig auslesen kannst - in dem Script, welches zum Zeitpunkt des Cookie-Setzens schon längst beendet ist?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Comment


    • #3
      Cookies per PHP or Javascript

      Ich hatte vorher in Javascript zwei Funktionen für das Schreiben und lesen von Cookies,

      wollte die dann im PHP aufrufen und bin dann darauf gekommen im PHP selbst die Cookies zu schreiben.


      War wahrscheinlich schon so verwirrt (zu viel Kaffee und Code), dass ich ganz vergaß, dass man das auch mit PHP machen kann.

      Werd's mal mit PHP versuchen.

      Meld mich falls es klappt oder nicht klappt.

      Gruß

      Schlafmütze
      carpe noctem

      schon wieder ist es Tag!!!!

      Comment


      • #4
        cookies setzen

        Bin wohl einfach zu blöd,

        Meine Seite besteht aus 3 Frames,

        Frame1: zeigt ein HTML an
        Frame2: zeigt einen Baum mittels Javascript an
        Frame3: zeigt Tabellen an


        in Frame 3 will ich nun die Cookies setzten,

        hab dafür ne Funktion geschrieben:

        PHP Code:
        function cookies($name$status)
        {
        setCookie($name$status);

        Die steht ganz oben im Code!!!!!

        und er bringt mir die Fehlermeldung:

        Kann die Headerinformationen nicht ändern, sind bereits gesetzt bei (details.php:8) ist mein Frame 3, doch in Zeile 8 setzt ich erst mein Javascript, nach meiner Funktion!!!!


        Hilfe!!!!
        carpe noctem

        schon wieder ist es Tag!!!!

        Comment


        • #5
          Cookies setzen

          Ok, hab ne Lösung gefunden:

          ganz am Anfang des Frame3 setz ich:

          ob_start();

          ist auch in Ordnung.

          Nur:

          jetzt hab ich wieder mein altes Problem:

          ich setz die Cookies per PHP, mittel meiner Funktion von oben. ich schick meine Id an mein Frame3 und er macht auch alles, anzeigen ausblenden.

          Aber:

          nach zweimaligem Aktualisieren oder schicken einer anderen ID setzt er mein Cookie auf none.


          Danke für den Hinweis mit PHP die Cookies zu setzen, hatte nicht mehr daran gedacht.

          Gruß

          Schlafmütze
          carpe noctem

          schon wieder ist es Tag!!!!

          Comment


          • #6
            Re: cookies setzen

            Original geschrieben von Schlafmütze
            Kann die Headerinformationen nicht ändern, sind bereits gesetzt bei (details.php:8) ist mein Frame 3, doch in Zeile 8 setzt ich erst mein Javascript, nach meiner Funktion!!!!
            Es ist unwichtig, wo die Funktion steht, es zählt nur, wo du sie aufrufst. Das muß vor jeglicher Ausgabe geschehen.

            Comment


            • #7
              Ok, das seh ich ja ein

              aber wie kann ich dann mein Problem lösen?

              Ich weiß den Status meiner Tabellen eben erst in der Mitte des Skriptes und nicht schon am Anfang - genauso die Id.

              Hab's mit Javascript versucht


              function show($id)
              {
              if(document.getElementById(id).style.display=="block")
              {
              document.getElementById(id).style.display="none";
              }
              else
              {
              docuemnt.getElementById(id).stlye.display="block";
              }

              }


              die funtkion liegt in nem File functions.js, wird eingebunden und im PHP-Skript:

              PHP Code:
              echo "<body onload=\"show('".$id"')\">"

              nur leider macht er die Tabelle sichtbar, aber nicht mehr unsichtbar

              keine Ahnung warum.

              dann hab ich's mit Arrays versucht, aber die setzt er mir ständig neu, wenn die Id reinkommt.

              dann woll ich's mit Cookies machen - siehe Skript oben - und jetzt bin ich völlig ratlos.

              Wenn mir jemand einen Tipp hat - ich bin für alles dankbar.
              carpe noctem

              schon wieder ist es Tag!!!!

              Comment


              • #8
                Original geschrieben von Schlafmütze
                Ok, das seh ich ja ein

                aber wie kann ich dann mein Problem lösen?

                Ich weiß den Status meiner Tabellen eben erst in der Mitte des Skriptes und nicht schon am Anfang - genauso die Id.
                Das ist egal.
                Wichtig ist nur, dass du den Status kennst, bevor du die erste Ausgabe machst
                Ich denke, also bin ich. - Einige sind trotzdem...

                Comment


                • #9
                  Ich hab den Code nun so geändert, dass die Ausgabe erst zum Schluss kommt.

                  Aber mein Problem bleibt bestehen:

                  Die Cookies werden erst verspätet aktualisiert.

                  Ich hab das ganze nun mit PHP gemacht und die Änderungen vorgenommen, dass die Ausgabe erst am Schluss der Seite geschieht.

                  Aber ich bin noch immer an der gleichen Stelle - das Problem bleibt bestehen.


                  Soll ich die Ausgabe in einer anderen Seite machen, damit die Cookies bis dahin aktiv sind? Oder gibt es eine andere Lösung?

                  Wenn nicht, wie mache ich die Ausgabe in einer anderen Datei?

                  Die Berechnungen und alle Funktionen sind in meiner PHP-Datei, kann ich die Ergebnisse automatisch in einer HTML ausgeben?
                  carpe noctem

                  schon wieder ist es Tag!!!!

                  Comment


                  • #10
                    Hab das Problem nun gelöst,

                    lag an 'ner If-Bedinung.


                    Danke für die Hilfe bei meinem Problem - allein hätt ich's nicht geschafft.

                    Gruß

                    Schlafmütze
                    carpe noctem

                    schon wieder ist es Tag!!!!

                    Comment

                    Working...
                    X