kostenloser Webspace werbefrei: lima-city


Checkbox mit Gedächtniss

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    cglabs

    Kostenloser Webspace von cglabs, auf Homepage erstellen warten

    cglabs hat kostenlosen Webspace.

    Hallo, ich versuche eine Checkbox zu bauen, die nach dem Seitenrefresh ihren Status beibehält.
    Hab diese Methode dafür gebastelt.

    public function checkbox($label, $name_var, $name_parameter){
            $checked = isset($_POST[$name_var][$name_parameter]) ? 'checked' : '';
            $return = "<input id='{$label}' type='checkbox'  value='1' name='{$name_var}[{$name_parameter}]' {$checked} />";
            return $return;
        }


    Soweit funktioniert der Code, der Anfangsstatus ist aber "Häkchen nicht gesetzt".
    Ich habe leider keine Idee, wie ich es schaffen soll, dass der Anfangsstatus "Häckchen gesetzt ist".
    Hat jemand eine Idee, wie man das machen könnte?

    EDIT:

    Hab es jetzt mit einer zusätzlichen $post Variable probiert. Die Checkbox bleibt seltsamerweise immer aktiv. Ich sehe mein Denkfehler einfach nicht. :(

    public function checkbox($label, $name_var, $name_parameter){
            
            if(!isset($_POST[$name_var][$name_parameter.'_first'])){
                $checked = 'checked';
                $_POST[$name_var][$name_parameter.'_first']=1;
            }else{
                $checked = isset($_POST[$name_var][$name_parameter]) ? 'checked' : '';
            }
            $return = "<input id='{$label}' type='checkbox'  value='1' name='{$name_var}[{$name_parameter}]' {$checked} />";
            return $return;
        }


    EDIT:
    $_Post kann man glaub garnicht direkt setzen. Hab das Ganze mit Session gemacht.
    public function checkbox($label, $name_var, $name_parameter){
    		if(!isset($_SESSION[$name_var][$name_parameter.'_first'])){
    			$checked = 'checked';
    			$_SESSION[$name_var][$name_parameter.'_first'] = 1;
    		}else{
    			$checked = isset($_POST[$name_var][$name_parameter]) ? 'checked' : '';
    		}
    		$return = "<input id='{$label}' type='checkbox'  value='1' name='{$name_var}[{$name_parameter}]' {$checked} />";
    		return $return;
    	}


    Es funktioniert aber nicht mehr, wenn man auf eine andere Seite geht und wieder zurück. Da nach einem solchen Seitenwechsel die Session noch aktiv ist wird die else Bedingung ausgeführt. Und da nach dem Seitenwechsel nichts mehr in der Postvariable steht, ist das Kästchen nicht aktiv :(.
    ................

    Also ich möchte, dass das Kästchen nach Seitenwechsel und wenn man das erste Mal auf die Seite kommt aktiv ist. Wenn man sich auf der Seite befindet, soll der Kästchenstatus auch nach Seitenrefresh gemerkt werden.



    Beitrag zuletzt geändert: 25.9.2010 21:35:32 von cglabs
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Dafür würd sich doch ein stinknormales Cookie anbieten, oder?
    Einfach Wert 1 in einen Cookie schreiben, Gültigkeit so lange du möchtest und dann mittels PHP den Cookie abfragen und bei bedarf "checked="checked"" hinzufügen.
    http://php.net/manual/de/function.setcookie.php
  4. Autor dieses Themas

    cglabs

    Kostenloser Webspace von cglabs, auf Homepage erstellen warten

    cglabs hat kostenlosen Webspace.

    Die Checkbox Methode ist für eine Kategoriesuche vorgesehen, davon wird es so um die 20 geben. Ist es nicht unüblich solche Informationen in ein Cookie zu schreiben? Ist es nicht das Selbe, wenn ich Session nehme?

    Ich hab das Problem, dass die Checkbox bei nicht gesetztem Status NULL ist. Ich sehe keine Möglichkeit Logik für ein Anfangszustand der Box zu definieren.

    Wie erkenne ich, dass man das erste Mal auf der Seite ist, bzw. man von einer anderen Seite kommt und die Seite nicht einfach refresht wurde?

    Beitrag zuletzt geändert: 26.9.2010 12:57:05 von cglabs
  5. Mh, 20 Cookies wären echt nicht sinnvoll, da bist du mit einer Session besser bedient.
    Sehen, woher der User kommt kannst du mittels $_SERVER['HTTP_REFERER']. Hilft das?
  6. Autor dieses Themas

    cglabs

    Kostenloser Webspace von cglabs, auf Homepage erstellen warten

    cglabs hat kostenlosen Webspace.

    Das mit dem $_SERVER['HTTP_REFERER'] sollte mich weiterbringen. Werde es nach den Wartungsarbeiten gleich ausprobieren. Dankeschön :)
  7. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!