Finde den blöden Fehler nicht

funnyzocker

Erfahrenes Mitglied
Hallo.
Ich suche schon seit 2 Stunden diesen blöden Fehler.
Folgendes script soll erst checken ob ein Username schon vergeben ist.Das Funktioniert.
Allerdings wenn ein Name nochnicht vergeben ist soll er diesen in die datenbank eintragen.
Und genau dieses tut das Script nicht.

Mysql_error meldet komischerweise keinen Fehler

PHP:
<?php

$query = mysql_query("SELECT user FROM users WHERE user='$_POST[username]'");
while ($row = mysql_fetch_array($query));

if("$_POST[username]" == "$row[user]")
    {
    echo "Sorry aber der Username ist bereits vergeben";
    die;
        }
  else
    {
        $pass = md5($_POST['password']);
		$newuser = $_POST['username'];
		$eintrag = "INSERT INTO users (user, pass) VALUES ('$newuser', '$pass')";
		$eintragen = mysql_query($eintrag);
		mysql_error();
	echo "<p align=center>Der neue Benutzer wurde erfolgreich angelegt!<br>
		  <br><a href=index.php?page=login>Zur Startseite</a></p>";
    }
?>
 
PHP:
<?php

$query = mysql_query("SELECT user FROM users WHERE user='$_POST[username]'");
while ($row = mysql_fetch_array($query));

if($_POST['username'] == $row['user'])
    {
    echo "Sorry aber der Username ist bereits vergeben";
    die;
        }
  else
    {
        $pass = md5($_POST['password']);
        $newuser = $_POST['username'];
        $eintrag = "INSERT INTO users (user, pass) VALUES ('$newuser', '$pass')";
        if(!mysql_query($eintrag)) {
        echo mysql_error();
        } else {
        echo "<p align=center>Der neue Benutzer wurde erfolgreich angelegt!<br>
          <br><a href=index.php?page=login>Zur Startseite</a></p>";
        }
  }
?>
Versuch es mal so.
mysql_error() muss auch ausgegeben werden.
 
So ungefähr hatte ich das auch schon aber dann trägt er den username immer wieder ein.
Also überprüft er nicht ob schon vorhanden
 
PHP:
<?php
$query     = mysql_query('SELECT COUNT(`user`) AS `numUser` FROM `users` WHERE `user` = "'.mysql_real_escape_string($_POST['username']).'"');
$row 	= mysql_fetch_array($query);

if($row['numUser'] > 0)
    {
    echo 'Sorry aber der Username ist bereits vergeben';
    die;
        }
  else
    {
        $pass 		= md5($_POST['password']);
        $newuser 	= mysql_real_escape_string($_POST['username']);
        mysql_query('INSERT INTO `users` (`user`, `pass`) VALUES ("'.$newuser.'", "'.$pass.'")') or die(mysql_error());
        echo '<p align=center>Der neue Benutzer wurde erfolgreich angelegt!<br>
          <br><a href=index.php?page=login>Zur Startseite</a></p>';
  }
?>
 
Zuletzt bearbeitet:
Mein Vorschlag:
PHP:
<?php

	$query = '
		SELECT
		        COUNT(*)
		  FROM
		        `users`
		  WHERE
		        `user` = "'.mysql_real_escape_string($_POST['username']).'"
		';
	if( mysql_result(mysql_query($query), 0) > 0 ) {
		echo 'Der Username ist bereits vergeben.';
		exit;
	}

	$query = '
		INSERT INTO
		        `users`
		  SET
		        `user` = "'.mysql_real_escape_string($_POST['username']).'",
		        `pass` = "'.md5($_POST['password']).'"
		';
	$result = mysql_query($query)
		or die(mysql_error());
	echo '<p>Der neue Benutzer wurde erfolgreich angelegt!</p><p><a href="index.php?page=login">Zur Startseite</a></p>';

?>
Vielleicht solltest du auch einen LIKE-Vergleich in Erwägung ziehen.
 
PHP:
$query     = mysql_query('SELECT COUNT(`user`) AS `numUser` FROM `users` WHERE `user` = "'.mysql_real_escape_string($_POST['username']).'"');

Jetzt?

Edit: Da war wohl jemand schneller ;)
 
Zurück