MySql mit if und else --> fehler ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MySql mit if und else --> fehler ?

    Hi, ich bin grade dabei die von einem Formular kommenden Daten in meine DB schreiben zu lassen, um es genauer zu sagen sind es checkboxen. Es sollen Teile einer Webseite abschaltbar sein, deswegen die checkboxen, aber das soll hier nicht zur sache stehen.

    Weswegen ich Hilfe bruache ist die Sache, dass das mit if dann die "1" eintragen klappt, wenn es aber nicht so ist dann else mit "0" aber das funktioniert nicht. Ich weis nicht woran es liegen könnte, ihr vielleicht?

    Hier der Script:


    if ($profile = "on") {
    $sql="UPDATE benutzer SET set_profile='$profile_on' WHERE id ='$uid'";
    $result = mysql_query($sql) or die (mysql_error());
    } else {
    $sql="UPDATE benutzer SET set_profile='0' WHERE id ='$uid'";
    $result = mysql_query($sql) or die (mysql_error());
    header ("location: index.php?sucessful=1");
    }



    Vielen Dank im voraus.
    Powermax90

  • #2
    Re: MySql mit if und else --> fehler ?

    Original geschrieben von powermax90
    Weswegen ich Hilfe bruache ist die Sache, dass das mit if dann die "1" eintragen klappt,
    OffTopic:
    und an deutschnachhilfe hast du garnicht gedacht?

    Kommentar


    • #3
      Sorry ich bin ziemlich in Eile

      ... ja schreib ichs noch einmal

      Ich möchte gerne durch checkboxen Abschnitte meiner Homepage abschalten und natürlich wieder anschalten können. Wenn die checkbox also den Wert true ausgibt soll in die DB Spalte 1 eingetragen werden, wenn nicht, also flase ist soll 0 eingetragen werden. Nur wenn der Wert false ist funktioniert es nicht.

      Hier der Code:

      if ($profile = "on") {
      $sql="UPDATE benutzer SET set_profile='$profile_on' WHERE id ='$uid'";
      $result = mysql_query($sql) or die (mysql_error());
      } else {
      $sql="UPDATE benutzer SET set_profile='0' WHERE id ='$uid'";
      $result = mysql_query($sql) or die (mysql_error());
      header ("location: index.php?sucessful=1");
      }

      Kommentar


      • #4
        =P

        $myFlag = $profile == 'on' ? $profile_on : 0;
        $sql = "UPDATE foo SET bar = '$myFlag'";
        mysql_query( $sql )or die( mysql_error() );
        if( $myFlag ) header( 'Location: xxx' );

        Süß oder.

        --------------------------------------------------------------------------------------
        Was der großartige Bazzi mir mal gesagt hat:
        Es ist ständig Komplexität zu vermeiden.

        Kommentar


        • #5
          LOL?

          Das was du da schreibst versteh ich nicht, ich möchte ja lediglich eine 1 in meine DB eintragen wenn der Wert eine Variable zum Beispiel "1" ist, wenn nicht, soll eine "0" in die Spalte eingetragen werden.

          Kommentar


          • #6
            Naja deine If Abfrage ist unnötig du unterscheidest zwischen 2 Zuständen und das schreit nach dem Trinitäroperator.

            $myVar = An oder Aus
            SQL $myVar einfügen

            fertig.

            Kommentar


            • #7
              Ich vermute, dass das Problem woanders liegt.

              Du musst auf der auswertenden Seite wissen, was es alles für checkboxen gibt, und alle (ev. in einer Schleife) abfragen. Wenn da -> 1 wenn nicht da -> 0. Es wird nämlich kein "false" gesendet, wenn der Haken nicht drin ist, sondern gar nichts.
              ich glaube

              Kommentar


              • #8
                kannst du das bitte etwas genauer erklären wie das geht? (google findet nicht so viel darüber was hilft)

                Kommentar


                • #9
                  naja

                  ich hab ja angewiesen, wenn die $_POST["profile"]; Variable nichts hat also es "" ist soll ich die spalte set_profile eine "0" eingetragen werden. ICh bring hier mal den ganzen code hin:

                  <?

                  $uid = getUserData("id");

                  $welcome = $_POST["checkbox_1"];
                  $mail = $_POST["checkbox_2"];
                  $profile = $_POST["checkbox_3"];

                  $welcome_on = 1;
                  $mail_on = 1;
                  $profile_on = 1;

                  if ($welcome = "on") {
                  $sql="UPDATE benutzer SET set_center='$welcome_on' WHERE id ='$uid'";
                  $result = mysql_query($sql) or die (mysql_error());
                  } else {
                  $sql="UPDATE benutzer SET set_center='0' WHERE id ='$uid'";
                  $result = mysql_query($sql) or die (mysql_error());
                  }

                  if ($mail = "on") {
                  $sql="UPDATE benutzer SET set_mail='$mail_on' WHERE id ='$uid'";
                  $result = mysql_query($sql) or die (mysql_error());
                  } else {
                  $sql="UPDATE benutzer SET set_mail='0' WHERE id ='$uid'";
                  $result = mysql_query($sql) or die (mysql_error());
                  }

                  if ($profile = "on") {
                  $sql="UPDATE benutzer SET set_profile='$profile_on' WHERE id ='$uid'";
                  $result = mysql_query($sql) or die (mysql_error());
                  } else {
                  $sql="UPDATE benutzer SET set_profile='0' WHERE id ='$uid'";
                  $result = mysql_query($sql) or die (mysql_error());
                  header ("location: index.php?sucessful=1");
                  }

                  ?>

                  Kommentar


                  • #10
                    if ($welcome = "on") {
                    Das ist kein Vergleichsoperator, sondern eine Zuweisung. Weil ich gerade angeranzt wurde von wegen "friss oder stirb" , erklär ichs dir: durch $welcome = "on" setzt du ganz einfach $welcome auf den Wert "on". Das if drumherum überprüft nur, ob die Zuweisung geklappt hat, was immer der Fall ist. Daher kommst du nie in den else - Zweig.

                    Edit: der passende Vergleichsoperator wäre ==.

                    Außerdem:
                    $welcome = $_POST["checkbox_1"];
                    Wenn der Haken nicht drin ist, dann gibt es $_POST['checkbox_1'] nicht, weil nichts gesendet wurde. Richtig wäre
                    PHP-Code:
                    if (isset($_POST['checkbox_1'])) {
                       
                    // 1 eintragen
                    } else {
                       
                    // null eintragen

                    .

                    Ein vernünftiges error_reporting (E_ALL) hätte dich darauf hingewiesen.

                    Alles kapiert?
                    Zuletzt geändert von ministry; 22.06.2007, 22:31.
                    ich glaube

                    Kommentar


                    • #11
                      geil xD

                      Dank es funktioniert, das mit isset kannte ich noch nicht, jetzt weis ichs^^

                      thx thx

                      Kommentar


                      • #12
                        <?php
                        $uid = getUserData("id");

                        $welcome = isset( $_POST["checkbox_1"] ) ? 1 : 0;
                        $mail = isset( $_POST["checkbox_2"] ) ? 1 : 0;
                        $profile = isset( $_POST["checkbox_3"] ) ? 1 : 0;

                        $sql="UPDATE benutzer SET set_center='$welcome' WHERE id ='$uid'";
                        mysql_query($sql) or die (mysql_error());

                        $sql="UPDATE benutzer SET set_mail='$mail' WHERE id ='$uid'";
                        mysql_query($sql) or die (mysql_error());

                        $sql="UPDATE benutzer SET set_profile='$profile' WHERE id ='$uid'";
                        mysql_query($sql) or die (mysql_error());

                        header ("location: index.php?sucessful=1");
                        ?>

                        ganz einfach oder?
                        Ausserdem hat man dann auch gleich schon die Benutzereingabe validiert.
                        Denn der Witz bei der Sache ist, das $_POST[checkbox_x] nicht unbedingt so funktioniert wie erwartet, weil die Daten vom Clienten kommen, da kann auch schadhafter Code eingeschleusst werden.
                        -------------------------------------------------------------------------------------
                        hierzu: http://www.php.net/mysql_real_escape_string
                        ganz wichtig!

                        EDIT:
                        huch ich war zu langsam
                        Zuletzt geändert von hacktor81; 22.06.2007, 22:43.

                        Kommentar


                        • #13
                          Original geschrieben von ministry
                          Weil ich gerade angeranzt wurde von wegen "friss oder stirb"
                          OffTopic:
                          ach komm, hau nicht so durch, "mimostry"
                          powermax90 hat schon einige posts, rtfm hätte es auch getan

                          Kommentar


                          • #14
                            OffTopic:
                            Ist es heute mal wieder nicht so einfach, es dir Recht zu machen?
                            ich glaube

                            Kommentar


                            • #15
                              Original geschrieben von ministry
                              erklär ichs dir: durch $welcome = "on" setzt du ganz einfach $welcome auf den Wert "on". Das if drumherum überprüft nur, ob die Zuweisung geklappt hat, was immer der Fall ist.
                              nur um es richtig zu stellen, wenn die zuweisung auch php-mäßig true ergibt.
                              zuweisungen mit 0, false, '', leeres array, usw. fallen z.b. nicht darunter.

                              Kommentar

                              Lädt...
                              X