Hi!
if($row['Geschlecht']=="m"){
echo "<img src="male.gif">";
}else{
echo "<img src="female.gif">";
}der FEHLERHAFTE Code vorher hingegen sah so aus:
echo "<img src="";
if($row['Geschlecht']=="m"){
echo "male.gif";
}else{
echo "female.gif";
}
echo "">";
Funktional nehmen sich beide nichts, wenn ich nicht grad etwas übersehe oder du deinen Fehler nicht mitkopiert hast.
Wie sich das auf den MySQL-Query duzente Codezeilen später auswirken kann und woher der Unterschied zwischen 'm' und $_POST['Geschlecht'] //(='m') kam, ist mir nach wie vor ein Rätsel.
Das Problem wird vermutlich gewesen sein, dass du einen Verweis auf "" erzeugt hast, was den Browser veranlasst hat, einen Request auf die gleiche Ressource auszuführen, diesmal aber ohne POST-Daten. Desweiteren wirst du davon ausgegangen sein, dass diese Ressource nur per POST aufgerufen wird, weswegen du bei einem GET-Aufruf diesen nicht richtig abfängst. In POST stehen dann keine Werte, die dann natürlich den eben eingefügten Eintrag in der Datenbank überschreiben.
Durch das Entfernen der anderen, für das Problem scheinbar nicht relevanten Codeteile, hast du auch die eigentliche Ursache erwischt. Beim Reduzieren des Problems auf den geringstmöglichen Code, kann sich genau das ergeben, dass der Fehler beim Entfernen "unbeteiligten" Codes mit verschwindet und sich damit zeigt, dass die Ursache eigentlich ganz woanders lag. Das zeigt aber auch, dass deine zunächst betrachtete Codestelle Schwachstellen hat, weil du nicht ausreichend prüfst, ob das was du bekommst, deinen Erwartungen entspricht.
Wenn meine Vermutung so richtig ist, hättest du das durch die Auswertung der Requests des Browsers sehen sollen. Du siehst es nicht durch Kontrollausgaben, weil du ja nur die vom Hauptrequest anschaust, nicht aber die vom zweiten Request. Es sei denn, du schreibst die Kontrollausgaben in eine Datei (inklusive ordentlichem File Locking).
Lo!