Checkboxen merken

Antoniodc

Mitglied
Hi zusammen,

habe leider wieder ein kleiner problem.

Ich habe 6 checkboxen. Weil ich per empty abfrage, hab ich bei allen die gleiche Bezeichnung drin:
HTML:
	<td>
	<input type="checkbox" class="Check" name="Kontakt" value="Sommerreifen" <?php if (isset($_SESSION["Kontakt"]) and $_SESSION["Kontakt"] == "Sommerreifen") echo 'checked="checked"';?>> Sommerreifen<br>
	<input type="checkbox" class="Check" name="Kontakt" value="Winterreifen" <?php if (isset($_SESSION["Kontakt"]) and $_SESSION["Kontakt"] == "Winterreifen") echo 'checked="checked"';?>> Winterreifen<br>
	<input type="checkbox" class="Check" name="Kontakt" value="Allwetterreifen" <?php if (isset($_SESSION["Kontakt"]) and $_SESSION["Kontakt"] == "Allwetterreifen") echo 'checked="checked"';?>> Allwetterreifen<br>
	<input type="checkbox" class="Check" name="Kontakt" value="Alufelgen" <?php if (isset($_SESSION["Kontakt"]) and $_SESSION["Kontakt"] == "Alufelgen") echo 'checked="checked"';?>> Alufelgen<br>
	<input type="checkbox" class="Check" name="Kontakt" value="Stahlfelgen" <?php if (isset($_SESSION["Kontakt"]) and $_SESSION["Kontakt"] == "Stahlfelgen") echo 'checked="checked"';?>> Stahlfelgen<br>
	<input type="checkbox" class="Check" name="Kontakt" value="Komplettrad" <?php if (isset($_SESSION["Kontakt"]) and $_SESSION["Kontakt"] == "Komplettrad") echo 'checked="checked"';?>> Komplettrad<br>
	<input type="checkbox" class="Check" name="Kontakt" value="sonstiges" <?php if (isset($_SESSION["Kontakt"]) and $_SESSION["Kontakt"] == "sonstiges") echo 'checked="checked"';?>> sonstiges
	</td>

Dadurch funktioniert das refresh nicht richtig. Nur eine checkbox bleibt aktiv, obwohl ich 2 gecheckt habe. Wie kann ich das anders lösen?
 
Du solltest aus deinen Checkboxen einen Array machen (name mit [] ergänzen) und dann auf diesen testen.
PHP:
	<input 
		type="checkbox" 
		class="Check" 
		name="Kontakt[]" 
		value="Sommerreifen" 
		<?php 
			if (
				isset($_SESSION["Kontakt"]) 
				&& in_array("Sommerreifen",$_SESSION["Kontakt"]
			) echo 'checked="checked"';
		?>
	>
	Sommerreifen<br>

Ohne Array übergibst du immer nur einen...
 
Ich meinte zum Beitrag von tombe (er hat ihn inzwischen gelöscht- weils dasselbe war *g*)
 
Achso

Bekomme eine Fehlermeldung:

Warning: in_array() [function.in-array]: Wrong datatype for second argument in /homepages/13/d436049093/htdocs/Reifen-Cologne/Kontaktformular_Reifen_Cologne.php on line 185
>Sommerreifen
 
Für den Fall das du den obigen Code kopiert hast. Dieser enthält einen Fehler!

Hm, vielleicht gibt es doch einen Unterschied zu meinem Beispiel.
 
Das if() wird in dem Fall etwas komplexer, da du auch noch mit IS_array() arbeiten musst und erst dann auf den Wert zugreifen kannst. Am besten in eine Funktion auslagern.

wie immer ungetestet:
PHP:
<?php
	/**
	 * Scheibt checked wenn der Wert im Array ist
	 * @param array<Variant>	Array aller mögleichen Werte
	 * @param variant 			gesuchter Wert
	 */
	function echoCheckedFromArray($array, $value){
		//Prüfen ob a) Der Array exisitert und b) obs ein Array ist
		if(isset($array) && is_array($array)){
			//Prüfen ob der Wert im Array vorhanden ist
			if(in_array($value, $array)){
				echo 'checked="checked"'
			}
		}
	}
?>

    <input 
        type="checkbox" 
        class="Check" 
        name="Kontakt[]" 
        value="Sommerreifen" 
        <?php echoCheckedFromArray($_SESSION['Kontakt'], 'Sommerreifen'); ?>
    >
    Sommerreifen<br>
 
Gesammelte Werke von Antoniodc

Jetzt zeigt er mir keins an. Habe zum test 2 gecheckt und beim zurück, sind bei weg gewesen

oder hab ich den Funktionscheck an der falschen stelle?

Komisch, jetzt geht es. Vielleicht war noch etwas im cache. Danke

Hab doch noch etwas. Jetzt steht im Betreff feld "Array", sollte so aber nicht sein.
 
Zuletzt bearbeitet von einem Moderator:
Zurück