Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Novi red u textarea, problem - baza ?

[es] :: PHP :: PHP za početnike :: Novi red u textarea, problem - baza ?

[ Pregleda: 2797 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

CiM0beTa

Član broj: 303979
Poruke: 194
193.107.4.*



+50 Profil

icon Novi red u textarea, problem - baza ?09.08.2012. u 19:29 - pre 141 meseci
Code (php):

// validacija description
function valid_description($description) {
     global $error;
     if (preg_match("/[^-a-z0-9šđč枊ĐČĆŽ.: _\/]/i", $description)) {
          $error[] = 'Opis može sadržati velika i mala slova srpske latinice i (brojeve . : _ - / prazna mesta).';   
     }
     if (strlen($description)<3 && strlen($description)>0) {
          $error[] = 'Opis mora sadržati više od 3 karaktera.';
     }
     if (strlen($description)>300) {
          $error[] = 'Previše karaktera.';
     }
}
 


uradio sam neku prostu validaciju za unos teksta , prazna mesta prolaze, kao i crtice, tačke, brojevi, kosa crta...ali kad u textarea kliknem enter za novi red, onda mi to ne prolazi validaciju.
E sad ja sam probao da iskljucim validaciju i da vidim šta će da zapiše , ali vidim i source strane ne sadrži nikakve karaktere, mislio sam da je to <br> ali nije, pogledao sam i bazu, samo stoje prazna polja, tj. redovi. O čemu se radi?
 
Odgovor na temu

PHPovac

Član broj: 300013
Poruke: 168
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: Novi red u textarea, problem - baza ?09.08.2012. u 19:31 - pre 141 meseci
Uradi nl2br na stringu.
 
Odgovor na temu

CiM0beTa

Član broj: 303979
Poruke: 194
193.107.4.*



+50 Profil

icon Re: Novi red u textarea, problem - baza ?09.08.2012. u 20:29 - pre 141 meseci
Code (php):

// validacija description
function valid_description($description) {
     global $error;
     $description = nl2br($description);
     if (preg_match("/[^-a-z0-9šđč枊ĐČĆŽ.: _\/]/i", $description)) {
          $error[] = 'Opis može sadržati velika i mala slova srpske latinice i (brojeve . : _ - / prazna mesta).';   
     }
     if (strlen($description)<3 && strlen($description)>0) {
          $error[] = 'Opis mora sadržati više od 3 karaktera.';
     }
     if (strlen($description)>300) {
          $error[] = 'Previše karaktera.';
     }
}
 


uradio sam ovo ali i dalje ne ispisuje ništa, tj, ne prolazi validaciju.
 
Odgovor na temu

PHPovac

Član broj: 300013
Poruke: 168
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: Novi red u textarea, problem - baza ?09.08.2012. u 20:31 - pre 141 meseci
Pa ukloni validaciju ili ubaci < i > kao i / i ostale html tagove
 
Odgovor na temu

CiM0beTa

Član broj: 303979
Poruke: 194
193.107.4.*



+50 Profil

icon Re: Novi red u textarea, problem - baza ?09.08.2012. u 20:36 - pre 141 meseci
ma ne zelim da mi ovaj tekst bude izvršan. evo probao sam i ima raznih varijanti, moze da se ubaci 300 <br> simbola i ode ceo dizajn. Jel moze na ovaj description da uradim samo htmlentities, pitam zato šro ima naših slova...ajde probaću.
 
Odgovor na temu

PHPovac

Član broj: 300013
Poruke: 168
*.dynamic.isp.telekom.rs.



+19 Profil

icon Re: Novi red u textarea, problem - baza ?09.08.2012. u 20:42 - pre 141 meseci
nl2br pretvara nove redove u <br/> kao što piše u dokumentaciji. Što se tiče htmlentities, ja mislim da ti ne znaš čemu to služi..
 
Odgovor na temu

CiM0beTa

Član broj: 303979
Poruke: 194
193.107.4.*



+50 Profil

icon Re: Novi red u textarea, problem - baza ?09.08.2012. u 20:54 - pre 141 meseci
videcu nl2br ako mi se bude uklopilo, moram malo da ga proucim,

inace sad sam uradio samo:

$_POST['description'] = htmlentities($_POST['description'], ENT_QUOTES, "UTF-8");
tako da sto napisem to i dobijem. mislim to mi više odgovara, za ovo polje

--------------

sad sam video pogresno sam upotrebio nl2br, na mestu gde ne treba..sad cu da proverim ponovo
 
Odgovor na temu

pajaja
Beograd

Administrator
Član broj: 41598
Poruke: 3430
2001:470:1f0b:1af2:78c5:cbe:..

Jabber: pajaja@elitesecurity.org
ICQ: 253317269


+144 Profil

icon Re: Novi red u textarea, problem - baza ?09.08.2012. u 22:37 - pre 141 meseci
Citat:
ma ne zelim da mi ovaj tekst bude izvršan.

Ako uradis ono sto sam ti vec bio napisao u drugoj temi nece ti biti izvrseno. Ne znam zasto komplikujes i sam sebi pravis probleme umesto da uradis na jednostavan nacin.

Sto se tice velikog broja razmaka, mozes regularnim izrazom da zamenis vise uzastopnih novih linija sa samo jednom.
xxx
mali mali mali kamičak...nebo plave boje.
In Memoriam: Madzone Zeka(15.09.2005-16.09.2005)
 
Odgovor na temu

Milos911
Serbia

Član broj: 219127
Poruke: 1230
77.243.22.*



+303 Profil

icon Re: Novi red u textarea, problem - baza ?09.08.2012. u 22:46 - pre 141 meseci
Za to cuvanje u bazi ne treba da radis nista osim html special chars, i mysql real escape string.
Za ispis na stranici koristis nl2br, a za edit u texarea ne koristis (novi redovi ce se sami pojaviti).

Prestani da trcis kao muva bez glave, i citaj objasnjenja funkcija i komentare ispod (da si radio to isto, znao bi da je napr koriscenje regular expressions-a u toj situaciji overkill)... Kad se vec trudis da naucis, potrudi se da razumes to sto radis, a ne da samo letimicno preletis preko problema i kazes "radi, naucio sam"...
 
Odgovor na temu

CiM0beTa

Član broj: 303979
Poruke: 194
193.107.4.*



+50 Profil

icon Re: Novi red u textarea, problem - baza ?10.08.2012. u 09:20 - pre 141 meseci
kazem da sam pokusao nl2br za editovanje a ne za prikazivanje, nisam shvatio.
 
Odgovor na temu

ivan.a
PHP developer

Član broj: 83976
Poruke: 403
*.dynamic.isp.telekom.rs.



+44 Profil

icon Re: Novi red u textarea, problem - baza ?11.08.2012. u 09:00 - pre 141 meseci
A zašto ne bi automatski uklonio prazne redove (npr. ukoliko ima više od 2)?

Jednostavan primer:
Code:
function custom_nl2br($str, $rep = "\n", $max = 2) {
$arr = explode($rep, $str);
$str = '';
$nls = 0;
    foreach($arr as $line) {
    $str .= $line;
    if (empty($line)) {
    $nls++;
    } else {
    $nls = 0;
           }
      if ($nls < $max) {
      $str .= $rep;
                       }
      }
return substr($str, 0, strlen($str) - strlen($rep));
}


Da bi shvatio kako funkcioniše prvo dobro pogledaj ovaj kod (mada je jednostavan).
Prvo se generiše niz ($arr) na osnovu praznih polja. U petlji se proverava da li postoji prazno polje. Ukoliko postoji brojač ($nls) se povećava za 1, u suprotnom se brojač resetuje na 0. Zatim se proverava da li je brojač veći od broja dozvoljenih praznih redova ($max) i ako nije stringu se dodaje taj red.

Korišćenje:
$text = custom_nl2br($text, "\n", 2);

prvi argument je string(tekst), drugi je znak za "razdvajanje" praznih polja (<br> ili <br /> ili \n), treći argument je ukupan broj dozovljenih praznih polja.
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};
 
Odgovor na temu

CiM0beTa

Član broj: 303979
Poruke: 194
193.107.4.*



+50 Profil

icon Re: Novi red u textarea, problem - baza ?11.08.2012. u 13:01 - pre 141 meseci
ovo je korisno. hvala :)
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Novi red u textarea, problem - baza ?11.08.2012. u 13:29 - pre 141 meseci
Ivane, ja bih to pre ovako rešio. Regularni izraz hvata od jednog do $max pojavljivanja preloma reda i zanemaruje ostale uzastopne. Na svakom uhvaćenom delu kroz callback prebacuje u <br />.

Code (php):

/**
 * Kao nl2br() ali zanemaruje više od $max uzastopnih preloma reda  
 */

function custom_nl2br($str, $max=2) {
   $needle = "(\r\n|\n\r|\n|\r)";
   $regexp = '/('.$needle.'{1,'.$max.'})'.$needle.'*/';
   return preg_replace_callback($regexp, function($match) {
      return nl2br($match[1]);
   }, $str);
}

// primer:
var_dump(custom_nl2br("Hello\nWorld\n\n\n\nSomething\n\nKeep."));
 


Kada bolje razmislim, bolje je prvo propustiti sve kroz nl2br(), a onda otkloniti duplirane <br />:
Code (php):

function custom_nl2br($str, $max=2) {
   $str = nl2br($str, true);
   $needle = '('.PHP_EOL.')';
   $regexp = '%('.$needle.'{1,'.$max.'})'.$needle.'*%';
   return preg_replace($regexp, '\1', $str);
}
 


Obe verzije za razliku od tvog primera gore rade i kada veb pregledač pošalje \r\n umesto \n kao oznaku preloma. nl2br() se isto tako ponaša. Trebalo bi i da je memorijski manje zahtevno jer ne prebacuje string u niz bez potrebe, mada bih rekao da je to već sitničarenje.

[Ovu poruku je menjao Goran Rakić dana 11.08.2012. u 16:20 GMT+1]
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

[es] :: PHP :: PHP za početnike :: Novi red u textarea, problem - baza ?

[ Pregleda: 2797 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.