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.
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>