• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Checkboxen in MySQL

Freuler

Neues Mitglied
Hallo :)

hab ein kleines Problem mit den Checkboxen. Ich möchte 2 Checkboxen mit INSERT in meine Datenbank schreiben. Jedoch tut er das nicht. Habe in Google mind. 6 Lösungen versucht. Nichts hat funktioniert.

Hoffentlich könnt ihr mir helfen:


HTML Interface
Code:
<form method="post" onsubmit="return chkFormular()" name="Formular" action="anmelden.php"><div id="register1">
    <table cellpadding="5px" cellspacing="3px"><tr><td><label for="VOLLERNAME">Vor- & Nachname:</label></td><td>
    <input type="text" class="textfeld1" name="vollername" /></td></tr><tr><td>
    <label for="NAME">Name:</label></td><td>
    <input type="text" class="textfeld1" name="name" /></td></tr><tr><td>
    <label for="PASSWORT">Passwort:</label></td><td>
    <input type="password" class="textfeld1" name="passwort1" /></td></tr><tr><td>
    <label for="PASSWORT">Passwort wiederholen:</label></td><td>
    <input type="password" class="textfeld1" name="passwort2" /></td></tr><tr><td>
    <label for="EMAIL">Email:</label></td><td>
    <input type="text" class="textfeld1" name="email" /></td></tr><tr><td>
    <label for="LAND">Land:</label></td><td>
    <select class="textfeld1" name="land">
    <option>Schweiz</option>
    <option>Deutschland</option>
    <option>&Ouml;sterreich</option>
    <option>Luxemburg</option>
    <option>Liechtenstein</option>
    <option>Anderes...</option></select>
</td></tr></table>
    <input type="submit" class="submit" name="submit" value="Registrieren" />
    <input type="reset" class="submit" name="reset" value="Zur&uuml;cksetzen" />
</div>
  <div id="register2">Pro Optionen<br /><br />
  <input type="checkbox" name="sponsor[]" value="1" /> * Ich m&ouml;chte Sponsor von Shift werden.<br /><br />
  <input type="checkbox" name="moderator[]" value="1" /> Ich m&ouml;chte Moderator von Shift werden.<br /><br />
  <small>* = kostenpflichtig</small></div></form>
Code:
<?php 
  // Mit Datenbank verbinden 
  $db = mysqli_connect(DB_HOST, DB_BENUTZER, DB_PASSWORT, DB_NAME);
  mysqli_set_charset($db, "utf8");
  


    // Anmeldedaten aus $_POST auslesen
    $name = mysqli_real_escape_string($db, trim($_POST['name']));
    $vollername = mysqli_real_escape_string($db, trim($_POST['vollername']));
    $passwort1 = mysqli_real_escape_string($db, trim($_POST['passwort1']));
    $passwort2 = mysqli_real_escape_string($db, trim($_POST['passwort2']));
    $email = mysqli_real_escape_string($db, trim($_POST['email']));
    $land = mysqli_real_escape_string($db, trim($_POST['land']));
    $sponsor = $_POST['sponsor'];
    $moderator = $_POST['moderator'];
    
    if(!isset($sponsor))$sponsor =0;

if(!isset($moderator))$moderator =0;


    if (!empty($vollername) && !empty($name) && !empty($passwort1) && !empty($passwort2) && ($passwort1 == $passwort2) && !empty($email)) {
      // Prüfen, dass dieser Benutzername noch nicht verwendet wird

            $sql1 = "SELECT NAME, EMAIL FROM user WHERE EMAIL = '$email'";
      $daten1 = mysqli_query($db, $sql1);

      if (mysqli_num_rows($daten1) == 0) {
      
      $sql = "SELECT NAME, EMAIL FROM user WHERE NAME = '$name'";
      $daten = mysqli_query($db, $sql);
      if (mysqli_num_rows($daten) == 0) {
        // Der Benutzername ist eindeutig, Daten können in Datenbank eingefügt werden
        $sql = "INSERT INTO user (VOLLERNAME, NAME, PASSWORT, EMAIL, LAND, MOD, SPONSOR) VALUES ('$vollername', '$name', '$passwort1', '$email', '$land', '$moderator', '$sponsor')";
        mysqli_query($db, $sql);
      // Dem Benutzer die erfolgreiche Anmeldung bestätigen
        echo 'Ihre Registrierung wurde erfolgreich abgeschlossen. Sie können sich nun einloggen.</div>
        <div id="content_bottom"></div>';
        $title = "Registrierung erfolgreich abgeschlossen";
        mysqli_close($db);
exit();
      } }     else {
        // Benutzername wird bereits verwendet, also Fehlermeldung anzeigen
        echo 'Name oder Mailadresse wird bereits verwendet.';
        $name = "";
        $title = "Registrierung fehlgeschlagen";
        $email = "";
      }

    }
    else {
      echo '';
    }


  mysqli_close($db);
?>
Datenbanken stehen alle in dieser Reihenfolge. Moderator und Sponsor ist auf TINYINT 10 NULL gestellt.
Seit dem ich diese zwei Zeilen zur PHP Action Datei als Insert hinzugefügt habe fügt er rein gar nichts mehr ein.


Bitte helft mir!


Das ist die optische Seite: http://www.freuli.net/shift/anmeldung.php
 
Zuletzt bearbeitet:
Werbung:
Schreib

Code:
<input type="checkbox" name="sponsor" value="1" />

also ohne die eckigen Klammern "[]". Diese haben aus der Variable nämlich ein Array gemacht, was bei einer checkbox mit genau einem Wert ziemlich sinnfrei ist.

Auf den Wert von "sponsor" kannst Du dann mit

Code:
$_POST["sponsor"]

zugreifen, so wie es bereits in deinem php-Code steht.

Um zu prüfen, ob das Häkchen gesetzt wurde, musst Du dann nur noch prüfen, ob in der Variable der Wert "1" enthalten ist. Wenn nicht, dann wurde sie nicht angehakt.
 
Das hatte ich schon davor entfernt gehabt. Im internet stand dass das die lösung sei. Auch ohne diese eckigen klammern wird es nicht funktionieren :/ bin seit 17:00 nur an diesen zwei kästchen
 
Werbung:
Das hat ja auch nichts mit den Häkchen an sich zu tun, sondern mit dem Spaltennamen "MOD". Das ist nämlich auch die Bezeichnung der MySQL-Funktion für Modulo (MySQL :: MySQL 5.0 Reference Manual :: 11.6.2 Mathematical Functions). Folglich musst Du das

Code:
$sql = "INSERT INTO user (VOLLERNAME, NAME, PASSWORT, EMAIL, LAND, MOD, SPONSOR) VALUES ('$vollername', '$name', '$passwort1', '$email', '$land', '$moderator', '$sponsor')";

mittels Backticks so anpassen

Code:
$sql = "INSERT INTO user (VOLLERNAME, NAME, PASSWORT, EMAIL, LAND, [COLOR="red"]`[/COLOR]MOD[COLOR="red"]`[/COLOR], SPONSOR) VALUES ('$vollername', '$name', '$passwort1', '$email', '$land', '$moderator', '$sponsor')";

Und: es ist an sich kein Fehler, aber unsauber wenn man Strings in Anführungszeichen setzt um sie auszugeben oder irgendwo einzufügen. Du solltest daher dieses Statement (wie auch die anderen) so umformen:

Code:
$sql = "INSERT INTO user (VOLLERNAME, NAME, PASSWORT, EMAIL, LAND, ` MOD` , SPONSOR) VALUES ('".$vollername."', '".$name."', '".$passwort1."', '".$email."', '".$land."', '".$moderator."', '".$sponsor."')";
 
Zurück
Oben