Temos pavadinimas: WordPress, Shopify ir PHPFusion programuotojų bendruomenė :: Php stabdymas

Parašė IPaulius· 2011 Geg. 31 16:05:27
#1

Sveiki.

Turiu kodą:
if($fname == '') {
$errmsg_arr[] = 'First name missing';
$errflag = true;
}

Čia registracijos formoje. Ir nieko neįvedus į registracijos laukelius išmeta 10 erorų. Negražu ir neestetiška. Ką prirašyti ,kad mestų tik vieną errorą?
Ta prasme ,kad po šio kodo ,kur parašiau, nebetikrintu kitų kodų.

Redagavo IPaulius· 2011 Geg. 31 16:05:09

Parašė Mantas_· 2011 Geg. 31 16:05:46
#2

O tu nepagalvoji, kad neįvedi 10 reikalingų duomenų, ir meta 10 errorų...

Parašė IPaulius· 2011 Geg. 31 16:05:13
#3

O tu nepagalvojai ,kad ne to aš klausiu?
Nesvarbu ,kad neįvedu 10 duomenų. man reikia ,kad tik vieną erorą mestų pvz: First name missing. Jei name būtų įvestas tuomet kodas toliau tikrintų kol vėl rastų klaidą pvz: passwords do not match. Ir rodytų tik vieną klaidą ,o ne visas 10 nesvarbu ,kad 10 laukelių tušti.
Na pavizdys lengviausias koks galėtų būti. Facebook.com registraciją išbandykite. Ten rodo tik vieną klaidą ,o ne 10 ,kad ir visi laukai tušti.

Redagavo IPaulius· 2011 Geg. 31 16:05:01

Parašė Mantas_· 2011 Geg. 31 17:05:24
#4

Tai ir naikink funkciją kuri tikrintu fname.. Tas tavo kodas nieko čia nepadės.

Parašė IPaulius· 2011 Geg. 31 18:05:28
#5

Tai galiu ištrint visą tinklapį ir nebeliks problemos... Kas žinot rašykit. Jaučiu ,kad array keist reik tik tiksliai nežinau į kurią. Bandžiau į array_slice() ,bet nieko nesigavo ir be to nežinau kaip pritaikyt. Yra $errmsg_arr = array(); ,kuris surenka visus erorus ir padaro iš jų array.

Parašė Pakartoti slaptažodį· 2011 Geg. 31 20:05:34
#6


if($fname == '') {
$errmsg_arr[] = 'First name missing';
$errflag = true;
return false;
}

Daugiau idėjų neturiu. :)

Redagavo Pakartoti slaptažodį· 2011 Geg. 31 20:05:43

Parašė IPaulius· 2011 Geg. 31 20:05:05
#7

Gal su array sakau ką daryt?

Parašė bruzgis· 2011 Geg. 31 20:05:14
#8

print $errmsg_arr[0];

Ka gausi?

Tuomet kitas variantas

$i=0;

foreach($errmsg_arr AS $err) {
$i++;
print $err;
if($i==1) break;
}

Taip galesi nurodyt kiek erroru rodyt

Parašė IPaulius· 2011 Geg. 31 20:05:06
#9

Naujos idėjos gerai. Tik klausimas iškilo kur dėt print $errmsg_arr[0];.

Parašė IPaulius· 2011 Geg. 31 21:05:21
#10

Parašysiu jums visus kodus tada žinosit aiškiau ,nes dabar jūs nežinot mano kodo ,o aš nežinau kur dėti jūsų kodą.

Aj dar čia šiaip sugalvojau. Logikos yra ,bet turbūt blogai.
if (count($msg) > 1) break;
Registracijos formos kodas:

<?php
if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
echo '<ul class="err">';
foreach($_SESSION['ERRMSG_ARR'] as $msg) {
echo "$msg";
}
echo '</ul>';
unset($_SESSION['ERRMSG_ARR']);
}
?>


Paspaudus submit nukelia į failą ,kuriame yra šis kodas (atrinkau tai kas gali būti susiję):


$errmsg_arr = array();

$errflag = false;


if($fname == '') {
$errmsg_arr[] = 'Iveskite savo varda';
$errflag = true;

}
if(strlen($fname) < 3) {
$errmsg_arr[] = 'Vardas per trumpas';
$errflag = true;
}
if($lname == '') {
$errmsg_arr[] = 'Iveskite savo pavarde';
$errflag = true;
}
if($login == '') {
$errmsg_arr[] = 'Iveskite slapyvardi';
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = 'Iveskite slaptazodi';
$errflag = true;
}

if(strlen($password) < 3) {
$errmsg_arr[] = 'Slaptazodis turi buti ilgesnis nei 3 simboliai';
$errflag = true;
}
if( strcmp($password, $cpassword) != 0 ) {
$errmsg_arr[] = 'Slaptazodziai nesutampa.';
$errflag = true;
}

Redagavo IPaulius· 2011 Geg. 31 21:05:18