[PHP] minimalna ilość znaków w formularzu

Witam

Korzystam z quick.cart w podstawowej wersji, Parę rzeczy już sobie pozmieniałem ale mam problem z jedną rzeczą. Z formularzem. oto fragment:

$lang[First_name]

[/code]

Nie da się tak, zastanów się jakby to miało działać. Maxlength po prostu ogranicza długość pola wyboru. Powiedzmy że dałbyś minimalną ilość znaków “10”. A przecież żeby wpisać 10 znaków musisz wpisać najpierw poprzednie 9, co nie byłoby możliwe.

Tutaj trzeba będzie dać kod w PHP, co nie przepuści pola o ilości znaków mniejszej niż powiedzmy 10 wyświetli stosowny komunikat po zajściu akcji “Submit”. W samym HTML tego nie zrobisz.

zawsze zostaje zaprogramować w JS funkcje onfocusout, ew. onsubmit.

Skoro kolega wszystko pisze w PHP, to i to chyba najlepiej będzie zrobić w PHP :slight_smile:

Kpc21: to że PHP będzie to validiował to chyba normalne, nie?

Ale bardziej lUser friendly jest gdy wiadomo czy mogę już kliknąć Wyślij czy jeszcze nie :wink:

A według mnie, podstawowa zasada głosi: nie ufaj użytkownikowi, więc najlepiej zrobić to po stronie serwera.

<?php

if(strlen(trim($_POST['sFirstName'})) > min)

{

OK

}

else

{

nie OK

}

?>

Nienawidzę JS, bo sporo osób ma go wyłączonego i potem co - albo by nie działała walidacja, albo by nie dało się wysłać

Nie spotykam się raczej z osobami, które mają go wyłączonego.

Może wiele osób ma nie tyle wyłączonego JS co go blokuje na wielu stronach. Osobiście blokuję prawie wszystko (dlatego widzę jak wiele stron nie działa bez JS - niestety…)

@troiP - PHP+JS lub tylko PHP, nigdy samo JS.

PHP+JS jest dobre ze względu na to że użytkownik widzi “na żywo” czego nie ma, co ma, co ma źle i podpowiedzi co ma być.

Minimalna ilość znaków możesz uzyskać poprzez dodanie do pola

kod JS

function sprawdz_dlugosc(id,min){

  var info_element = document.getElementById(id+'_info');

  if( document.getElementById(id).value.length<=min ){

    info_element.innerHTML='za krótki login';

  }

  else{

    info_element.innerHTML='ok';

  }

}

kod HTML

[/code]

I masz generalnie schemat zrobiony. Głowy nie daje że działa, mogą być potrzebne drobne poprawki.

@IcyMat - nie wiem w którym ty wieku żyjesz, ale weź JS raz włącz a już nigdy go nie wyłączysz. Przecież choćby to forum z tego korzysta oraz wiele innych stron. Na niektórych stronach masz wręcz zablokowane wejście jeśli nie masz JS, bo po nim jest weryfikowane czy jesteś spam-botem czy użytkownikiem.

Tak. JS do wstępnej, dynamicznej walidacji i pokazywania, czy ma za mało czy za dużo znaków. Ale nie może blokować wysłania! A potem PHP na sprawdzanie czy jest wszystko poprawnie i jakby ktoś miał blokadę JS, która by mu wcześniej sprawdziła

Oczywiście w sensie walidować wysyłany formularz, bo zablokować wysyłanie może, ale - jakby to nazwać - to blokada dla użytkownika żeby nie musiał czekać aż się przeładuje i sypnie błędami.

A piszę bo sprawdziłem mój kod i na pewno działa.

Nie powiedziałem, że ja mam wyłączonego JS całkowicie :wink:

Ja blokuję wykonywanie skryptów JS na wielu stronach ze względu na wkurzające reklamy (no chyba ze ty je lubisz). Tam gdzie to potrzebne JS mam odblokowanego (między innymi dla forum DP) :wink: i uwierz mi, że nie jestem jedynym takim użytkownikiem Internetu.

:slight_smile: No to pisz od razu tak, że masz AdBlocka włączonego lub czarną/białą listę stron z zablokowanym/odblokowanym JS. Ja czegoś takiego nie stosuje, bo a nóż wejdę na stronę i ujrzę coś ciekawego np. formularz:). Jedyne co wyłączam to włączam standardowego AdBlocka i Fklashblocka - to wystarcza.

troiP , możesz również użyć gotowych rozwiązań np http://www.phpclasses.org/browse/package/1061.html

dzięki za pomoc, udało mi się to skryptem wykonać z nowym formularzem.