Checkbox status in Session speichern

proloser

Erfahrenes Mitglied
Hallo,

ich möchte bei den Suchoptionen die möglichkeit geben nur Artikel mit Bild anzuzeigen!

Versucht habe ich es mit folgendem Code aber die Session bleibt einfach nicht gespeichert, was mach ich falsch?

PHP:
if(isset($_POST['submit_suchoptionen_nmb'])) { 
  $_SESSION['suchoptionen_nmb'] = $_POST['submit_suchoptionen_nmb']; 
} elseif($_POST['submit_suchoptionen_nmb'] == "" AND $_SESSION['suchoptionen_nmb'] == "1") {
  unset($_SESSION['suchoptionen_nmb']);  
}
  
if($_SESSION['suchoptionen_nmb'] == "1") {
  $nmb_checked = "checked";
} else {
  $nmb_checked = "";
}
HTML:
<input onClick="this.form.submit()" type="checkbox" $nmb_checked name="submit_suchoptionen_nmb" value="1">

MfG proloser
 
Das Problem wird sein, dass nur „erfolgreiche“ Formularelemente verschickt werden. Und ein Checkbox-Element gilt dann als erfolgreich, wenn es ausgewählt ist. Der Zustand „$_POST['submit_suchoption_nmb'] == ''“ wird also nie eintreten.
 
Ich muss jetzt einfach nochmal fragen denn ich bekomm es wirklich nicht hin!

Wird auf die Checkbox geklickt soll in eine Session einfach der Wert 1 geschrieben werden, nun ist die Checkbox aktiviert!
klickt man nun wieder auf die aktivierte Checkbox sollte die Session gelöscht werden -> Checkbox deaktiviert!

Ich hab das ganze wie gesagt schon versucht aber funktioniert leider nicht!

HTML:
<input onClick="this.form.submit()" type="checkbox" $nmb_checked name="submit_suchoptionen_nmb" value="1">
Das Formular wird praktisch bei jedem Klick auf die Checkbox abgeschickt, nur zur info ;)
 
Probier mal Folgendes:
PHP:
if( !empty($_POST['submit_suchoptionen_nmb']) ) {
	$_SESSION['suchoptionen_nmb'] = true;
} else if( $_SERVER['REQUEST_METHOD'] == 'POST' ) { 
	unset($_SESSION['suchoptionen_nmb']);
}
 
Ein kleines Problem ist mir bei der Lösung noch aufgefallen ...

Da ich in dem Formular noch das Land auswählen kann wird ja auch der "POST" abgeschickt und die Session für die Checkbox gelöscht.

Gibt es eine Lösung damit die Checkbox nur gelöscht wird wenn auch nur die Checkbox abgeschickt wird?
 
Zuletzt bearbeitet:
Hallo,

ich hab das Problem immer noch nicht lösen können, letzter versuch vielleicht fällt ja doch noch jemandem was ein.

Folgendes Problem:
Artikel können nach Land und nur Artikel mit einem Bild gefiltert werden.
Das Land wird mit einem DropDown ausgewählt und "Nur mit Bild" mit einer CheckBox.

HTML:
<select onchange="this.form.submit()" name="submit_land" size="1">
  $land_list
</select>

<input onClick="this.form.submit()" type="checkbox" $nmb_checked name="submit_nmb" value="1">

Folgender Code Funktioniert ganz gut nur wählt man ein Land aus wird auch ein POST abgeschickt und die SESSION wird gelöscht was nicht passieren sollte.

Probier mal Folgendes:
PHP:
if( !empty($_POST['submit_suchoptionen_nmb']) ) {
	$_SESSION['suchoptionen_nmb'] = true;
} else if( $_SERVER['REQUEST_METHOD'] == 'POST' ) { 
	unset($_SESSION['suchoptionen_nmb']);
}

Was kann ich machen damit die SESSION nur gelöscht wird wenn auch auf die Checkbox geklickt wird?

MfG proloser



EDIT

Problem gelöst!

PHP:
if( !empty($_POST['submit_suchoptionen_nmb']) ) { 
    $_SESSION['suchoptionen_nmb'] = true; 
} else if( $_SERVER['REQUEST_METHOD'] == 'POST' AND !$_POST['submit_land']) {  
    unset($_SESSION['suchoptionen_nmb']); 
}
 
Zuletzt bearbeitet:
Vielen Dank für die große Hilfe.

Genau diese Lösung hat mit noch gefehlt. Mit Dropdown-Menüs habe ich es schon selbst hinbekommen. Aber die Checkboxen haben mich an den Rand des Wahnsinns gebracht ;)

Dankw nochmals!
 
Ein kleiner fehler hat das ganze trozdem noch, ich weiß leider nicht wie ich den weg bekomme!

Wenn die Checkbox "checked" ist und beim DropDown "Alle Länder" also " value="" " dann wird der Status der Checkbox in der Session auch gelöscht somit ist die Checkbox nicht mehr "checked".

Bei meinem Projekt nicht all zu schlimm aber falls jemand eine Idee hat, lasst es mich wissen! ;)

LG proloser
 
Hallo proloser,

schau Dir mal den folgenden Code an, vielleicht hilft Dir das!
HTML:
<!-- Definiere Länder Drop-Down -->
<select name="Country[]" size="1">
  <option value="x"<?php if ($SEARCH['Country'] ==="x"){ echo (" selected"); }?>>All</option>
  <option value="0"<?php if ($SEARCH['Country'] === 0 ){ echo (" selected"); }?>>Angola</option>
  <option value="1"<?php if ($SEARCH['Country'] === 1 ){ echo (" selected"); }?>>Belize</option>
  <option value="2"<?php if ($SEARCH['Country'] === 2 ){ echo (" selected"); }?>>Germany</option>
  <option value="3"<?php if ($SEARCH['Country'] === 3 ){ echo (" selected"); }?>>...</option>
</select>

<!-- Definiere Image Input-Field -->
<input type="checkbox" name="Image" value="1"<?php if ($SEARCH['Image'] == 1){ echo (" checked"); }?>>
PHP:
if (!session_is_registered("SEARCH")){
  session_register("SEARCH");
}else{

  //Country
  if(isset($_REQUEST['Country'][0])){
    if ($_REQUEST['Country'][0] == "x"){
      $SEARCH['Country'] = "x";
    }else{
      $SEARCH['Country'] = intval($_REQUEST['Country'][0]);
    }
  }//end if Country

  //Checkbox Image
  if(!empty($_REQUEST['Image'])){
      $SEARCH['Image'] = $_REQUEST['Image'];
  } else if( $_SERVER['REQUEST_METHOD'] == 'POST' ) { 
      unset($SEARCH['Image']);
  }//end if !empty($_REQUEST['Image'])

}//end if !session_is_registered("SEARCH")


//Start Country
if ($SEARCH['Country'] !== "x"){
  $WHERE .= " AND Country='".$SEARCH['Country']."'";
}else{
  $SEARCH['Country'] = "x";
}//end if Country

//Start Image
if (!empty ($SEARCH['Image'])){
  $WHERE .= " AND Image='".$SEARCH['Image']."'";
}//end if Image

Ich hoffe ich konnte Dir helfen.

Gruß
Alexander
 
Zurück