Проверка за попълнени полета.

K0ceTo

Registered
А бе наясно съм че става със isset(), но тука в този скрипт нещо не се получава.

Код:
<?php
include('config.php');
$ime = $_POST['ime'];
$familia = $_POST['familia'];
$potr_ime = $_POST['potr_ime'];
$parola = $_POST['parola'];
$email = $_POST['email'];
$sait = $_POST['sait'];
$grad = $_POST['grad'];
if(isset($ime, $familia, $potr_ime, $parola ))
{
mysql_connect($host, $user, $pass) or die("Can not connect to database");
$zapis = mysql_query("INSERT INTO register.users (ime, familia, potr_ime, parola, email, sait, grad)
VALUES ('$ime', '$familia', '$potr_ime', '$parola', '$email', '$sait', '$grad');");
echo ("Регистрацията премина успешно");
}
else{
echo ("Не сте попълнили всички полета"); }
?>
,

Трябва ако не си попълнил задължителните полета, да изпише че не си ги попълнил, но нбе само изписва поздравително съобщение за успешна регистрация, ами и наистина записва потребителя в базата данни :idea:
 
Код:
<?php 
include('config.php'); 
$ime = $_POST['ime']; 
$familia = $_POST['familia']; 
$potr_ime = $_POST['potr_ime']; 
$parola = $_POST['parola']; 
$email = $_POST['email']; 
$sait = $_POST['sait']; 
$grad = $_POST['grad']; 
if($ime!="" AND $familia!="" AND $potr_ime!="" AND $parola!="" AND $email!="" AND $site!="" AND $grad!="") 
{ 
mysql_connect($host, $user, $pass) or die("Can not connect to database"); 
$zapis = mysql_query("INSERT INTO register.users (ime, familia, potr_ime, parola, email, sait, grad) 
VALUES ('$ime', '$familia', '$potr_ime', '$parola', '$email', '$sait', '$grad');"); 
echo ("Регистрацията премина успешно"); 
} 
else{ 
echo ("Не сте попълнили всички полета"); } 
?>
 
Ехх, мойто глупави грешки, са си глупави грешки.Съжалявам че ви занимавам с тях, ама въобще не ми бият на очи тези.

Точка.
 
моя грешка ето как да е. така ако не е попълнено дори едно ще даде че не е, иначе нямаше да даде.

Код:
<?php 
include('config.php'); 
$ime = $_POST['ime']; 
$familia = $_POST['familia']; 
$potr_ime = $_POST['potr_ime']; 
$parola = $_POST['parola']; 
$email = $_POST['email']; 
$sait = $_POST['sait']; 
$grad = $_POST['grad']; 
if($ime!="" OR $familia!="" OR $potr_ime!="" OR $parola!="" OR $email!="" OR $site!="" OR $grad!="") 
{ 
mysql_connect($host, $user, $pass) or die("Can not connect to database"); 
$zapis = mysql_query("INSERT INTO register.users (ime, familia, potr_ime, parola, email, sait, grad) 
VALUES ('$ime', '$familia', '$potr_ime', '$parola', '$email', '$sait', '$grad');"); 
echo ("Регистрацията премина успешно"); 
} 
else{ 
echo ("Не сте попълнили всички полета"); } 
?>
 
Втория скрипт не показва грешка ако си попълнил само едно от полетата които са задължителни, а горния задължително искаше всичките да са.Тоест горния ми върши работа втория не :lol:
 
А може и така:

<?php
include('config.php');
$ime = $_POST['ime'];
$familia = $_POST['familia'];
$potr_ime = $_POST['potr_ime'];
$parola = $_POST['parola'];
$email = $_POST['email'];
$sait = $_POST['sait'];
$grad = $_POST['grad'];

$alert=0;

$al1="form";
$al2="form";
$al3="form";
$al4="form";
$al5="form";
$al6="form";
$al7="form";


if(empty($ime))
{
$al1="red";
$alert++;
}

if(empty($familia))
{
$al2="red";
$alert++;
}

if(empty($potr_ime))
{
$al3="red";
$alert++;
}

if(empty($parola))
{
$al4="red";
$alert++;
}

if(empty($email))
{
$al5="red";
$alert++;
}

if(empty($sait))
{
$al6="red";
$alert++;
}

if(empty($grad))
{
$al7="red";
$alert++;
}


if($alert==0)
{
mysql_connect($host, $user, $pass) or die("Can not connect to database");
$zapis = mysql_query("INSERT INTO register.users (ime, familia, potr_ime, parola, email, sait, grad)
VALUES ('$ime', '$familia', '$potr_ime', '$parola', '$email', '$sait', '$grad');");
echo ("Регистрацията премина успешно");
}
else{
echo ("Непопълнено поле! Моля обърнете внимание на редовете оцветени в червено!");
include("forma.php");
}
?>


Като тук бързам да уточня, че тази конструкция е доста разлята, но тя има за цел не само елементарна валидация, но и да оцветява празните полета като в "големите" сайтове. За нея е нужно да си отделиш формата в друг файл и да я инклудваш (за да може променливите: ал1, ал2 и т.н. да получават стойност). Цветовете можеш да зададеш в стилов шаблон (два класа: форм, с какъвто цвят ти е текста на формата и примерно ред-с червен цвят), а в самата форма ще стане заместването:

<TD CLASS="<? echo $al1; ?>">Име:</TD>

По принцип проверката за празно поле става с функцията empty();
isset(); е само дали дадена променлива е изпратена или не. Променливата може и да е изпратена, но да няма стойност (т.е. стойността й е NULL, 0, нула).
За да се подсигуриш срещу интервали пред и зад низа или само интервал, можеш да използваш функцията trim();
$ime = trim($_POST['ime']);

Дано не съм те объркал...

Успех!
 
Хмм, чудех се как да стане това оцветяване, мерси, само че не го оцветява, но аз ще го направя с css, сорка, обаче вече нямам точка, получих отговор на темата преди това и я дадох :oops:
 

Back
Горе