There is a registration form, it generally works, only if the user corrects his mistake and makes a new one, where he corrected the error, it will appear again, well, and a new one, respectively. The problem is that he fixed the old one, I think the problem in ajax in this line

$("#error").text($("#error").text() + " + " + data[i]); 

I think the array should be somehow reset with each click, how to do it, I do not know, help, please.

enter image description here

 <?php header('Content-Type: application/json; charset=utf-8'); mysql_connect("localhost", "", ""); mysql_select_db(""); if(!empty($_POST['button'])) { $err = array(); # проверям логин if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login'])) { $err[] = "Логин может состоять только из букв английского алфавита и цифр"; } if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30) { $err[] = "Логин должен быть не меньше 3-х символов и не больше 30"; } if(strlen($_POST['password']) < 3 or strlen($_POST['password']) > 30) { $err[] = "пароль должен быть не меньше 3-х символов и не больше 30"; } if ($_POST['password'] !== $_POST['rpassword']) { $err[] = "пароли не совпадают"; } if(!isset($_POST['email'])) { $err[] = "емаил не передан"; } if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $err[] = "Заполните коректно поле емаил"; } # проверяем, не сущестует ли пользователя с таким именем $query = mysql_query("SELECT COUNT(id) FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."'"); if(mysql_result($query, 0) > 0) { $err[] = "Пользователь с таким логином уже существует в базе данных"; } # Если нет ошибок, то добавляем в БД нового пользователя if(count($err) == 0) { $login = ($_POST['login']); $email = (trim($_POST['email'])); $password = md5(md5(trim($_POST['password']))); $sql = mysql_query("INSERT INTO `users` (`login`, `e-mail`, `paroli`) VALUES ('$login', '$email', '$password')"); if($sql == true) { echo 0; } elseif ($sql == false) { echo 1; } else { echo"ничего не пойму"; } } else if (count($err) > 0){ $err = array(); # проверям логин if(!preg_match("/^[a-zA-Z0-9]+$/",$_POST['login'])) { $err[] = "Логин может состоять только из букв английского алфавита и цифр"; } if(strlen($_POST['login']) < 3 or strlen($_POST['login']) > 30) { $err[] = "Логин должен быть не меньше 3-х символов и не больше 30"; } if(strlen($_POST['password']) < 3 or strlen($_POST['password']) > 30) { $err[] = "пароль должен быть не меньше 3-х символов и не больше 30"; } if ($_POST['password'] !== $_POST['rpassword']) { $err[] = "пароли не совпадают"; } if(!isset($_POST['email'])) { $err[] = "емаил не передан"; } if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) { $err[] = "Заполните коректно поле емаил"; } # проверяем, не сущестует ли пользователя с таким именем $query = mysql_query("SELECT COUNT(id) FROM users WHERE login='".mysql_real_escape_string($_POST['login'])."'"); if(mysql_result($query, 0) > 0) { $err[] = "Пользователь с таким логином уже существует в базе данных"; } echo json_encode($err); } } ?> 

 <!DOCTYPE html> <html> <head> <title>Регистрация</title> <meta http-equiv="Content-Style-Type" content="text/css" charset="utf-8"> <meta name="keywords" content="Ключевые слова для поисковиков"> <meta name="description" content="Описание сайта"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"> <link rel="stylesheet" type="text/css" href="1/my_room/css/style.css" /> <link rel="stylesheet" type="text/css" href="style.css" /> <link rel="stylesheet" type="text/css" href="1/my_room/css/bootstrap.min.css" /> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> <script src="1/my_room/js/bootstrap.min.js"></script> <!--<style> .error, .success{ display: block; position: absolute; top:0; left:0; padding: 7px 5px 7px 5px; border-bottom-right-radius: 10px; display: none; } .error{ background: red; border:1px solid #b23c3c; } .success{ background: #black; border: 1px solid #326db5; } </style>--> </head> <body> <script> $(document).ready(function() { $("#clickButtonForm").bind("click", function () { $.ajax ({ url: "ajax.php", type: "POST", data: {login: $("#login").val(), password: $("#password").val(), rpassword: $("#rpassword").val(), email: $("#email").val(), button: $("#clickButtonForm").val()}, beforeSend: function (){ $("#information").text ("Expectaton data...") }, success: function (data) { //debugger; //var respons = JSON.parse(data); // в случае, когда пришло success. Отработало без ошибок if (data === 0) { $("#error").text("data").removeClass("error").addClass("success").show().delay(8000).fadeOut(3000); // $("#error").text("You success registration").removeClass("error").addClass("success").show().delay(3000).fadeOut(3000); // в случа ошибок } else if(data == 1){ $("#error").text("Occured error speak administraor").removeClass("success").addClass("error").show().delay(8000).fadeOut(3000); } else { for (var i=0; i<data.length; i++) { $("#error").text($("#error").text() + " + " + data[i]); } //$("#error").removeClass("success").addClass("error").show().delay(8000).fadeOut(3000); } } }); }); }); </script> <div class="container"> <div class="row"> <div class="col-xs-12 col-sm-12 col-lg-4"> <div class="panel"> <form role="form" class="formForMe" id="register_form" method="post"> <div class="input-group"> <span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span> <input type="text" class="input form-control" id="login" placeholder="Введите Ваш будующий логин для входа" required autofocus /> </div> <div class="input-group"> <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span> <input type="password" id="password" class="input form-control" placeholder="Введите Ваш пароль для входа" required /> </div> <div class="input-group"> <span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span> <input type="password" name="rpassword" id="rpassword" class="form-control" placeholder="Повторите пароль для входа" required /> </div> <div class="input-group"> <span class="input-group-addon"><span class="add-on">@</span></span> <input type="text" class="input form-control" id="email" placeholder="Ваш существующий email" required autofocus /> </div> <div class="row"> <div class="col-xs-6 col-sm-6 col-md-6 col-lg-12"> </div> <div class="col-xs-6 col-sm-6 col-md-6 col-lg-12"> <button type="button" value="1" class="clickButtonForm btn btn-labeled btn-success" id="clickButtonForm"> <span class="btn-label"><i class="glyphicon glyphicon-ok"></i></span>Регистрация</button> <button onclick="location.href='../index.html'" type="submit" class="btn btn-labeled btn-danger"> <span class="btn-label"><i class="glyphicon glyphicon-remove"></i></span>Назад</button> </div> </div> <p> <a href="#">Забыли свой пароль?</a></p> </form> </div> </div> </div> </div> <span id="information" class=""></span> <b id="error" class="">При регистрации произошли следующие ошибки:</b><br> </body> </html> 

  • 2
    Until there were answers, you can spend a little time and improve the appearance of the question. Code format, for example. Capital letters and periods in sentences will help readers understand your text and not break their head. - Nick Volynkin

1 answer 1

Try to make a minimal, self-sufficient and reproducible example . And then there are such footwoman code that nobody wants to disassemble. Too much extra and unnecessary code. Everything is correct, remove the old mistake and fill it again. For example, you can do it like this:

 /*.......*/ else { $("#error").text("При регистрации произошли следующие ошибки:"); for (var i=0; i<data.length; i++) { $("#error").text($("#error").text() + " + " + data[i]); } } /*.......*/ 
  • @Koly I prefer not to go beyond this forum. And since you understood everything correctly, each time you add a new $ ("# error"). Text ( $ ("# error"). Text () + "+" + data [i] ) to the current text; in the loop. I simply reset the element to the initial state $("#error").text("При регистрации произошли следующие ошибки:"); before adding errors to it. - Alex Krass