yeahz Posted February 9, 2009 Report Posted February 9, 2009 Vai ir iespējams citādāks noformējums šim kodam, lai var izvadīt visas kļūdas kuras formā ir, nevis tiek līdz pirmajai un izvada to vienu kļūdu. Kods: http://paste.php.lv/5fa2054e6387f6745b4587...3de080?lang=php
bubu Posted February 9, 2009 Report Posted February 9, 2009 Strukturē to kodu šādi: $errors = array(); if (pārbaude nr.1) { $errors[] = "Kļūda nr.1"; } if (pārbaude nr.2) { $errors[] = "Kļūda nr.2"; } ... if (count($errors) > 0) { echo "Ir kļūda(-s)" . implode("<br/>", $errors); }
mounkuls Posted February 9, 2009 Report Posted February 9, 2009 (edited) Vai arī bez masīva $errors = ''; if (pārbaude nr.1) { $errors = $errors.'Kļūda nr.1<br/>'; } if (pārbaude nr.2) { $errors = $errors .'Kļūda nr.2<br/>'; } ... if (!empty($errors)) { echo 'Ir kļūda(-s):' .$errors; } Faktiski tas pats, bet, kad man bija grūtības ar masīviem, dariju tā:) EDIT: Mazliet laikam aplam bija pirmīt:) Edited February 9, 2009 by mounkuls
yeahz Posted February 9, 2009 Author Report Posted February 9, 2009 Es kaut ko daru nepareizi, man nekas neizvadās, pat ja arī visi lauki ir tukši. http://paste.php.lv/139eb9986705f95d38462c...b15018?lang=php
anonīms Posted February 9, 2009 Report Posted February 9, 2009 25 rinda. if (count($error) > 0) gadījumā nevajag?
yeahz Posted February 9, 2009 Author Report Posted February 9, 2009 Nākošā kļūda, kas tad te ir nepareizi? if (count($error) > 1) { echo "Notika sekojošas kļūdas:" . implode("<br />", $error); } elseif (count($error) = 1) { echo "Notika sekojoša kļūda:" . implode("<br />", $error); } else { //insert in da db }
bubu Posted February 9, 2009 Report Posted February 9, 2009 Salīdzināšana uz vienādību notiek ar == operatoru, nevis ar piešķiršanas = operatoru.
Delfins Posted February 10, 2009 Report Posted February 10, 2009 īsti jēgu dalīt uz kļūda/kļūdas neredzu :) PS: $p = count($error)>1?'s':''; echo "Notika sekojoša{$p} kļūda{$p}:" . implode("<br />", $error);
yeahz Posted February 10, 2009 Author Report Posted February 10, 2009 Paldies Delfīn, kaut tādu mēģināju uzlikt bet nezināju kā, tāpēc izdarīju tā, tagad paņēmu kodu no tevis. Vēl problēma (laikam nu jau iet offtopic tēmas skatījumā). Tātad ja lietotājs neeksistē, tad epasta pārbaudes daļa netiek ņemta vērā, ja lietotājs jau eksistē tad izvelkas abi šie kodi: $query = mysql_query("SELECT username FROM users WHERE username='$_POST[lietotajvards]'"); if ( mysql_num_rows($query) >= 1 ) { $error[] = "Šāds lietotājvārds jau pastāv!"; } $query2 = mysql_query("SELECT email FROM users WHERE email='$_POST[epasts]'"); if (mysql_num_rows($query2) >= 1) { $error[] = "Jau pastāv lietotājs ar šādu e-pasta adresi!"; } Vienvārdsakot epasta daļa iedarbojas tikai tad kad lietotājvārds jau aizņemts.
yeahz Posted February 10, 2009 Author Report Posted February 10, 2009 http://paste.php.lv/91834a685d3bd513c8fc4d...e5f276?lang=php
Val Posted February 10, 2009 Report Posted February 10, 2009 if (count($error) > 1) nozīmē kļūdu skaitu: vismaz divas un uz augšu. Kur šādā gadījumā jēga dalīt kļūdu skaita izvadīšanu vienskaitlī, daudzskaitlī. lietotājvārda garuma pārbaude arī kautkā jocīgi. vakarā vairs nevaru saprast vai pareizi vai nav :D if (strlen($_POST["lietotajvards"]) < $lietotajvarda_min_garums || strlen($_POST["lietotajvards"]) > $lietotajvarda_max_garums) { $error[] = "Lietotājvārdam jābūt vismaz $lietotajvarda_min_garums simbolu garam, vai ne garākam kā $lietotajvarda_max_garums simboli."; } $ok nav defaultās vērtības. koda augšā ieliec error_reporting(E_ALL); un skaties pats. lietotājvārda un epasts mainīgie pārbaudes querijos nav eskeipoti. utt. :)
Turecky Posted June 16, 2009 Report Posted June 16, 2009 Ja pareizi sapratu, pēc koda izskatās, ja gadījumā $_GET["s"] nav vispār, tad pa taisno aizlido uz ELSE, jo tiek garām abiem IF un tad var iebarot jebkuru lietotāju un paroli. Nedomāju, ka to S parametru vispār vaig. Šobrīd slinkums rakstīt pašu kodu, bet es būtu darījis nedaudz savādāk. Ja nu jautājums joprojām aktuāls uzraksti, tad piedāvāšu savu variantu, ja ir interese.
Recommended Posts