MYSQL + PHP Daten in Tabelle speichern geht nicht

Sunke

Mitglied
Hallo, ich hab mal wieder ein Problem....:(

Folgender Codeschnipsel aus der Datei:

Code:
echo 'Du suchst Männer <input type="checkbox" name="suchen2[]" value="mann" '.$checkman.'>';
echo 'Du suchst Frauen <input type="checkbox" name="suchen2[]" value="frau" '.$checksie.'>';

Hier sind 2 Checkboxen die ausgewählt werden können! Die Werte werden fehlerfrei an folgenden Code geschickt:

Code:
 case "suchen":
$aender2 = $_POST['suchen2'];
if($aender2[0] == "mann")
{
$aender3 = "true";
}
else
{
$aender3 = "false";
}
if($aender2[1] == "frau")
{
$aender = "true";
echo "hallo";
}
else
{
$aender = "false";
}
$sql = "UPDATE single SET suchtsie='".$aender."', suchtihn='".$aender3."' WHERE id=".$_SESSION['userid']."";
$connect = abfrage($sql, $host, $benutzer, $pass, $db);
if($connect)
	{
	$info = '<Font Color="##FF0000"><b>Daten geändert! Die Änderungen werden nach einem neuen Login gültig!<br>
	 <a href="index.php?log=2">Logout</a><br><br></b></font>';
	}
	else
	{
	$info = '<Font Color="##FF0000"><b>Daten konnte nicht geändert werden!<br><br></b></font>';
	}
break;

Problem:
Die Checkbox Männer kann jederzeit geändert werden, aber die der Frau nicht!
Sieht hier jemand einen Fehler?

Danke schon einmal für die Hilfe!
 
Hallo

Code:
 case "suchen":
$aender2 = $_POST['suchen2'];  //Hier gibst Du den Wert von $_POST['suchen2'] in $aender2
if($aender2[0] == "mann")     //Im ersten Element des Arrays nach "mann" suchen
{
$aender3 = "true";
}
else
{
$aender3 = "false";
}
if($aender2[1] == "frau")      //warum suchst Du aber hier im 2. Element des Array  ändere mal die $aender2[1] in $aender2[0]
{
$aender = "true";
echo "hallo";
}
else
{
$aender = "false";
}
$sql = "UPDATE single SET suchtsie='".$aender."', suchtihn='".$aender3."' WHERE id=".$_SESSION['userid']."";
$connect = abfrage($sql, $host, $benutzer, $pass, $db);
if($connect)
	{
	$info = '<Font Color="##FF0000"><b>Daten geändert! Die Änderungen werden nach einem neuen Login gültig!<br>
	 <a href="index.php?log=2">Logout</a><br><br></b></font>';
	}
	else
	{
	$info = '<Font Color="##FF0000"><b>Daten konnte nicht geändert werden!<br><br></b></font>';
	}
break;



Laut den ersten Codestück, kann man ja nur nach Frau oder Mann suchen.
Theoretisch muss dann $aender2 gar kein Array sein.
Das was mir auf die Schnelle und kurz vor 2 Uhr aufgefallen ist. Vielleicht war es das ja.


Liebe Grüsse
Tonda
 
Hi, nein du hast 2 Checkboxen, heißt also du kannst man oder frau oder beides oder garnichts suchen!
Habe aber den Fehler gefunden und zwar, wenn ich die erste und die 2te Checkbox auswähle, wenn ich die erste auswähle und die zweite nicht und wenn ich keine auswähle,funktioniert es, aber wenn ich die erste nicht auswähle und die 2te aber, funktioniert es nicht!

Ich hab mir das so erklärt:
Da die erste auf false gesetzt wird (da sie nicht ausgewählt wird) ist gleich das ganze Array False und somit kann die 2te Checkbox garnicht auf true gesetzt werden! :confused:
Bitte korrigieren wenn die Erklärung falsch ist!

Hier meine Lösung:

Code:
foreach($_POST['suchen2'] as $aender)
			{
			$aender2 .= $aender;
			}
			if($aender2 == "mann")
			{
			$mann = "true";
			$frau = "false";
			}
			if($aender2 == "")
			{
			$mann = "false";
			$frau = "false";
			}
			if($aender2 == "frau")
			{
			$mann = "false";
			$frau = "true";
			}
			if($aender2 == "mannfrau")
			{
			$mann = "true";
			$frau = "true";
			}
			$sql = "UPDATE single SET suchtsie='".$frau."', suchtihn='".$mann."' WHERE id=".$_SESSION['userid']."";
			$connect = abfrage($sql, $host, $benutzer, $pass, $db);
			if($connect)
				{
				$info = '<Font Color="##FF0000"><b>Daten geändert! Die Änderungen werden nach einem neuen Login gültig!<br>
						 <a href="index.php?log=2">Logout</a><br><br></b></font>';
				}
				else
				{
				$info = '<Font Color="##FF0000"><b>Daten konnte nicht geändert werden!<br><br></b></font>';
				}

Ich habe einfach das ganze Array ausgelesen und in einer Variablen gespeichert und dann mit Hilfe von if-Abfragen das richtige dann in die Tabelle geschrieben!
 
Zurück