[ Ivan Golubović @ 28.02.2012. 16:48 ] @
Imam neki problem koji mi je dosta čudan pa nisam siguran u čemu je stvar... Malo kombinacija PHP mySQL...
Rezime problema je da prilikom upisa u bazu dobijem npr ovo:52e280903436473232 umesto ovo:R‐46G22. Sve se obrađuje kroz par funkcija i radi super dok nema crtice u tekstu.
Code:
function ocisti($text) {
$text = strip_tags($text);
$trans = array('"' => """, "'" => "'"); 
$text = strtr($text, $trans); 
return $text; }

function text_index($text){
    $trazi = array(""", "&", "<", ">", " ", "@");
    $html_free = str_replace($trazi, "", $text);
    $trazi = array(" ", "/", "\\", "'", "\"", "-", "_", "&", ",", ";", ":", ".", "&");
    $rezultat = str_replace($trazi, "", $html_free);
    return $rezultat; }
Pokušavam da izvršim nešto ovako:
Code:
$osnova = $_POST["zahtev"]; // prosledim npr: R-46G22
$naziv2 = ocisti($osnova);
$naziv_p = text_index($naziv2);
echo $osnova." ".$naziv2." ".$naziv_p;
i kada ukucam u polje "osnova" dobijem ono što želim:R-46G22 R-46G22 R46G22, međutim kada to isto iskopiram iz nekog excel dokumenta dobijem R‐46G22 R‐46G22 R‐46G22, a unos polja $naziv2 u mySQL mi ubacuje 52e280903436473232, uz to ne radi ni funkcija koja je trebala da izbaci crticu iz $naziv_p.

Da li je neko imao sličnu situaciju?
[ Miroslav Ćurčić @ 28.02.2012. 20:04 ] @
Kojeg je tipa polje u bazi?
Kako unosiš u bazu, daj nam query ?
[ Ivan Golubović @ 28.02.2012. 23:05 ] @
Ništa posebno... Unosim oba polja... Rezultat vidim tako (52e280903436473232) u phpMyAdmin-u, dok SQLyog vidi onako kako ga vidi i PHP (R‐46G22 R‐46G22 R‐46G22).
Code:
$sql="INSERT INTO tabela
                    (naziv, naziv_p)
                    VALUES
                    ('".$naziv."','".$naziv_p.")";
                $q = mysqli_query($link,$sql); 
Polje je varchar(255), InnoDB, utf8_general_ci...
[ plus_minus @ 28.02.2012. 23:27 ] @
Citat:
Ivan Golubović: Ništa posebno... Unosim oba polja... Rezultat vidim tako (52e280903436473232) u phpMyAdmin-u, dok SQLyog vidi onako kako ga vidi i PHP (R‐46G22 R‐46G22 R‐46G22).
Code:
$sql="INSERT INTO tabela
(naziv, naziv_p)
VALUES
('".$naziv."','".$naziv_p.")";
$q = mysqli_query($link,$sql); 


Jesu li potrebni navodnici uopšte?

Probaj 'vako..

Code:


$sql="INSERT INTO tabela
(naziv, naziv_p)
VALUES
(' $naziv ',' $naziv_p ')";
$q = mysqli_query($link,$sql); 
[ Ivan Golubović @ 29.02.2012. 00:19 ] @
Nema to nikakve veze...
Ima neke veze sa encodingom ovog excel fajla iz koga kopiram podatke. Glavno je da me interesuje zašto se to dešava, kako bi izbegli moguće greške prilikom kasnije obrade podataka...

Kao što sam rekao kada unosim u form input polje podatke ja, PHP/mySQL odradi sve kako treba.
www.mojdaljinski.rs/sporni_fajl.zip - evo i dela tog excel fajla, a problem se javlja samo kod podataka koji imaju crticu...
[ pajaja @ 29.02.2012. 01:02 ] @
To sto vidis tako je heksadecimalna reprezentacija stringa. Problem zbog koga ti ne radi brisanje crtre (pa i ostalo) je sto ta crta u fajlu nije enkodovana sa 0x2b (ASCII, koju ti pretrazujes) vec kao utf-8 hypen od 3 bajta (0xe2 0x80 0x90). Ne znam da li jos ima takvih specijalnih karaktera ali moze i sa njima da ti se pojavi slican problem.
[ plus_minus @ 29.02.2012. 04:20 ] @
Ivane, ne znam hoće li ovo pomoći, ali, slične operacije vrši..

Ova funkcija prepravlja ime fajla (SCRIPT_FILENAME) tako što ostavlja samo naziv php fajla - bez ekstenzije i pretvara SVE karaktere unutar samog imena, koji nisu "donja" crtica između slova ili brojeva - u donju crticu.

:)

Probaj da je prepraviš malo i verovatno da ćeš dobiti to što ti treba i eventualno prevazići problem na koji ti je ukazao pajaja.

Code (php):


function just_lower_dash() {

          define('ScriptFileName',
          $_SERVER['SCRIPT_FILENAME']);
          $_arr_ch = explode('/', ScriptFileName);
          $___create = str_replace('/', '',
          substr($_arr_ch[count($_arr_ch) - 1], 0, -4));
         
          $_characters = array('!','#','$','%','&','\'','(',')',
          '+',',','-','.',';','=','@','[',']','^','`','{','}','~','"','*','/',':','<','>','?','\\','|');
         
          $friendlyname = str_replace($_characters, '_',
          preg_replace('/[^a-zA-Z0-9_ \-()\/%-&]/s', '', $___create));
          return $friendlyname;
     }
     
echo just_lower_dash();

 


Dakle, napravi jedan novi .php fajl u lokalu..

Nazovi ga "ja.sam.mnogo-bezobrazni---fajl" , npr..

Kopipejstuj ovo gore u taj fajl i na ekranu treba da dobiješ rezultat : "ja_sam_mnogo_bezobrazni___fajl"

Meni to gore služi za pravljenje "wild" fajlova za upis kasnije..
Radi prelepo.