Formos post code reikšmė nenuskaitoma iš $_POST masyvo, kai isset($_POST['submitted']) yra TRUE. 82 eilutėj (f-joj str_replace()) pradedamas naudoti variablas $postcode, kuriam nepriskirta jokia reikšmė. Darius wrote: > Prisegu register.php failą. > > > "Darius" <darzi@takas.lt> wrote in message > news:h1cvop$de7$1@trimpas.omnitel.net... >> fliks, gal gali padėt išspręst šitą bėdą? >> >> Šiaip man ir reikia, kad tikrintu UK post code formatą. Dėl saugojimą >> post code DB, tai kopinant padariau klaidą, nenukopinau gerai. Yra va >> taip, bet neįrašo duomenų: >> $query = "INSERT INTO users (email, pass, first_name, last_name, city, >> town, post_code, mob_number, active, registration_date) VALUES ('$e', >> SHA('$p'), '$fn', '$ln', '$ct', '$tw', '$postcode', '$mob_number', >> '$a', NOW() )"; >> >> Darant registraciją išmeta "Undefined variable: postcode ". Kur čia >> klaida? Kodėl meta,kad neapibrėžtas kintamasis? >> Iš anksto dėkoju. >> >> >> "fliks" <pasto@nera.dd> wrote in message >> news:h1ag7o$f0s$1@trimpas.omnitel.net... >>> Šitas checkPostCode() tikrina tik UK post code formatą. >>> Ar ne geriau padaryti kokį nors generic formato tikrinimą, kad leistų >>> tik raides ir skaičius? >>> Dar priklauso, kiek kritiška yra turėti tikslų post code. Jei tai yra >>> labai svarbu, teks ieškoti visų reikiamų šalių formatus ir pagal juos >>> rašytis tikrinimą. Jei post code surinkimas yra tik kaip formalumas, >>> kaip ir minėjau, galima daryti tik generic tikrinimą. >>> >>> Kas liečia post code saugojimą į db, žemiau pateiktoj INSERT >>> užklausoj trūksta reikšmės post_code stulpeliui (tarp '$tw' ir '$a'). >>> >>> >>> Darius wrote: >>>> Gal galit patarti kaip padaryti. Radau scriptą, kuris tikrina pašto >>>> kodą: >>>> >>>> function checkPostcode (&$toCheck) { >>>> $alpha1 = "[abcdefghijklmnoprstuwyz]"; >>>> $alpha2 = "[abcdefghklmnopqrstuvwxy]"; >>>> $alpha3 = "[abcdefghjkstuw]"; >>>> $alpha4 = "[abehmnprvwxy]"; >>>> $alpha5 = "[abdefghjlnpqrstuwxyz]"; >>>> >>>> $pcexp[0] = >>>> '^('.$alpha1.'{1}'.$alpha2.'{0,1}[0-9]{1,2})([0-9]{1}'.$alpha5.'{2})$'; >>>> $pcexp[1] = >>>> '^('.$alpha1.'{1}[0-9]{1}'.$alpha3.'{1})([0-9]{1}'.$alpha5.'{2})$'; >>>> $pcexp[2] = >>>> '^('.$alpha1.'{1}'.$alpha2.'[0-9]{1}'.$alpha4.')([0-9]{1}'.$alpha5.'{2})$'; >>>> >>>> $pcexp[3] = '^(gir)(0aa)$'; >>>> $pcexp[4] = '^(bfpo)([0-9]{1,4})$'; >>>> $pcexp[5] = '^(bfpo)(c\/o[0-9]{1,3})$'; >>>> >>>> $postcode = strtolower($toCheck); >>>> $postcode = str_replace (' ', '', $postcode); >>>> >>>> $valid = false; >>>> foreach ($pcexp as $regexp) { >>>> if (ereg($regexp,$postcode, $matches)) { >>>> $toCheck = strtoupper ($matches[1] . ' ' . $matches [2]); >>>> $toCheck = ereg_replace ('C\/O', 'c/o ', $toCheck); >>>> $valid = true; break; } } >>>> >>>> $postcode = strtoupper(str_replace(' ','',$postcode));if >>>> (!checkPostcode($postcode) ) { $error['postcode'] = "Invalid Post >>>> Code, please try again";} >>>> >>>> if ($valid){return true;} else {return false;};} >>>> >>>> Neišeina padaryti, kad įvestą pašto kodą įrašytu į DB. DB yra >>>> sukurta lentelė „users“ su laukais „email, pass, first_name, >>>> last_name, city, town, post_code, active, registration_date“. >>>> Pildant forma kitų formos laukų duomenis įrašo į DB nes pvz. formos >>>> lauką „Town“ tikrinu tokiu būdu: >>>> >>>> if (eregi ('[[:alpha:]]{2,30}$', stripslashes(trim($_POST['town'])))) { >>>> $tw = escape_data($_POST['town']); >>>> } else { >>>> $tw = FALSE; >>>> echo '<p><font color="red" size="+1">Please enter your >>>> town!</font></p>'; >>>> } >>>> Kintamąjį „$tw“ įrašau į užklausą: >>>> >>>> $query = "INSERT INTO users (email, pass, first_name, last_name, >>>> city, town, post_code, active, registration_date) VALUES ('$e', >>>> SHA('$p'), '$fn', '$ln', '$ct', '$tw', '$a', NOW() )"; >>>> >>>> Ir viskas ok. Patarkit, kaip padaryti taip pat, kad įrašytų ir >>>> „postcode“ lauko duomenis tokiu pat būdu? >>>> Dėkoju iš anksto. >>>> >>>> >>>> >>>> >>>> >>>> "fliks" <pasto@nera.dd> wrote in message >>>> news:h158mr$983$1@trimpas.omnitel.net... >>>>> Tame kodo gabaliuke tik parašiau, kaip galima būtų daryti formoj >>>>> įvestos post code reikšmės pradžios tikrinimą su db esančiomis >>>>> leidžiamomis post code pradžiomis, nes, kaip supratau, to ir klausei. >>>>> >>>>> Be abejo, dar prieš tikrinant su db, reiktų padaryti formoj įvesto >>>>> post code formato tikrinimą, pvz, su regexp paterna, nes gali būti, >>>>> kad į formą bus suvesta post code su teisinga pradžia (kuri yra >>>>> db), o po jos gali sekti bilekokios raidės ar skaičiai ir pan (pvz, >>>>> 'PO123abcs00'). >>>>> >>>>> O dėl to Array, tai lentoje į tą post_code buvo saugomas masyvas, >>>>> ne stringas. Greičiasiai php kode yra klaida. >>>>> >>>>> >>>>> Darius wrote: >>>>>> fliks: Bandau tavo koda, registracija atlieka, tik DB kur laukas >>>>>> "post_code" vietoj pasto kodo iraso "Array". Ir pildant forma gali >>>>>> rasyti bet ka, netikrina? Kame gali buti beda? >>>>>> >>>>>> >>>>>> >>>>>> "fliks" <pasto@nera.dd> wrote in message >>>>>> news:h0pad9$hq$1@trimpas.omnitel.net... >>>>>>> P.S. Čia jei naudojama MySQL. Analogiškai galima tą patį parašyti >>>>>>> ir kitokiai dbms. >>>>>>> >>>>>>> >>>>>>> fliks wrote: >>>>>>>> Kalbant apie DB, jei lenta yra post_code_tbl, o post code >>>>>>>> pradžios yra stulpelyje post_code_beg (VARCHAR tipo), galima >>>>>>>> būtų rašyti taip: >>>>>>>> >>>>>>>> >>>>>>>> $form_post_code = isset($_POST['post_code']) ? >>>>>>>> ltrim(rtrim($_POST['post_code'])) : ''; >>>>>>>> >>>>>>>> if($form_post_code != '') { >>>>>>>> >>>>>>>> $db_query = 'SELECT COUNT(post_code_beg) FROM post_code_tbl >>>>>>>> WHERE post_code_beg = SUBSTRING(\'' . >>>>>>>> mysql_real_escape_string($form_post_code, $link) . '\', 1, >>>>>>>> LENGTH(post_code_beg))'; >>>>>>>> >>>>>>>> $result = mysql_query($db_query); >>>>>>>> >>>>>>>> $row = mysql_fetch_row($result); >>>>>>>> >>>>>>>> if($row[0] == 0){ >>>>>>>> // formoje post code reikšmė neatitiko nė vienos post >>>>>>>> code pradžios >>>>>>>> } >>>>>>>> >>>>>>>> } else { >>>>>>>> >>>>>>>> echo 'Please enter post code!'; >>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> Reikia tikrinti, ar mysql_query() kažką (teisingai) grąžino ir >>>>>>>> pan. Surašiau tik bendrai, kaip galima būtų daryti tą code >>>>>>>> tikrinimą. >>>>>>>> >>>>>>>> >>>>>>>> Darius wrote: >>>>>>>>> Cia idejau kokiu principu tikrinu litus formos laukus. Gal >>>>>>>>> galetum konkreciau paaiskint kaip reiketu padaryti, kad >>>>>>>>> tikrintu Post code lauka?Sakykim duomenys jau yra suvesti i DB. >>>>>>>>> Buciau begalo dekingas. >>>>>>>>> >>>>>>>>> >>>>>>>>> "RobeNebijaka" <nebijau@spamo.lt> wrote in message >>>>>>>>> news:h0nfec$epq$1@trimpas.omnitel.net... >>>>>>>>>> Last name galima sutikrinti ir su regexpais, bet jei nori >>>>>>>>>> tikrinti su kažkokiais duomenimis tai regexp tau nepadės su >>>>>>>>>> regexp gali patikrinti nebent kad butu iš kelių raidžių ir >>>>>>>>>> kažkiek skaičių. >>>>>>>>>> >>>>>>>>>> "RobeNebijaka" <nebijau@spamo.lt> wrote in message >>>>>>>>>> news:h0nf6v$ej6$1@trimpas.omnitel.net... >>>>>>>>>>> Tai kaip ten yra ką nori tikrinti? Post Code ar Last Name? >>>>>>>>>>> >>>>>>>>>>> "Darius" <darzi@takas.lt> wrote in message >>>>>>>>>>> news:h0lnkk$9t$1@trimpas.omnitel.net... >>>>>>>>>>>> Laukui "Last name" naudoju toki tikrinima: >>>>>>>>>>>> >>>>>>>>>>>> // Check for a last name. >>>>>>>>>>>> if (eregi ('^[[:alpha:]\.\' \-]{2,30}$', >>>>>>>>>>>> stripslashes(trim($_POST['last_name'])))) { >>>>>>>>>>>> $ln = escape_data($_POST['last_name']); >>>>>>>>>>>> } else { >>>>>>>>>>>> $ln = FALSE; >>>>>>>>>>>> echo '<p><font color="red" size="+1">Please enter your last >>>>>>>>>>>> name!</font></p>'; >>>>>>>>>>>> } >>>>>>>>>>>> >>>>>>>>>>>> Sakykim sudejau kodus i DB, kokiu pavidalu reiketu uzduoti >>>>>>>>>>>> salyga? >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> "RobeNebijaka" <nebijau@spamo.lt> wrote in message >>>>>>>>>>>> news:h0ln7j$v92$1@trimpas.omnitel.net... >>>>>>>>>>>>> Nepapraščiau sudėt į db ir paskui vieno select'o klausimas >>>>>>>>>>>>> lieka? >>>>>>>>>>>>> >>>>>>>>>>>>> "Darius" <darzi@takas.lt> wrote in message >>>>>>>>>>>>> news:h0lmqq$ugj$1@trimpas.omnitel.net... >>>>>>>>>>>>>> Sveiki, >>>>>>>>>>>>>> >>>>>>>>>>>>>> Reikia Jusu pagalbos. Padariau registracijos forma, visi >>>>>>>>>>>>>> laukai tikrinami, kad butu uzpildyti. Patarkit kaip >>>>>>>>>>>>>> padaryti, kad tikrintu "Post code" lauka, kai "Post code" >>>>>>>>>>>>>> prasideda is keliu didziuju raidziu ir skaiciu, jie yra >>>>>>>>>>>>>> pastovus, nesikeicia. Visi sie kodai yra atskirame faile, >>>>>>>>>>>>>> txt pavidale. Kaip reiketu padaryti,kad zmogus iveda pasto >>>>>>>>>>>>>> coda, o sistema patikrina ar atitinka kodo pradzia esanti >>>>>>>>>>>>>> sarase? >>>>>>>>>>>>>> Dekoju is anksto. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> >>>>>>>>> >>>>>>> >>>>>> >>>> >>