Ich programmiere gerade an einem Registrierungsformular.
Dabei möchte ich überprüfen, ob ein Benutzername oder eine E-mail schon vorhanden ist.
Mein Code dafür:
// mail checken
$sqlmailcheck = "COUNT(*) FROM user WHERE e-mail='$mail'";
$sqlmailcheckquery = mysql_query($sqlusercheck);
$mailcheck2 = mysql_fetch_row($sqmailcheckquery);
if ($mail != $mailcheck || strlen($mail) > 100 || strlen($mail) < 8 || $mailcheck2 == 1){
$inputerror[3] = "Ihre Email-Adresse entspricht nicht dem gewünschten Format, oder wird schon verwendet !<br />(8-100 Zeichen, 'a-z', 'A-z', '_', '-', '.', '0-9', '@')";
}
else
$inputerror[3] = "";
Funktioniert so aber nicht. Wie muss ich die Datenbankabfrage machen?
Tabellenname: user.
Spaltenname: user, e-mail
//username checken
if (isset($username) && strlen($username) >= 3){
$sqlusercheck = „SELECT COUNT(*) FROM user WHERE user=’“.$username."’";
$sqlusercheckquery = mysql_query($sqlusercheck);
$usercheck2 = mysql_fetch_row($sqlusercheckquery);
if (strlen($username) > 35){
if ($usercheck2[0] != 0){
$inputerror[2] = „Username schon vergeben. Sorry!“;
}
else{
$inputerror[2] = „Ihr Username ist länger als 35 Zeichen !“;
}
}
else{
$username = htmlspecialchars($username);
$inputerror[2] = „“;
}
}
else
$inputerror[2] = „Ihr Username ist zu kurz! (Mindestens 3 Zeichen)“;
// mail checken
if (strlen($mail) >= {
$sqlmailcheck = „SELECT COUNT(*) FROM user WHERE e-mail=’“.$mail."’";
$sqlmailcheckquery = mysql_query($sqlmailcheck);
$mailcheck2 = mysql_fetch_row($sqlmailcheckquery);
if ($mail != $mailcheck || strlen($mail) > 100 || strlen($mail) < 8 ||
!ereg("^(([a-zA-Z0-9]|[.-])+)@(([a-zA-Z0-9]|[.-])+).([a-z0-9]{2,4})$", $mail) || $mailcheck2[0] != 0){
// habe auch schon $,ailcheck2[0] != „0“ probiert!
$inputerror[3] = „Ihre Email-Adresse entspricht nicht dem gewünschten Format, oder wird schon verwendet ! (8-100 Zeichen, ‚a-z‘, ‚A-z‘, ‚_‘, ‚-‘, ‚.‘, ‚0-9‘, ‚@‘)“;
}
else
$inputerror[3] = „“;
}
else
$inputerror[3] = „Ihre Email-Adresse ist zu kurz! (Mindesten 8 Zeichen)“;
das kann nicht gehen weil der mysql_query hier mehr als einen wert zurück gibt deswegen musst du mit mysql_fetch_array() oder mysql_fetch_assoc() arbeiten
ich habe mit einer menge bastelei das problem jetzt gelöst.
Schritt:
Über SQL-Abfragen im PHPMyAdmin habe ich den Fehler in der SQL-Abfrage gesucht.
Die Abfrage war:
und hätte sein müssen:
Dann war der Error bei mysql_fetch_row() weg, es lag an dem Bindestrich in e-mail=’…’ .
Als nächstes habe ich mir eine Datei erstellt, mitr der ich auf die Suche nach der Auslesbarkeit der Abfrage gegangen bin:
<?php
echo "<html><body>";
include "mysql_connect.inc.php";
$sql = "SELECT COUNT(*) FROM `user` WHERE `e-mail`='<mail>'";
if (!$query = mysql_query($sql))
echo mysql_error();
$dsatz = mysql_fetch_assoc($query);
print_r($dsatz);
echo "<br>....".$dsatz[COUNT(*)];
// den Arraykey in der vorherigen Zeile hab ich immer wieder geändert...
echo "</body></html>";
?>
Durch das Sternchen in $dsatz[COUNT(*)] Funktioniete es so aber auch nicht.
Die Lösung brachte dann:
$sql = "SELECT COUNT(*) AS `number` FROM `user` WHERE `e-mail`='<mail>'";
/// restlicher code
echo "<br>......".$dsatz[number];