Tema: Re: Gal galit kas padet
Autorius: Darius
Data: 2009-06-18 12:06:45
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.
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>
>