Auswerten einer checkbox von einem Formular

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

  • Auswerten einer checkbox von einem Formular

    Mein login skript, das ein registrierungsformular auswertet schaut folgendermaßen aus:

    PHP-Code:
    <?php

          $benutzer
    =$HTTP_POST_VARS['benutzer'];
          
    $pass=$HTTP_POST_VARS['pass'];
          
    $mail=$HTTP_POST_VARS['mail'];
          
    $db=mysql_connect("locahost","root","")
              or die(
    "<b>Kein Connect zum Datenbankserver</b>");
          
    mysql_select_db("Datenbankname")
             or die(
    "<b>Datenbank konnte nicht angesprochen werden</b>");

          
    $anfrage="INSERT INTO user VALUES ('";
          
    $anfrage.=$benutzer;
          
    $anfrage.="', '";
          
    $anfrage.=$pass;
          
    $anfrage.="', '";
          
    $anfrage.=$mail;
          
    $anfrage.="')";

          
    mysql_query($anfrage)
              or die(
    "<b>Fehler bei der Datenbankanfrage</b>");

          
    mysql_close($db);

          print(
    "<p>Danke für die registrierung!</p>");
          print(
    "<p>Sie können sich ab sofort mit Ihrem Benutzernamen<br><br>");
          print(
    $benutzer);
          print(
    "<br><br>und Ihrem Passwort<br><br>");
          print(
    $pass);
          print(
    "<br><br>einloggen<br><br> Sollten Sie das Passwort mal vergessen, wird Ihnen das Passwort per E-Mail an
          diese Adresse geschickt:<br><br>"
    );
          print(
    $mail);
          print(
    "</p><p><a href='login.html'>Login</a></p>");

    ?>
    Ich wollte mein registrierungsformular nun um eine checkbox erweitern. Wie muss der Code dann auschauen, damit mein skript nur dann einen Eintrag für die vorgesehen Zelle der checkbox macht, wenn diese auch angekreuzt wurde.
    http://www.gratis-geld.de

  • #2
    echo '<input type="checkbox" name="log" value="1">';

    if (isset($_POST['log']) && $_POST['log']==1) {
    $sql .= ', log='.$_POST['log'];
    }

    mabrin

    Kommentar


    • #3
      Klappt irgendwie nicht, wo genau muss der Code


      if (isset($_POST['log']) && $_POST['log']==1) {
      $sql .= ', log='.$_POST['log'];
      }


      in meinem Skript eingefügt werden?

      Und muss der input-tag unbedingt innerhalb eines echo-tags sein?
      http://www.gratis-geld.de

      Kommentar


      • #4
        Das ganze war natürlich nur als Beispiel gedacht, nicht mehr, aber auch nicht weniger

        Der HTML-Code muss natürlich nicht unbedingt in einen echo-Befehl. Den HTML-Code kannst Du so schreiben, wie Du ihn benötigst! Ich gehe jetzt mal davon aus, dass Du eine Checkbox mit dem Namen 'check' in Deinen HTML einfügst und auch eine entsprechende Spalte für die Checkbox in der Tabelle 'user' nach der Spalte für das Passwort angelegt hast. Dann brauchst Du nur noch die nachfolgenden Zeilen einzufügen.

        PHP-Code:
        $anfrage.=$mail;
        if (isset(
        $HTTP_POST_VARS['check']) && $HTTP_POST_VARS['check']==1) {
            
        $anfrage.=", '".$HTTP_POST_VARS['check']."'";
        }
        $anfrage.="')"

        Zur Erläuterung: Es wird nach dem POST gefragt, ob im POST-Array der Eintrag 'check' existiert und ob dieser den Wert 1 enthält. Ist dies der Fall,
        wird Dein SQL-Query um den Wert für die entsprechende Spalte erweitert.

        mabrin

        Kommentar


        • #5
          Also leider klappt es immer noch nicht.

          Der Code von meinem formular sieht folgendermaßen aus:

          PHP-Code:
          <form name="Eingabe" action="writedata.php" method="post">
          Benutzername: <br>
          <
          input type="text" name="benutzer" size="20"><br>
          Passwort:<br>
          <
          input type="password" name="pass" size="20"><br>
          E-Mail-Adresse:<br>
          <
          input type="text" name="mail" size="20"><br>
          <
          input type="checkbox" name="dvd" value="1">
          <
          br><br>
          <
          input type="submit" value="Registrieren">
          <
          input type="submit" value="Reset"
          Soweit so gut. ich habe nun im table "user" eine neue Spalte "DVD" hinzugefügt und die writedata.php so verändert:

          PHP-Code:

                $anfrage
          ="INSERT INTO user VALUES ('";
                
          $anfrage.=$benutzer;
                
          $anfrage.="', '";
                
          $anfrage.=$pass;
                
          $anfrage.="', '";
                
          $anfrage.=$mail;
                
          $anfrage.="', '";
                
          $anfrage.=$DVD;
                if (isset(
          $HTTP_POST_VARS['dvd']) && $HTTP_POST_VARS['dvd']==1) {
                
          $anfrage.=", '".$HTTP_POST_VARS['dvd']."'";
                }
                
                
          $anfrage.="')"
          Aber irgendwie klappt es trotzdem nicht???
          http://www.gratis-geld.de

          Kommentar


          • #6
            AAAAAAAAAAAAAAAAAAH! Stop, bin doch noch selber darauf gekommen

            Habe die Bezeichnungen dvd und DVD genau verkehrt herum eingetragen. Es muss im if-tag natürlich der Begriff von der Zelle stehen und nicht vom Formular, mein Fehler.

            Aber vielen Dank das du mir geholfen hast
            http://www.gratis-geld.de

            Kommentar


            • #7
              Jetzt habe ich aber doch noch eine Frage. Das Anmeldeformular wird jetzt wunderbar in die Datenbank eingetragen. Wenn sich der User jetzt einloggt, dann möchte ich aber das er auch mit dem richtigen Namen angeredet wird und das je nach angekreuzten Interessen, unterschiedliche Inhalte wiedergegeben wird.

              Damit ich einen user einwandfrei identifizieren und seine Daten auslesen kann, muss es sich ja um den richtigen handeln. Okay, damit da keinProblem entsteht füge ich in die Datenbank eine id-zelle ein, so dass jeder user eine eigenständige ID enthält. Alles kein Problem, bloß wie lese ich dann die daten der jeweiligen ID aus? per Session, oder? Aber wie muss eine Session dann ausschauen, die den user mit der richtigen ID erkennt und dann je nach seinen Interessen die Daten ausliest?

              Von denen habe ich leider noch keine Ahnung . Wäre nett wenn Ihr mir da noch ein kurzen Code schreiben könnt.
              http://www.gratis-geld.de

              Kommentar


              • #8
                Du solltest nicht den Primärschlüssel auf eine ID setzen, sonst kann es Dir passieren, dass zwei User den gleichen Loginname verwenden. Setze lieber den Primärschlüssel auf den Loginnamen, dann kann es nur einmalige Logins geben!

                Wenn ein Benutzer sich korrekt angemeldet hat, liest Du einfach all seine Daten aus und schreibst Sie in eine Session. Ein gutes Tutorial findest Du unter:

                http://www.zend.com/zend/tut/session.php

                Aber im Internet gibt es auch viele andere Hinweise dazu (auch hier im Forum). Du trägst dann die SessionID durch alle Deine Skripte und hast somit direkten Zugriff auf die Benutzerdaten, ohne jedesmal eine neue SQL-Abfrage zu starten.

                mabrin

                Kommentar

                Lädt...
                X