Daten werden nicht in die Datenbank eingetragen

03/18/2012 18:19 .NoThx#1
Hey leute, ich habe folgendes problem, unzwar werden keine Daten in die Mysql datenbank eingetragen
Code:

PHP Code:
<?php
if (isset($_GET['step'])){
    
$step $_GET['step'];
    if ( 
$step == 2){
    if (isset(
$_POST['username'])){
        if (isset(
$_POST['passwort'])){
            
$username strip_tags(@$_POST['username']);
            
$passwort strip_tags(@$_POST['passwort']);
            
$email strip_tags(@$_POST['email']);
            
$passwortrepeat strip_tags(@$_POST['passwortrepeat']);
            
$login $_POST['login'];
            
$ques1 strip_tags(@$_POST['questionone']);
            
$ques2 strip_tags(@$_POST['questiontwo']);
            
$ques3 strip_tags(@$_POST['questionthree']);
            if (
$login){
                if (
$username&&$passwort&&$passwortrepeat&&$ques1&&$ques2&&$ques3){
                    if (
$passwort == $passwortrepeat){
                        if (
strlen($username)<=25 || strlen($passwort)<=25){
                            
$passwort md5($passwort);
                            
$passwortrepeat md5($passwortrepeat);
                            
$connect mysql_connect(ZENSIERT) or die("Verbindungs Fehler");
                            
mysql_select_db("homepage") or die("Verbindungs Fehler");
                            
$userexist mysql_query("SELECT username FROM users WHERE username='$username'");
                            if(
mysql_num_rows($userexist)!=1){
                            
$queryreg mysql_query("
                            INSERT INTO users VALUES ('','
$username','$passwort','$email')
                            "
);
                            echo 
'Herzlich Willkommen auf MineMystery! Das gesamte Team wünscht die viel Spaß!';
                            }else{
                                echo 
'    Der Angegebene Account Existier bereits!';
                            }
                        }else{
                            echo 
'Die Maximale Länge von Username bzw. Passwort beträgt 25!';
                        }
                        
                    }else{
                        echo 
'Die beiden Angegeben Passwörter stimmen nicht überein!';
                    }
                }else{
                echo 
'Bitte fülle <b>alle</b> felder aus!';
                }
            }else{
                echo 
'Bitte gebe ein Username und/oder ein Passwort ein!';
            }
            
        }
    }
    }else{
    echo 
'Es ist ein Fehler Aufgetreten! Sie werden in 5 Sekunden Weitergeleitet...'?><meta http-equiv="refresh" content="5; URL=index.php?s=regi">  <?php
    
}
}else{
?>
    <form action="index.php?s=regi&step=2" method="post">
    <center>
    Benutzername(Minecraft Name):</br>
    <input type="text" value="Benutzername" onFocus="if(this.value=='Benutzername') this.value='';" onBlur="if(this.value=='') this.value='Benutzername';" name="username"/> </br>
    </br>
    Passwort:</br>
    <input type="password" value="Passwort" onFocus="if(this.value=='Passwort') this.value='';" onBlur="if(this.value=='') this.value='Passwort';" name="passwort"/></br>
    </br>
    Passwort Wiederholen:</br>
    <input type="password" value="Passwort-Wiederholen" onFocus="if(this.value=='Passwort-Wiederholen') this.value='';" onBlur="if(this.value=='') this.value='Passwort-Wiederholen';" name="passwortrepeat"/></br>
    </br>
    E-Mail Addresse:</br>
    <input type="text" value="E-Mail" onFocus="if(this.value=='E-Mail') this.value='';" onBlur="if(this.value=='') this.value='E-Mail';" name="email"/></br>
    </br>
    Frage_Eins:</br>
    <input type="text" value="Frage_Eins" onFocus="if(this.value=='Frage_Eins') this.value='';" onBlur="if(this.value=='') this.value='Frage_Eins';" name="questionone"/> </br>
    </br>
    Frage_Zwei:</br>
    <input type="text" value="Frage_Zwei" onFocus="if(this.value=='Frage_Zwei') this.value='';" onBlur="if(this.value=='') this.value='Frage_Zwei';" name="questiontwo"/></br>
    </br>
    Frage_Drei:</br>
    <input type="text" value="Frage_Drei" onFocus="if(this.value=='Frage_Drei') this.value='';" onBlur="if(this.value=='') this.value='Frage_Drei';" name="questionthree"/></br>
    </br>
    <input type="submit" name="login" value="Weiter" /> </form>
    </center>
    <?php
}


?>
Edit: Mysql Query, der gemaint ist:

Quote:
$queryreg = mysql_query("INSERT INTO users VALUES ('','$username','$passwort','$email')");
03/18/2012 18:25 Evolutio#2
PHP Code:
$queryreg mysql_query("INSERT INTO users VALUES ('','$username','$passwort','$email')"); 
('HIER','$username','$passwort','$email')");

Ist das die ID ?
haste die auf AI ?
03/18/2012 18:27 .NoThx#3
Ja ist die ID und ja ist AI
03/18/2012 18:42 Whoknowsit#4
PHP Code:
$queryreg mysql_query("INSERT INTO users (username, password, email) VALUES ('".$username."', '".$password."', '".$email."')"); 
03/18/2012 18:46 .NoThx#5
Es geht wieder, danke KA warum es eine zeit geklappt hat und jeze ned
03/18/2012 19:00 Whoknowsit#6
Hier mal ein kleiner (ungetesteter) Verbesserungsvorschlag. Oder sagen wir... So in etwa würde ich es machen :p

PHP Code:
<?php
function cleanUp($data) { 
    
$data stripslashes($data); 
    
$data strip_tags($data);  
    return 
$data
}

/*******************/

if(isset($_GET)) $_GET array_map('cleanUp'$_GET); 
if(isset(
$_POST)) $_POST array_map('cleanUp'$_POST);

/*******************/

$step = (array_key_exists('step'$_GET) ? $_GET['step'] : 1);

if(
$step 2) {
    die(
'Es ist ein Fehler Aufgetreten! Du wirst in 5 Sekunden weitergeleitet...
    <meta http-equiv="refresh" content="5; URL=index.php?s=regi">'
);
}

/*******************/

if ($step == 2) {
    
$username        = (array_key_exists('username'$_POST) ? $_POST['username'] : false); 
    
$passwort        = (array_key_exists('passwort'$_POST) ? $_POST['passwort'] : false);
    
$passwort2        = (array_key_exists('passwortrepeat'$_POST) ? $_POST['passwortrepeat'] : false);
    
$email            = (array_key_exists('email'$_POST) ? $_POST['email'] : false); 
            
    
$ques1 = (array_key_exists('questionone'$_POST) ? $_POST['questionone'] : false); 
    
$ques2 = (array_key_exists('questiontwo'$_POST) ? $_POST['questiontwo'] : false); 
    
$ques3 = (array_key_exists('questionthree'$_POST) ? $_POST['questionthree'] : false);
            
    
$login = (array_key_exists('login'$_POST) ? $_POST['login'] : false);
    
    
/*******************/
    
    
if(!$username) {
        echo 
'Bitte gib einen Usernamen an!';
    }
    elseif(
strlen($username) <= 25) {
        echo 
'Dein Username darf maximal 25 Zeichen lang sein!';
    }
    elseif(!
$password) {
        echo 
'Bitte definiere ein Passwort!';
    }
    elseif(
$passwort !== $passwort2) {
        echo 
'Die angegeben Passwörter stimmen nicht überein!';
    }
    elseif(!
$email) {
        echo 
'Bitte gib deine E-Mail Adresse an!';
    }
    elseif(!
filter_var($emailFILTER_VALIDATE_EMAIL)) {
        echo 
'Bitte gib eine gültige E-Mail Adresse an!';
    }
    elseif(!
$ques1 || !$ques2 || !$ques3) {
        echo 
'Bitte fülle <b>alle</b> Felder aus!';
    }
    elseif(!
$login) {
        echo 
'Ein unbekannter Fehler ist aufgetreten.';
    }
    else {
        
$passwort md5($passwort); 
        
$passwortrepeat md5($passwortrepeat); 
        
        
$userexist mysql_query("SELECT username FROM users WHERE username='".mysql_real_escape_string($username)."'"); 
        
        if(
$userexist === FALSE){
            
$queryreg mysql_query("INSERT INTO users (username, password, email) VALUES ('".mysql_real_escape_string($username)."', '".mysql_real_escape_string($password)."', '".mysql_real_escape_string($email)."')");
            echo 
'Herzlich Willkommen auf MineMystery! Das gesamte Team wünscht die viel Spaß!'
        } else { 
            echo 
'Der Angegebene Account existiert bereits!';
        }
    }
} else {
?> 
    <form action="index.php?s=regi&step=2" method="post"> 
    <center> 
    Benutzername(Minecraft Name):</br> 
    <input type="text" value="Benutzername" onFocus="if(this.value=='Benutzername') this.value='';" onBlur="if(this.value=='') this.value='Benutzername';" name="username"/> </br> 
    </br> 
    Passwort:</br> 
    <input type="password" value="Passwort" onFocus="if(this.value=='Passwort') this.value='';" onBlur="if(this.value=='') this.value='Passwort';" name="passwort"/></br> 
    </br> 
    Passwort Wiederholen:</br> 
    <input type="password" value="Passwort-Wiederholen" onFocus="if(this.value=='Passwort-Wiederholen') this.value='';" onBlur="if(this.value=='') this.value='Passwort-Wiederholen';" name="passwortrepeat"/></br> 
    </br> 
    E-Mail Addresse:</br> 
    <input type="text" value="E-Mail" onFocus="if(this.value=='E-Mail') this.value='';" onBlur="if(this.value=='') this.value='E-Mail';" name="email"/></br> 
    </br> 
    Frage_Eins:</br> 
    <input type="text" value="Frage_Eins" onFocus="if(this.value=='Frage_Eins') this.value='';" onBlur="if(this.value=='') this.value='Frage_Eins';" name="questionone"/> </br> 
    </br> 
    Frage_Zwei:</br> 
    <input type="text" value="Frage_Zwei" onFocus="if(this.value=='Frage_Zwei') this.value='';" onBlur="if(this.value=='') this.value='Frage_Zwei';" name="questiontwo"/></br> 
    </br> 
    Frage_Drei:</br> 
    <input type="text" value="Frage_Drei" onFocus="if(this.value=='Frage_Drei') this.value='';" onBlur="if(this.value=='') this.value='Frage_Drei';" name="questionthree"/></br> 
    </br> 
    <input type="submit" name="login" value="Weiter" /> </form> 
    </center> 
<?php 
}
?>
03/18/2012 22:19 .NoThx#7
Öm Okay, das werde ich gleich bei gelegenheit testen...


Könnest du auch kurz mal schauen, warum das Datum in der Datenbank nicht erneuert wird

PHP Code:
<?php
session_start
(); 
if(isset(
$_SESSION['username'])) {
    
$date =  date("d.m.Y");
    
$username $_SESSION['username'];
    
$connect mysql_connect(ZENSIERT) or die("Verbindungs Fehler");
    
mysql_select_db("homepage") or die("Verbindungs Fehler");
    
$dateDB mysql_query("SELECT date FROM users WHERE username='$username'");
    if (
$dateDB != $date){
        
// CODE 
        
echo 'Heutiges datum';
        
        
        
        
$UpdateDatemysql_query("INSERT INTO users (date) VALUES ('$date') WHERE username=$username");
        
//$UpdateDate= mysql_query("INSERT INTO users ".$date." WHERE username='".$username."'");
    
}else{
        echo 
'Neues Datum!';
    }
}

?>
03/19/2012 07:06 Fratyr#8
Quote:
$dateDB != $date
$dateDB enthält eine MySQL Ressource da du deine Daten nicht gefetcht hast, und
$date einen String, obwohl man in Solchen Dingen eher einen Timestamp verwendet.
Dein Query ist vollkommen Falsch, willst du nen Datensatz updaten benutzt man
PHP Code:
Update users SET date '$date' WHERE username '$username' 
und nicht INSERT.

Quote:
elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) {
filter_var gibts erst seit PHP 5.2, viele Serverbetreiber rüsten nach Anfrage gerade mal
auf PHP 5 auf. Du solltest die Abwärtskompatabilität nicht auser Acht lassen.
Quote:
Originally Posted by PseudoPsycho
PHP Code:
$userexist mysql_query("SELECT username FROM users WHERE  username='".mysql_real_escape_string($username)."'"); 
        
if(
$userexist === FALSE){ 
Normalerweise verwendet man mysql_num_rows oder
PHP Code:
SELECT count(username) ... 
Ganz nebenbei wirft dein Script sicher 15 Notice Errors aus.
03/19/2012 08:14 Whoknowsit#9
@Fratyr - Ich hatte noch keine Gelegenheit, es überhaupt zu testen :p

@.NoThx

Hier nochmal eine korrigierte Version:

PHP Code:
<?php
function cleanUp($data) { 
    
$data stripslashes($data); 
    
$data strip_tags($data);  
    return 
$data
}

/*******************/

if(isset($_GET)) $_GET array_map('cleanUp'$_GET); 
if(isset(
$_POST)) $_POST array_map('cleanUp'$_POST);

/*******************/

$step = (array_key_exists('step'$_GET) ? $_GET['step'] : 1);

if(
$step 2) {
    die(
'Es ist ein Fehler Aufgetreten! Du wirst in 5 Sekunden weitergeleitet...
    <meta http-equiv="refresh" content="5; URL=index.php?s=regi">'
);
}

/*******************/

if ($step == 2) {
    
$username        = (array_key_exists('username'$_POST) ? $_POST['username'] : false); 
    
$passwort        = (array_key_exists('passwort'$_POST) ? $_POST['passwort'] : false);
    
$passwort2       = (array_key_exists('passwortrepeat'$_POST) ? $_POST['passwortrepeat'] : false);
    
$email           = (array_key_exists('email'$_POST) ? $_POST['email'] : false); 
            
    
$ques1 = (array_key_exists('questionone'$_POST) ? $_POST['questionone'] : false); 
    
$ques2 = (array_key_exists('questiontwo'$_POST) ? $_POST['questiontwo'] : false); 
    
$ques3 = (array_key_exists('questionthree'$_POST) ? $_POST['questionthree'] : false);
            
    
$login = (array_key_exists('login'$_POST) ? $_POST['login'] : false);
    
    
/*******************/
    
    
if(!$username) {
        echo 
'Bitte gib einen Usernamen an!';
    }
    elseif(
strlen($username) >= 25) {
        echo 
'Dein Username darf maximal 25 Zeichen lang sein!';
    }
    elseif(!
$passwort) {
        echo 
'Bitte definiere ein Passwort!';
    }
    elseif(
$passwort !== $passwort2) {
        echo 
'Die angegeben Passwörter stimmen nicht überein!';
    }
    elseif(!
$email) {
        echo 
'Bitte gib deine E-Mail Adresse an!';
    }
    elseif(!
filter_var($emailFILTER_VALIDATE_EMAIL)) {
    
//elseif (!preg_match('/^[a-z0-9]+([-_\.]?[a-z0-9])+@[a-z0-9]+([-_\.]?[a-z0-9])+\.[a-z]{2,4}/i', $email)) {
        
echo 'Bitte gib eine gültige E-Mail Adresse an!';
    }
    elseif(!
$ques1 || !$ques2 || !$ques3) {
        echo 
'Bitte fülle <b>alle</b> Felder aus!';
    }
    elseif(!
$login) {
        echo 
'Ein unbekannter Fehler ist aufgetreten.';
    }
    else {
        
$passwort md5($passwort); 
        
$passwortrepeat md5($passwort2);

        
$connect mysql_connect(ZENSIERT) or die("Verbindungs Fehler");
        
mysql_select_db("homepage") or die("Verbindungs Fehler");
        
        
$userexist mysql_query("SELECT username FROM users WHERE username='".mysql_real_escape_string($username)."'");
        
        if(
$userexist === FALSE){
            
mysql_query("INSERT INTO users (username, password, email) VALUES ('".mysql_real_escape_string($username)."', '".mysql_real_escape_string($password)."', '".mysql_real_escape_string($email)."')");
            echo 
'Herzlich Willkommen auf MineMystery! Das gesamte Team wünscht die viel Spaß!'
        } else { 
            echo 
'Der Angegebene Account existiert bereits!';
        }
    }
} else {
?> 
    <form action="index.php?s=regi&step=2" method="post"> 
    <center> 
    Benutzername(Minecraft Name):</br> 
    <input type="text" value="Benutzername" onFocus="if(this.value=='Benutzername') this.value='';" onBlur="if(this.value=='') this.value='Benutzername';" name="username"/> </br> 
    </br> 
    Passwort:</br> 
    <input type="password" value="*****" onFocus="if(this.value=='*****') this.value='';" onBlur="if(this.value=='') this.value='*****';" name="passwort"/></br> 
    </br> 
    Passwort Wiederholen:</br> 
    <input type="password" value="*****" onFocus="if(this.value=='*****') this.value='';" onBlur="if(this.value=='') this.value='*****';" name="passwortrepeat"/></br> 
    </br> 
    E-Mail Addresse:</br> 
    <input type="text" value="E-Mail" onFocus="if(this.value=='E-Mail') this.value='';" onBlur="if(this.value=='') this.value='E-Mail';" name="email"/></br> 
    </br> 
    Frage_Eins:</br> 
    <input type="text" value="Frage_Eins" onFocus="if(this.value=='Frage_Eins') this.value='';" onBlur="if(this.value=='') this.value='Frage_Eins';" name="questionone"/> </br> 
    </br> 
    Frage_Zwei:</br> 
    <input type="text" value="Frage_Zwei" onFocus="if(this.value=='Frage_Zwei') this.value='';" onBlur="if(this.value=='') this.value='Frage_Zwei';" name="questiontwo"/></br> 
    </br> 
    Frage_Drei:</br> 
    <input type="text" value="Frage_Drei" onFocus="if(this.value=='Frage_Drei') this.value='';" onBlur="if(this.value=='') this.value='Frage_Drei';" name="questionthree"/></br> 
    </br> 
    <input type="submit" name="login" value="Weiter" /> </form> 
    </center> 
<?php 
}
?>
Solltest du PHP 5 < 5.2.0 haben, kannst du alternativ den auskommentierten Regex nutzen. Zu deinem anderen Problem... Am Einfachsten ists meistens, seine SQL-Queries mal druch phpMyAdmin laufen zu lassen :)