Mulli: Cookies setzen

Hallo,

ich habe ein Cookie-Problem.

Man kann sich das wie folgt vorstellen: Ich habe eine Seite, bei der man mittels Checkboxen auswählen kann, welche Nachrichten man angezeigt bekommt. Z.B. Welt, FAZ, Spiegel.

Diese Auswahl sendet dann die Auswahl weiter und ausgegeben werden nur die Nachrichten der ausgewählten Zeitungen. Z.B. Welt ist angekreuzt, FAZ und Spiegel nicht => Nur Nachrichten aus der Welt erscheinen.

Ich möchte jetzt, dass die Haken mittels Cookies gespeichert werden können. D.h. wer beim letzten Mal die Welt angekreuzt hat, soll diesen Haken auch wieder vorfinden.

Meine bisherigen Codes:

1. Seite (hier wird die Auswahl getroffen)

  
<head>  
<script type="text/javascript">  
function blah(btn,frm){  
btn.checked=!btn.checked;  
cbs=frm['ctrl[record][]'];  
for(var i=0;i<cbs.length;i++)cbs[i].checked=btn.checked;  
}  
</script>  
</head>  
<body>  
<form action="test.php" method="post" name="myform" enctype="multipart/form-data">  
<input type="checkbox" name="ctrl[record][]" value="welt">Welt<br>  
<input type="checkbox" name="ctrl[record][]" value="faz">FAZ<br>  
<input type="checkbox" name="ctrl[record][]" value="spiegel">Spiegel<br>  
<input type="button" value="Alle markieren" onclick="blah(this,this.form)">  
<input type="submit" name="btn[show]" value="Berichte lesen"></form>  
</body>  

2. Seite (Ausgabe)

  
(...)  
<?  
// Datenbank verbinden  
  include("config.php");  
// Datenbank auswählen  
mysql_select_db("*") or die("Fehler beim Öffnen der Datenbank");  
  
{  
  
$table = "news";  
  
$liststr = "('')";  
  
if (isset($_POST['btn']['show']))  
{  
	if (isset($_POST['ctrl']['record']) and is_array($_POST['ctrl']['record']))  
	{  
		$_liste = array_map('mysql_real_escape_string', $_POST['ctrl']['record']);  
		$liststr = "('" . implode("','", $_liste) . "')";  
	  
	setcookie("favpresse", $liststr, time()+10000000);  
	}  
	else  
	{  
	$_output['errors'][] = 'Sie haben keine Option ausgewählt';  
	}  
}  
if(!empty($_COOKIE["favpresse"])) $liststr = $_COOKIE["favpresse"];  
  
$sql = "select * from  $table WHERE presse IN $liststr Order By date DESC LIMIT 10";  
  
$result = mysql_query($sql);  
echo mysql_error();  
  
if ($result)  
{  
	while ($row = mysql_fetch_array($result,MYSQL_ASSOC))  
   	{  
(...)  
?>  

Bisher habe ich mit Cookies noch nicht gearbeitet. Diese Variation schien mir logisch, funktioniert aber nicht; d.h., dass zwar die angeklickten Zeitungen ausgegeben werden, doch beim nächsten Aufruf die Haken nicht gesetzt sind. Ich weiß nicht weiter und würde mich daher über Hilfe freuen - vielen Dank!

  1. EIn paar Gedanken von mir.

    "blah" trägt nicht gerade zum Verständnis bei.

    btn.checked=!btn.checked;

    Damit setzt du im vorilegenden Fall einen Button auf checked?!

    Mit Elementnamen wie ctrl[record][] wär ich vorsichtig, das könnte zu Problemen führen. Und so wirklich aussagekräftig ists auch nicht. Vor allem sind Dinge wie $_POST['ctrl']['record'] nicht unbedingt nachvollziehbar.

    Das hier
    if(!empty($_COOKIE["favpresse"])) $liststr = $_COOKIE["favpresse"];
    füllt $liststr nur wenn das Cookie gesetzt ist. Bisher sinnvoll. Aber das danach (DB-Abfrage) findet in jedem Fall statt, auch mit undefiniertem $liststr. Das führt bestimmt irgendwie zu einem Fehler.

    doch beim nächsten Aufruf die Haken nicht gesetzt sind

    Ich seh auch keinen Versuch die zu setzen?! Wenn du die Info ausliest, musst du natürlich schon die Häkchen irgendwo setzen.