1

Тема: Потрібна перевірка форми

У мене є ось така форма

<form id="sign_up_form"   method="post" >
<table cellpadding="0" cellspacing="0">
    <tr>
        <td>
        <input type="text" name="firstname" placeholder="Ім'я" required  <?php if($name_true == true){echo("readonly value='".$_POST['firstname']."'");}?>>
        <input type="text" name="lastname" placeholder="Прізвище" required  <?php if($name_true == true){echo("readonly value='".$_POST['lastname']."'");}?>><br>
        <input type="email" name="email" placeholder="E-mail" required>
        <input type="text" name="login" placeholder="Логін" required><br>
        <input type="password" name="password" placeholder="Пароль" required>
        <input type="password" name="re-password" placeholder="Ще раз пароль" required>
        </td>
        <td>
        Виберіть стать:
        <select name="sex">        
        <option value="man">Чоловік</option>
        <option value="woman">Жінка</option>
        </select><br>
        
        <input type="checkbox" name="confirm" value="ok" required> Я приймаю <a href="/rules.php" TARGET="_blank">Правила користування сайтом</a>!
       
        </td>
         <tr></tr>
    </tr>
    <tr> 
        <td> 
           <input type="tel" name="phone" placeholder="Мобільний номер" required>
        <input type="date" name="birthday" placeholder="Дата народження"  required>
        <input type="text" name="country" placeholder="Країна" required>
        <input type="text" name="region" placeholder="Область" required>
        <input type="text" name="city" placeholder="Населений пункт" required>
        <input type="text" name="street" placeholder="Вул., буд., кв." required>
        
        </td>        
        <th id='message'></th>
        
    </tr>
    
    <center><input type="submit" name="submit_sign" value="Зареєструватися"></center>
        



<table>

І є файл в якому проходить сама перевірка

<?php    
include("/db.php");
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$login = $_POST['login'];
$email = $_POST['email'];
$password = $_POST['password'];
$re_password = $_POST['re_password'];
    $result = mysql_query("select * from users");
    if(isset($_POST['login'])){
    $rows = mysql_num_rows($result);
    $message = "";
    
    $num_errors = 0;
    
    for($i = 0;$i < $rows; $i++){
        $row = mysql_fetch_row($result);
        
        if($email == $row[5]){
            $num_errors++;
            $message .= $num_errors.". Такий e-mail вже використовується!";
        }
        if($login == $row[3]){
            if($num_errors > 0){
                $message .= "<br>";
            }
            ++$num_errors;        
            $message .= $num_errors.". Такий login вже використовується!";
        }
    }
    if($pass != $re_pass){
        if($num_errors > 0){
            $message .= "<br>";
        }
        ++$num_errors;        
        $message .= $num_errors.". Паролі не співпадають!";
    }
    echo $message;    
    }

Як за допомогою ajax перевірити тих 4 поля, щоб появився блок #message! І в ньому було повідомлення про помилку! Поможіть будь ласка, а то я вже з цією проблемою 5 день вожусь!

Програміст - це не професія.
Це образ мислення.

2 Востаннє редагувалося 221VOLT (15.08.2016 00:17:01)

Re: Потрібна перевірка форми

одну помилку знайдено ---
використовується mysql_* , 2016 надворі - використовуйте mysqli_*

-----

ще одну помилку знайдено

<input type="password" name="password" placeholder="Пароль" required>
<input type="password" name="re-password" placeholder="Ще раз пароль" required>

2016 надворі, навіщо заставляти користувача двічі одне і те ж вводити?
залишіть одне поле + потрібно додати декілька строк на js щоб получилась функція "показати-приховати" пароль

-----

щось я ніяк не можу у вашому коді знайти - де, куди і яким чином ви робите ajax запит...
можливо вся справа у цьому?

https://blog.clever-games.win/
Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.
///// у творчій відпустці. не турбувати /////
Подякували: Monolith1

3

Re: Потрібна перевірка форми

221VOLT написав:

одну помилку знайдено ---
використовується mysql_* , 2016 надворі - використовуйте mysqli_*

-----

ще одну помилку знайдено

<input type="password" name="password" placeholder="Пароль" required>
<input type="password" name="re-password" placeholder="Ще раз пароль" required>

2016 надворі, навіщо заставляти користувача двічі одне і те ж вводити?
залишіть одне поле + потрібно додати декілька строк на js щоб получилась функція "показати-приховати" пароль

-----


щось я ніяк не можу у вашому коді знайти - де, куди і яким чином ви робите ajax запит...
можливо вся справа у цьому?

Там ajax нема, суть в тому шо я не знаю як його правильно написати

Програміст - це не професія.
Це образ мислення.

4 Востаннє редагувалося Master_Sergius (15.08.2016 12:19:50)

Re: Потрібна перевірка форми

olekca01 написав:

Там ajax нема, суть в тому шо я не знаю як його правильно написати

Суть в тому, що й важко зрозуміти те, що ви хочете зробити. Якщо перевірка html-форми - це зазвичай робиться на стороні клієнта до відправки на сервер. У цьому може допомогти JQuery Validator (гугл іт). Якщо ж помилки якісь виникають на стороні сервера і це потрібно відобразити на сторінці - ну то теж які проблеми? Віддаємо response з полем errors і читаємо його (або будь-яку іншу назву поля, errors - це не якесь службове слово).

Мій блог про ОС сімейства *nix - http://nixtravelling.blogspot.com/
Подякували: 221VOLT1

5 Востаннє редагувалося Monolith (15.08.2016 13:51:31)

Re: Потрібна перевірка форми

Як варіант можна зробити через сесії. Тобто зберегти усі дані форми у сесії і якщо є помилки то знову відправити на цей файл, де у кожному полю форми прописати вивід з сесії. Тобто якщо користувач просто буде перезавантажувати сторінку, всі дані які він вже ввів залишаться. Вже корисно. Тобто має бути така логіка:

Якщо існують дані - перевірити
    Якщо правильно - зробити якусь дію, наприклад, записати у БД та написати користувачу "Все гуд!"
Якщо щось не так - відправляємо на цю ж сторінку але заповнюючи змінну з помилками
    
Показуємо дані зі змінної з помилками(якщо помилок немає - зміна пуста)
Сама форма, де значеннями атрибуту "value" є щось типу "<?=$_SESSION['input']?>"

Так би я особисто зробив. Не вважаю, що моє рішення найкраще і не факт, що не будуть якісь проблеми, тому просто виношу на суд як варіант.

Також у книзі Робін Ніксон - "Створюємо динамічні веб-сайти за допомогою PHP, MySQL i JavaScript" у розділі 18 було детально написано про використання Ajax-технології.

Подякували: 221VOLT, leofun012

6 Востаннє редагувалося 221VOLT (15.08.2016 19:32:43)

Re: Потрібна перевірка форми

якщо pure js - якось так (куски коду, теги скріпт+ дужки попарно самі доставите) :

function getXmlHttp(){var xmlhttp;try{xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}catch(E){xmlhttp = false;}}if(!xmlhttp && typeof XMLHttpRequest!='undefined'){xmlhttp = new XMLHttpRequest();}return xmlhttp;}

function send_post_ajax(id){
var xmlhttp = getXmlHttp();
xmlhttp.open('POST', '/ajax/.../', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var sendinfo="id="+id;  
xmlhttp.send(sendinfo);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
if(xmlhttp.responseText!=''){
var r=xmlhttp.responseText;
r=JSON.parse(r);
if(r.error==0){
...

//close func
}


function send_get_ajax(){
var xmlhttp = getXmlHttp();
xmlhttp.open('GET', '/ajax/.../', true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send(null);
xmlhttp.onreadystatechange = function(){
if(xmlhttp.readyState == 4){
if(xmlhttp.status == 200){
if(xmlhttp.responseText!=''){
var r=xmlhttp.responseText;
r=JSON.parse(r);
if(r.error==0){
...

//close func
}

якщо вас не цікавить pure js -- ви можете нагуглити приклади з використанням говнокоду jQuery самостійно

-----------

як викликати функції js з html --

або onclick="..." прямо в html,
або addEventListener ---
детальніше :
http://learn.javascript.ru/introduction-browser-events
http://learn.javascript.ru/events-and-interfaces
http://learn.javascript.ru/

успіхів !

https://blog.clever-games.win/
Це ще не кінець. Це навіть не початок кінця. Але, можливо, це кінець початку.
Зростання мудрості можна точно вимірювати ступенем зменшення злоби.
///// у творчій відпустці. не турбувати /////
Подякували: Monolith, leofun012