Seite 1 von 1

Checkboxauswahl weiterführen

Verfasst: 20.05.2009, 22:37
von AndreasB.
Hallo...

Ich möchte eine Auswahl der Checkbox über mehrere Seiten (Links) hinweg, weiter führen. Also der Besucher setzt den Haken bei der Checkbox und diesen Haken möchte ich in den darauf folgenden Seiten mittels PHP auswerten.

Der entsprechende Code im Formular:

Code: Alles auswählen

<input type="checkbox" name="sall" value="%search_value%" %search_checked%/> nur in Auswahl<br />
Und der Code in PHP:

Code: Alles auswählen

$_SESSION&#91;"search_all"&#93;="1";
if&#40;isset&#40;$_GET&#91;'sall'&#93;&#41; && $_GET&#91;'sall'&#93; == 0&#41;&#123;
$_SESSION&#91;"search_all"&#93;="0";
	&#125;
$page=insert&#40;"search_checked",&#40;$_SESSION&#91;"search_all"&#93;=="0"?"checked=\"checked \""&#58;""&#41;,$page&#41;;
$page=insert&#40;"search_value",&#40;$_SESSION&#91;"search_all"&#93;=="0"?"0"&#58;"1"&#41;,$page&#41;;
Klappt so aber nicht. Wenn ich auf einen Link klicke, ist die Einstellung wieder weg.

Was ist da falsch?

Gruß
Andreas

Verfasst:
von

Verfasst: 21.05.2009, 00:43
von LinkPop
Ohne die Übermittlung des Zustandes der Checkbox per Post oder Get (sprich: Abschicken eines Formulares) oder Ablegen der Info im Session-Cookie (on the fly - während der Auswahl) wird keine Information an die nächste Seite übergeben. Ergo kann dort auch nichts ausgelesen werden.

Verfasst: 21.05.2009, 17:43
von AndreasB.
Hallo LinkPop,

und wie könnte ich das Ablegen "on the fly" machen?

Gruß
Andreas

Verfasst:
von

Verfasst: 21.05.2009, 21:08
von LinkPop
AndreasB. hat geschrieben:Hallo LinkPop,

und wie könnte ich das Ablegen "on the fly" machen?

Gruß
Andreas
Wenn der User den Zustand der Checkbox verändert, kann man mittels JavaScript (onclick-Auswertung) ein zusätzliches Formular (unabhängig vom Hauptformular) an eine kleine php-Datei schicken, die dann das Cookie setzt bzw. löscht und mit dem HTTP-Status "204 No Content" antwortet, so das die momentan angezeigte Seite nicht verlassen wird (kein Reload o.ä.). Wenn der User den Haken setzt, passiert optisch also gar nichts.

Alle betreffenden Seiten müssen dann natürlich vor Anzeige der Checkbox prüfen, ob das Cookie vorhanden ist und entsprechend auf "checked" oder eben nicht setzen. (siehe Zeile 1 $sallstatus)

Somit kann der Status der Checkbox auf weitere Seiten übergeben werden, die lediglich über einen normalen Link aufgerufen werden.

Betreffende Seiten mit Checkbox im Hauptformular und zusätzlichem Formular für Cookie-Steuerung:

Code: Alles auswählen

<?

if &#40;isset&#40;$_COOKIE&#91;"csall"&#93;&#41; && $_COOKIE&#91;"csall"&#93; != ""&#41; &#123;$sallstatus="checked";&#125;

echo "<form action="..." method="post" name="deinform">\n";
echo "<input type="checkbox" name="sall" value="Inhalt" onclick="if&#40;document&#91;'deinform'&#93;&#91;'sall'&#93;.checked==false&#41; &#123;document&#91;'sallForm'&#93;&#91;'sall'&#93;.value='';&#125; else &#123;document&#91;'sallForm'&#93;&#91;'sall'&#93;.value=document&#91;'deinform'&#93;&#91;'sall'&#93;.value;&#125; document&#91;'sallForm'&#93;.submit&#40;&#41;; return true;" $sallstatus>\n";
echo "</form>\n";

echo "<form action="sallcookie.php" method="post" name="sallForm">\n";
echo "<input type="hidden" name="sall" value="">\n";
echo "</form>\n";

?>
Datei sallcookie.php (s.o. Formular 2) setzt/löscht Cookie; antwortet mit 204

Code: Alles auswählen

<?

setcookie&#40;"csall", $_POST&#91;"sall"&#93;&#41;;

header&#40;"HTTP/1.1 204 No Content"&#41;;

?>