DB - Eintrag wird nicht richtig gesetzt!? HILFE

Grunge

Erfahrenes Mitglied
Hallo Leute,

ich bin am verzweifeln und finde den Fehler einfach nicht.
Schaut euch das mal an:

$row wird durch ne DB abfrage gefüllt und funktioniert definitiv auch. nur messe und tv sind immer "1" also "gesetzt" in der DB gespeichert.
Code:
 <?php
     $portrait="";
     $mode="";
     $bade="";
     $takt="";
     $akt="";
     $laufsteg="";
     $messe="";
     $tv="";
     
     if($row['portrait'] == 1){
        $portrait="checked=\"checked\"";  
     }
       if($row['mode'] == 1){
        $mode="checked=\"checked\"";  
     }
       if($row['bade'] == 1){
        $bade="checked=\"checked\"";  
     }
       if($row['teilakt'] == 1){
        $takt="checked=\"checked\"";  
     }
       if($row['akt'] == 1){
        $akt="checked=\"checked\"";  
     }
       if($row['laufsteg'] == 1){
        $laufsteg="checked=\"checked\"";  
     }
       if($row['messe'] == 1){
        $messe="checked=\"checked\"";  
     }
     
       if($row['tv'] == 1){
        $tv="checked=\"checked\"";  
     }
     ?>
<input type="checkbox" name="portrait" <?php echo $portrait; ?>>Portrait
<input type="checkbox" name="mode" <?php echo $mode; ?>>Mode / Fassion
<input type="checkbox" name="bade" <?php echo $bade; ?>>Bademoden / Dessous
<input type="checkbox" name="teilakt" <?php echo $takt; ?>>Teilakt
<input type="checkbox" name="akt" <?php echo $akt; ?>>Akt
<input type="checkbox" name="laufsteg" <?php echo $laufsteg; ?>>Laufsteg
<input type="checkbox" name="messe" <?php echo $messe; ?>>Messe / Promo
<input type="checkbox" name="tv" <?php echo $tv; ?>>TV / Werbung

?>

Hier die DB speicherung:
Code:
//Formular gesendet
        $portrait=0;
        $mode=0;
        $bade=0;
        $takt=0;
        $akt=0;
        $lauf=0;
        $messen=0;
        $tvn=0;
       
        if(isset($_POST['portrait'])) {
        $portrait=1;
        }
       
        if(isset($_POST['mode'])) {
        $mode=1;
        }
       
        if(isset($_POST['bade'])) {
        $bade=1;
        }
       
        if(isset($_POST['teilakt'])) {
        $takt=1;
        }
       
        if(isset($_POST['akt'])) {
        $akt=1;
        }
       
        if(isset($_POST['laufsteg'])) {
        $lauf=1;
        }
       
        if(isset($_POST['messe'])) {
        $messen=1;
        }
       
        if(isset($_POST['tv'])) {
        $tvn=1;
        }
       $sql="UPDATE wp_models SET gehalt_fotohalb='".$_POST['fotohalb']."', gehalt_fotoganz='".$_POST['fotoganz']."', gehalt_akthalb='".$_POST['akthalb']."', gehalt_aktganz='".$_POST['aktganz']."', gehalt_laufstegmesse='".$_POST['messe']."',gehalt_tv='".$_POST['tv']."',strasse='".$_POST['strasse']."',plz='".$_POST['plz']."',ort='".$_POST['ort']."',telefon='".$_POST['telefon']."',email='".$_POST['email']."', groesse='".$_POST['groesse']."' , gewicht='".$_POST['gewicht']."' , brust='".$_POST['brust']."', taille='".$_POST['taille']."',hueft='".$_POST['huefte']."',konfektion='".$_POST['konfektion']."',schuhe='".$_POST['schuhe']."',augen='".$_POST['augen']."', haarfarbe='".$_POST['haarfarbe']."',haarlaenge='".$_POST['haarlaenge']."',haut='".$_POST['haut']."',typ='".$_POST['typ']."',tattoo='".$_POST['tattoo']."',piercing='".$_POST['piercing']."',dubist='".$_POST['dubist']."',portrait='".$portrait."',mode='".$mode."',bade='".$bade."',teilakt='".$takt."',akt='".$akt."',laufsteg='".$lauf."',messe='".$messen."',tv='".$tvn."',muttersprache='".$_POST['lang']."',lang2='".$_POST['lang2']."',lang3='".$_POST['lang3']."',activate='0' WHERE email='".$mail['email']."'";

ich weiß nicht ob ich irgendwo nen Fehler sehe, aber hoffe ihr habt bessere Augen

DANKE
 
EDIT: Sorry war doch nix, die stehen beim Update ja ganz hinten, daher schau ich nochmal weiter.

Aber gib mal bitte ein oder 2 var_dump() vom $row wieder.

Ist das Problem eigentlich beim Eintragen oder beim auslesen?
 
Zuletzt bearbeitet:
ich tippe mal darauf, dass die $_POST['messe'] und $_POST['tv'] immer existieren, daher ersetze am besten dass isset durch ein !empty, was nicht nur überprüft, ob es existiert, sondern ob es auch nicht leer ist.

Wenn dies dann immer noch immer auf 1 ist, gib mir mal das var_dump von den beiden.
 
$portrait = ((isset ($_POST['portrait']) && !empty ($_POST['portrait'])) ? 1 : 0);

So wäre es wohl richtiger ;)

Ab PHP 5.4 würde auch das gehen:

$portrait = ((isset ($_POST['portrait']) && !empty ((int) $_POST['portrait'])) ? 1 : 0);
 
$portrait = ((isset ($_POST['portrait']) && !empty ($_POST['portrait'])) ? 1 : 0);
@bofh1337 Das ist doch meines Wissens doppelt gemoppelt, denn isset() tut ja nur einen Teil von dem, was empty() im ganzen macht, oder irre ich mich?
string(1) “6”
das gibt er nach absenden des Formulars aus für nen var dump von post:tv
Somit kommt bei isset() (prüfen ob es existiert) bzw. bei !empty() (prüfen ob es existiert und nicht leer ist) immer ein true (wahr), also läuft da ja alles richtig.

Ist das folgende wirklich der orginale Code?
PHP:
       if($row['messe'] == 1){
        $messe="checked=\"checked\"";
     }
   
       if($row['tv'] == 1){
        $tv="checked=\"checked\"";
     }
HTML:
<input type="checkbox" name="messe" <?php echo $messe; ?>>Messe / Promo
<input type="checkbox" name="tv" <?php echo $tv; ?>>TV / Werbung
Denn ich vermute mal eher, dass der Quellcode wie folgt oder so ähnlich aussieht.
HTML:
<input type="checkbox" name="messe" <?php echo $messe; ?> value="5">Messe / Promo
<input type="checkbox" name="tv" <?php echo $tv; ?> value="6">TV / Werbung
Aber selbst dann müsste, wenn du das Häckchen nicht setzt, zwar mit isset() ein true kommen, weil dieser Array-Eintrag existiert, aber mit empty() sollte ein false kommen, weil der Wert vom value nicht gesendet wird bzw. das true vom checked nicht kommt, sondern ein false drin steckt, welches meines Wissens das empty() hoffentlich auch ein false liefern lässt.

Wenn empty() dennoch ein true liefert, obwohl $_POST['tv'] ein true mit bringt, dann versuch es mal mit folgendem.
PHP:
if(!empty($_POST['tv'])){
if($_POST['tv'] != false){
  $tvn = 1;
}
}
Aber ich glaub das ist nicht nötig.
 
Tut mir Leid Matze, nichts hat geholfen, komisch ist auch, dass es nur bei den letzten Beiden passiert. Alle anderen funktionieren einwandfrei!
 
Check mal, ob du nicht irgendwo in dem Formular, ein Inputfeld mit den name="tv" oder name="messe" hast, anders kann ich es mir nicht vorstellen, wie es sein sollte, dass diese $-POST['']-Einträge einen Inhalt haben, der sonst nicht von den Checkboxen kommt.
 

Neue Beiträge

Zurück